From 626e9c6436089b3e39280e8eb4430ebe6603064c Mon Sep 17 00:00:00 2001 From: Phelecks Date: Wed, 22 Jul 2026 23:34:35 +0200 Subject: [PATCH] Add build output for Solidity compiler version 0.8.26 --- README.md | 9 +- ...51db3322b46d171911ad73848093b6.output.json | 1 - ...b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee.json} | 10 ++- ...be4566d9a30d0f82f96c5a0d9ed7ee.output.json | 1 + .../TricksforBoosterNFT.json | 83 ++++++++++++++++++- .../TricksforBoosterStaking.json | 4 +- .../ReentrantERC721.sol/ReentrantERC721.json | 4 +- contracts/TricksforBoosterNFT.sol | 30 ++++++- docs/README.md | 4 +- docs/ai/agent-brief.md | 3 +- docs/ai/architecture-guardrails.md | 2 +- docs/ai/memory.md | 6 +- docs/ai/repository-context.md | 6 +- docs/ai/skills/opensea-compatibility-skill.md | 6 +- .../task-templates/solidity-task-template.md | 3 +- docs/backend-integration-contract.md | 14 ++++ docs/deployment.md | 3 +- docs/indexing-spec.md | 5 ++ docs/nft-collection-spec.md | 14 ++++ docs/opensea-readiness-checklist.md | 9 +- docs/security-review-2026-07-19.md | 15 ++++ .../PostDeploySanityChecker.cs | 1 + .../SmokeRunner.cs | 36 +++++++- .../Abis/TricksforBoosterNFTAbi.cs | 4 +- .../Functions/TricksforBoosterNFTFunctions.cs | 20 +++++ .../README.nuget.md | 18 ++++ .../Services/BoosterNFTService.cs | 14 ++++ test/TricksforBoosterNFT.test.ts | 55 +++++++++++- .../DevChainIntegrationTests.cs | 54 ++++++++++++ .../ContractDefinitionTests.cs | 46 ++++++++++ 30 files changed, 447 insertions(+), 33 deletions(-) delete mode 100644 artifacts/build-info/solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6.output.json rename artifacts/build-info/{solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6.json => solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee.json} (93%) create mode 100644 artifacts/build-info/solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee.output.json diff --git a/README.md b/README.md index 1ba69cf..c405323 100644 --- a/README.md +++ b/README.md @@ -23,12 +23,17 @@ Two independent Solidity contracts are deployed per chain: ### `TricksforBoosterNFT` -ERC-721 NFT collection (OpenZeppelin). OpenSea-compatible: supports `tokenURI`, `contractURI`, -and ERC-2981 royalties. Minting is role-gated (`MINTER_ROLE`), administration uses delayed +ERC-721 NFT collection (OpenZeppelin) with ERC-721 Enumerable support for `totalSupply`, +`tokenByIndex`, and `tokenOfOwnerByIndex` reads. OpenSea-compatible: supports `tokenURI`, +`contractURI`, and ERC-2981 royalties. Minting is role-gated (`MINTER_ROLE`), administration uses delayed `AccessControlDefaultAdminRules`, and minting can be paused by the default admin. The documented collection policy is 600 tokens across three game themes (Coin, Dice, Rock Paper Scissors) — a project specification constraint, not an on-chain enforced supply cap. +Enumeration follows current on-chain custody: while a token is staked it is enumerated under the +staking contract, not the original wallet. Frontends should combine wallet enumeration with +`getWalletStakedTokens(wallet)` when presenting both unstaked and staked Boosters. + ### `TricksforBoosterStaking` Custodial staking contract. Players transfer their Booster NFTs into this contract to stake them. diff --git a/artifacts/build-info/solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6.output.json b/artifacts/build-info/solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6.output.json deleted file mode 100644 index f742d94..0000000 --- a/artifacts/build-info/solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6.output.json +++ /dev/null @@ -1 +0,0 @@ -{"_format":"hh3-sol-build-info-output-1","id":"solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6","output":{"contracts":{"@openzeppelin/contracts/access/AccessControl.sol":{"AccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.","errors":{"AccessControlBadConfirmation()":[{"details":"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."}],"AccessControlUnauthorizedAccount(address,bytes32)":[{"details":"The `account` is missing a role."}]},"events":{"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4686ec784d75f95beaf2bf5b5f26e5f946d4c864aaee9c3c62bdc18381f5e017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26710ca191913f3c9df542079c4a6dcff02968e92d4f7357daefef9fbe72a19c\",\"dweb:/ipfs/QmanHbeWuBbVEqXySHa1zhm2rExjYpChDBubBaJNTCa2JB\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":26,"contract":"@openzeppelin/contracts/access/AccessControl.sol:AccessControl","label":"_roles","offset":0,"slot":"0","type":"t_mapping(t_bytes32,t_struct(RoleData)21_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_struct(RoleData)21_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct AccessControl.RoleData)","numberOfBytes":"32","value":"t_struct(RoleData)21_storage"},"t_struct(RoleData)21_storage":{"encoding":"inplace","label":"struct AccessControl.RoleData","members":[{"astId":18,"contract":"@openzeppelin/contracts/access/AccessControl.sol:AccessControl","label":"hasRole","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":20,"contract":"@openzeppelin/contracts/access/AccessControl.sol:AccessControl","label":"adminRole","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"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"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"External interface of AccessControl declared to support ERC-165 detection.","errors":{"AccessControlBadConfirmation()":[{"details":"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."}],"AccessControlUnauthorizedAccount(address,bytes32)":[{"details":"The `account` is missing a role."}]},"events":{"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the address provided by the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":387,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/Ownable2Step.sol":{"Ownable2Step":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. This extension of the {Ownable} contract includes a two-step mechanism to transfer ownership, where the new owner must call {acceptOwnership} in order to replace the old one. This can help prevent common mistakes, such as transfers of ownership to incorrect accounts, or to contracts that are unable to interact with the permission system. The initial owner is specified at deployment time in the constructor for `Ownable`. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"acceptOwnership()":"79ba5097","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. This extension of the {Ownable} contract includes a two-step mechanism to transfer ownership, where the new owner must call {acceptOwnership} in order to replace the old one. This can help prevent common mistakes, such as transfers of ownership to incorrect accounts, or to contracts that are unable to interact with the permission system. The initial owner is specified at deployment time in the constructor for `Ownable`. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable2Step.sol\":\"Ownable2Step\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":387,"contract":"@openzeppelin/contracts/access/Ownable2Step.sol:Ownable2Step","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":535,"contract":"@openzeppelin/contracts/access/Ownable2Step.sol:Ownable2Step","label":"_pendingOwner","offset":0,"slot":"1","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol":{"AccessControlDefaultAdminRules":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"uint48","name":"schedule","type":"uint48"}],"name":"AccessControlEnforcedDefaultAdminDelay","type":"error"},{"inputs":[],"name":"AccessControlEnforcedDefaultAdminRules","type":"error"},{"inputs":[{"internalType":"address","name":"defaultAdmin","type":"address"}],"name":"AccessControlInvalidDefaultAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"anonymous":false,"inputs":[],"name":"DefaultAdminDelayChangeCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint48","name":"newDelay","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"effectSchedule","type":"uint48"}],"name":"DefaultAdminDelayChangeScheduled","type":"event"},{"anonymous":false,"inputs":[],"name":"DefaultAdminTransferCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":false,"internalType":"uint48","name":"acceptSchedule","type":"uint48"}],"name":"DefaultAdminTransferScheduled","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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"beginDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"}],"name":"changeDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelayIncreaseWait","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdmin","outputs":[{"internalType":"address","name":"newAdmin","type":"address"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdminDelay","outputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rollbackDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Extension of {AccessControl} that allows specifying special rules to manage the `DEFAULT_ADMIN_ROLE` holder, which is a sensitive role with special permissions over other roles that may potentially have privileged rights in the system. If a specific role doesn't have an admin role assigned, the holder of the `DEFAULT_ADMIN_ROLE` will have the ability to grant it and revoke it. This contract implements the following risk mitigations on top of {AccessControl}: * Only one account holds the `DEFAULT_ADMIN_ROLE` since deployment until it's potentially renounced. * Enforces a 2-step process to transfer the `DEFAULT_ADMIN_ROLE` to another account. * Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted. * The delay can be changed by scheduling, see {changeDefaultAdminDelay}. * Role transfers must wait at least one block after scheduling before it can be accepted. * It is not possible to use another role to manage the `DEFAULT_ADMIN_ROLE`. Example usage: ```solidity contract MyToken is AccessControlDefaultAdminRules { constructor() AccessControlDefaultAdminRules( 3 days, msg.sender // Explicit initial `DEFAULT_ADMIN_ROLE` holder ) {} } ```","errors":{"AccessControlBadConfirmation()":[{"details":"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."}],"AccessControlEnforcedDefaultAdminDelay(uint48)":[{"details":"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled."}],"AccessControlEnforcedDefaultAdminRules()":[{"details":"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps."}],"AccessControlInvalidDefaultAdmin(address)":[{"details":"The new default admin is not a valid default admin."}],"AccessControlUnauthorizedAccount(address,bytes32)":[{"details":"The `account` is missing a role."}],"SafeCastOverflowedUintDowncast(uint8,uint256)":[{"details":"Value doesn't fit in a uint of `bits` size."}]},"events":{"DefaultAdminDelayChangeCanceled()":{"details":"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass."},"DefaultAdminDelayChangeScheduled(uint48,uint48)":{"details":"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed."},"DefaultAdminTransferCanceled()":{"details":"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule."},"DefaultAdminTransferScheduled(address,uint48)":{"details":"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes."},"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"acceptDefaultAdminTransfer()":{"details":"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed."},"beginDefaultAdminTransfer(address)":{"details":"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event."},"cancelDefaultAdminTransfer()":{"details":"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event."},"changeDefaultAdminDelay(uint48)":{"details":"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event."},"constructor":{"details":"Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address."},"defaultAdmin()":{"details":"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder."},"defaultAdminDelay()":{"details":"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}."},"defaultAdminDelayIncreaseWait()":{"details":"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds)."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"owner()":{"details":"Gets the address of the owner."},"pendingDefaultAdmin()":{"details":"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced."},"pendingDefaultAdminDelay()":{"details":"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule."},"renounceRole(bytes32,address)":{"details":"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role."},"revokeRole(bytes32,address)":{"details":"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"rollbackDefaultAdminDelay()":{"details":"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","acceptDefaultAdminTransfer()":"cefc1429","beginDefaultAdminTransfer(address)":"634e93da","cancelDefaultAdminTransfer()":"d602b9fd","changeDefaultAdminDelay(uint48)":"649a5ec7","defaultAdmin()":"84ef8ffc","defaultAdminDelay()":"cc8463c8","defaultAdminDelayIncreaseWait()":"022d63fb","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","owner()":"8da5cb5b","pendingDefaultAdmin()":"cf6eefb7","pendingDefaultAdminDelay()":"a1eda53c","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rollbackDefaultAdminDelay()":"0aa6220b","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"name\":\"AccessControlEnforcedDefaultAdminDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessControlEnforcedDefaultAdminRules\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"}],\"name\":\"AccessControlInvalidDefaultAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminDelayChangeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminDelayChangeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminTransferCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminTransferScheduled\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"beginDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"}],\"name\":\"changeDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelayIncreaseWait\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"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\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollbackDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {AccessControl} that allows specifying special rules to manage the `DEFAULT_ADMIN_ROLE` holder, which is a sensitive role with special permissions over other roles that may potentially have privileged rights in the system. If a specific role doesn't have an admin role assigned, the holder of the `DEFAULT_ADMIN_ROLE` will have the ability to grant it and revoke it. This contract implements the following risk mitigations on top of {AccessControl}: * Only one account holds the `DEFAULT_ADMIN_ROLE` since deployment until it's potentially renounced. * Enforces a 2-step process to transfer the `DEFAULT_ADMIN_ROLE` to another account. * Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted. * The delay can be changed by scheduling, see {changeDefaultAdminDelay}. * Role transfers must wait at least one block after scheduling before it can be accepted. * It is not possible to use another role to manage the `DEFAULT_ADMIN_ROLE`. Example usage: ```solidity contract MyToken is AccessControlDefaultAdminRules { constructor() AccessControlDefaultAdminRules( 3 days, msg.sender // Explicit initial `DEFAULT_ADMIN_ROLE` holder ) {} } ```\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlEnforcedDefaultAdminDelay(uint48)\":[{\"details\":\"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\"}],\"AccessControlEnforcedDefaultAdminRules()\":[{\"details\":\"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\"}],\"AccessControlInvalidDefaultAdmin(address)\":[{\"details\":\"The new default admin is not a valid default admin.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in a uint of `bits` size.\"}]},\"events\":{\"DefaultAdminDelayChangeCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\"},\"DefaultAdminDelayChangeScheduled(uint48,uint48)\":{\"details\":\"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed.\"},\"DefaultAdminTransferCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\"},\"DefaultAdminTransferScheduled(address,uint48)\":{\"details\":\"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"acceptDefaultAdminTransfer()\":{\"details\":\"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\"},\"beginDefaultAdminTransfer(address)\":{\"details\":\"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event.\"},\"cancelDefaultAdminTransfer()\":{\"details\":\"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event.\"},\"changeDefaultAdminDelay(uint48)\":{\"details\":\"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event.\"},\"constructor\":{\"details\":\"Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address.\"},\"defaultAdmin()\":{\"details\":\"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\"},\"defaultAdminDelay()\":{\"details\":\"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}.\"},\"defaultAdminDelayIncreaseWait()\":{\"details\":\"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"owner()\":{\"details\":\"Gets the address of the owner.\"},\"pendingDefaultAdmin()\":{\"details\":\"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\"},\"pendingDefaultAdminDelay()\":{\"details\":\"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule.\"},\"renounceRole(bytes32,address)\":{\"details\":\"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role.\"},\"revokeRole(bytes32,address)\":{\"details\":\"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"rollbackDefaultAdminDelay()\":{\"details\":\"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol\":\"AccessControlDefaultAdminRules\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4686ec784d75f95beaf2bf5b5f26e5f946d4c864aaee9c3c62bdc18381f5e017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26710ca191913f3c9df542079c4a6dcff02968e92d4f7357daefef9fbe72a19c\",\"dweb:/ipfs/QmanHbeWuBbVEqXySHa1zhm2rExjYpChDBubBaJNTCa2JB\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x5e57537d20a1706f81517842eb09b48a564d5cfc15131537bef76d9c8c100938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c08027cac4185cca5bd35924409cb91aaa43a3fd5629d80c65edbab7c4ee2671\",\"dweb:/ipfs/QmYEhwh5mQZ5NqCaqUm2qLJ1NLcRpwEz87MM7bzXrtCfvD\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x5d8c755a8bfec7cb44cff075c206d642478ebc10c780494bc540cf90f3f25771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a18c2615920ab40a406d658dc7d9f0df0447eddf7c689b29720243a623fea72e\",\"dweb:/ipfs/QmXqCRrcx9A5MhBojvSEsiGhqKDnJjfVaJuF7by3YsKWwf\"]},\"@openzeppelin/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":26,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_roles","offset":0,"slot":"0","type":"t_mapping(t_bytes32,t_struct(RoleData)21_storage)"},{"astId":636,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_pendingDefaultAdmin","offset":0,"slot":"1","type":"t_address"},{"astId":638,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_pendingDefaultAdminSchedule","offset":20,"slot":"1","type":"t_uint48"},{"astId":640,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_currentDelay","offset":26,"slot":"1","type":"t_uint48"},{"astId":642,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_currentDefaultAdmin","offset":0,"slot":"2","type":"t_address"},{"astId":644,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_pendingDelay","offset":20,"slot":"2","type":"t_uint48"},{"astId":646,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_pendingDelaySchedule","offset":26,"slot":"2","type":"t_uint48"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_struct(RoleData)21_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct AccessControl.RoleData)","numberOfBytes":"32","value":"t_struct(RoleData)21_storage"},"t_struct(RoleData)21_storage":{"encoding":"inplace","label":"struct AccessControl.RoleData","members":[{"astId":18,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"hasRole","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":20,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"adminRole","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_uint48":{"encoding":"inplace","label":"uint48","numberOfBytes":"6"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol":{"IAccessControlDefaultAdminRules":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"uint48","name":"schedule","type":"uint48"}],"name":"AccessControlEnforcedDefaultAdminDelay","type":"error"},{"inputs":[],"name":"AccessControlEnforcedDefaultAdminRules","type":"error"},{"inputs":[{"internalType":"address","name":"defaultAdmin","type":"address"}],"name":"AccessControlInvalidDefaultAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[],"name":"DefaultAdminDelayChangeCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint48","name":"newDelay","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"effectSchedule","type":"uint48"}],"name":"DefaultAdminDelayChangeScheduled","type":"event"},{"anonymous":false,"inputs":[],"name":"DefaultAdminTransferCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":false,"internalType":"uint48","name":"acceptSchedule","type":"uint48"}],"name":"DefaultAdminTransferScheduled","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"},{"inputs":[],"name":"acceptDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"beginDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"}],"name":"changeDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelayIncreaseWait","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"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":"pendingDefaultAdmin","outputs":[{"internalType":"address","name":"newAdmin","type":"address"},{"internalType":"uint48","name":"acceptSchedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdminDelay","outputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"},{"internalType":"uint48","name":"effectSchedule","type":"uint48"}],"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":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rollbackDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"External interface of AccessControlDefaultAdminRules declared to support ERC-165 detection.","errors":{"AccessControlBadConfirmation()":[{"details":"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."}],"AccessControlEnforcedDefaultAdminDelay(uint48)":[{"details":"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled."}],"AccessControlEnforcedDefaultAdminRules()":[{"details":"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps."}],"AccessControlInvalidDefaultAdmin(address)":[{"details":"The new default admin is not a valid default admin."}],"AccessControlUnauthorizedAccount(address,bytes32)":[{"details":"The `account` is missing a role."}]},"events":{"DefaultAdminDelayChangeCanceled()":{"details":"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass."},"DefaultAdminDelayChangeScheduled(uint48,uint48)":{"details":"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed."},"DefaultAdminTransferCanceled()":{"details":"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule."},"DefaultAdminTransferScheduled(address,uint48)":{"details":"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes."},"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"acceptDefaultAdminTransfer()":{"details":"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed."},"beginDefaultAdminTransfer(address)":{"details":"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event."},"cancelDefaultAdminTransfer()":{"details":"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event."},"changeDefaultAdminDelay(uint48)":{"details":"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event."},"defaultAdmin()":{"details":"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder."},"defaultAdminDelay()":{"details":"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}."},"defaultAdminDelayIncreaseWait()":{"details":"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds)."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"pendingDefaultAdmin()":{"details":"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced."},"pendingDefaultAdminDelay()":{"details":"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."},"rollbackDefaultAdminDelay()":{"details":"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"acceptDefaultAdminTransfer()":"cefc1429","beginDefaultAdminTransfer(address)":"634e93da","cancelDefaultAdminTransfer()":"d602b9fd","changeDefaultAdminDelay(uint48)":"649a5ec7","defaultAdmin()":"84ef8ffc","defaultAdminDelay()":"cc8463c8","defaultAdminDelayIncreaseWait()":"022d63fb","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","pendingDefaultAdmin()":"cf6eefb7","pendingDefaultAdminDelay()":"a1eda53c","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rollbackDefaultAdminDelay()":"0aa6220b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"name\":\"AccessControlEnforcedDefaultAdminDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessControlEnforcedDefaultAdminRules\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"}],\"name\":\"AccessControlInvalidDefaultAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminDelayChangeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminDelayChangeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminTransferCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminTransferScheduled\",\"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\"},{\"inputs\":[],\"name\":\"acceptDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"beginDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"}],\"name\":\"changeDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelayIncreaseWait\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"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\":\"pendingDefaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollbackDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControlDefaultAdminRules declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlEnforcedDefaultAdminDelay(uint48)\":[{\"details\":\"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\"}],\"AccessControlEnforcedDefaultAdminRules()\":[{\"details\":\"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\"}],\"AccessControlInvalidDefaultAdmin(address)\":[{\"details\":\"The new default admin is not a valid default admin.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"DefaultAdminDelayChangeCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\"},\"DefaultAdminDelayChangeScheduled(uint48,uint48)\":{\"details\":\"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed.\"},\"DefaultAdminTransferCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\"},\"DefaultAdminTransferScheduled(address,uint48)\":{\"details\":\"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"acceptDefaultAdminTransfer()\":{\"details\":\"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\"},\"beginDefaultAdminTransfer(address)\":{\"details\":\"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event.\"},\"cancelDefaultAdminTransfer()\":{\"details\":\"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event.\"},\"changeDefaultAdminDelay(uint48)\":{\"details\":\"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event.\"},\"defaultAdmin()\":{\"details\":\"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\"},\"defaultAdminDelay()\":{\"details\":\"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}.\"},\"defaultAdminDelayIncreaseWait()\":{\"details\":\"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"pendingDefaultAdmin()\":{\"details\":\"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\"},\"pendingDefaultAdminDelay()\":{\"details\":\"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"rollbackDefaultAdminDelay()\":{\"details\":\"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":\"IAccessControlDefaultAdminRules\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x5d8c755a8bfec7cb44cff075c206d642478ebc10c780494bc540cf90f3f25771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a18c2615920ab40a406d658dc7d9f0df0447eddf7c689b29720243a623fea72e\",\"dweb:/ipfs/QmXqCRrcx9A5MhBojvSEsiGhqKDnJjfVaJuF7by3YsKWwf\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC2981.sol":{"IERC2981":{"abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the NFT Royalty Standard. A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal support for royalty payments across all NFT marketplaces and ecosystem participants.","kind":"dev","methods":{"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"royaltyInfo(uint256,uint256)":"2a55205a","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the NFT Royalty Standard. A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal support for royalty payments across all NFT marketplaces and ecosystem participants.\",\"kind\":\"dev\",\"methods\":{\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC2981.sol\":\"IERC2981\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC2981.sol\":{\"keccak256\":\"0xafab0e6c71905303c47dd254168cb31efc91f0ae284cde609b0202f97f85469e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://824d05aec56eb82a2a3c28eece530dc0792d3a008b09d01444e57cf4aceb0445\",\"dweb:/ipfs/QmVvqmJ5UobuRU9Q4JMyXxBfzKs2cpjbWXMNpxX4binTX8\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC5313.sol":{"IERC5313":{"abi":[{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the Light Contract Ownership Standard. A standardized minimal interface required to identify an account that controls a contract","kind":"dev","methods":{"owner()":{"details":"Gets the address of the owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the Light Contract Ownership Standard. A standardized minimal interface required to identify an account that controls a contract\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Gets the address of the owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC5313.sol\":\"IERC5313\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"devdoc":{"details":"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.","errors":{"ERC1155InsufficientBalance(address,uint256,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC1155InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC1155InvalidArrayLength(uint256,uint256)":[{"details":"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.","params":{"idsLength":"Length of the array of token identifiers","valuesLength":"Length of the array of token amounts"}}],"ERC1155InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC1155InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC1155InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC1155MissingApprovalForAll(address,address)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","owner":"Address of the current owner of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC20Errors":{"abi":[{"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"}],"devdoc":{"details":"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"devdoc":{"details":"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf6bb0dc431a9c50e25756412ec14cfcd4dc61dd40b8dc0e1b58ec09fce6d5564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb87fef7e8ed754b8600cd5d42e4f23128059006368ffd19e4d50cc166471ee5\",\"dweb:/ipfs/Qmc1vy1cevKreGUsG7S79gyhNvDtPnNz9qG47eYVHmMKLs\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0xf46268c37522320bb2119a5a394bc5c739a95c0c574c8d08e8c643f4d06e5c76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://517e4b295f35b9947c72ad7379a6089439ece7bb6f4a2ea0a159da13046c039e\",\"dweb:/ipfs/QmZXzkSfLUbvujig3zVbpDHykpHhqLpvQtdiN3B5j4TA3u\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0xc7efbc23214ad7dced8bf2249460f4bda114d57f6a0079f84040654280f455bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f5bd44efca8c8c0d74439e7b808d1f9c4af1df78f91fef8e8bbca8104645435\",\"dweb:/ipfs/Qmb42XSd8MKsEitp42sZkSFGqDRigk6QgGXtiJyJqUZJJ6\"]},\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":1630,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":1632,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":1636,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":1640,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":1644,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":1650,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Required interface of an ERC-721 compliant contract.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC-721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for any contract that wants to support safeTransfers from ERC-721 asset contracts.","kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"title":"ERC-721 token receiver interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC-721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC-721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"See https://eips.ethereum.org/EIPS/eip-721","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0xf46268c37522320bb2119a5a394bc5c739a95c0c574c8d08e8c643f4d06e5c76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://517e4b295f35b9947c72ad7379a6089439ece7bb6f4a2ea0a159da13046c039e\",\"dweb:/ipfs/QmZXzkSfLUbvujig3zVbpDHykpHhqLpvQtdiN3B5j4TA3u\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol":{"ERC721Utils":{"abi":[],"devdoc":{"details":"Library that provides common ERC-721 utility functions. See https://eips.ethereum.org/EIPS/eip-721[ERC-721]. _Available since v5.1._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220966bc2cbbaf5743b0397836f0fc6bdd44da5f90ea2b42f34971515f5c9451bda64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 PUSH12 0xC2CBBAF5743B0397836F0FC6 0xBD 0xD4 0x4D 0xA5 0xF9 0xE LOG2 0xB4 0x2F CALLVALUE SWAP8 ISZERO ISZERO CREATE2 0xC9 GASLIMIT SHL 0xDA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"432:1490:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;432:1490:13;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220966bc2cbbaf5743b0397836f0fc6bdd44da5f90ea2b42f34971515f5c9451bda64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 PUSH12 0xC2CBBAF5743B0397836F0FC6 0xBD 0xD4 0x4D 0xA5 0xF9 0xE LOG2 0xB4 0x2F CALLVALUE SWAP8 ISZERO ISZERO CREATE2 0xC9 GASLIMIT SHL 0xDA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"432:1490:13:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library that provides common ERC-721 utility functions. See https://eips.ethereum.org/EIPS/eip-721[ERC-721]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":\"ERC721Utils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0xc7efbc23214ad7dced8bf2249460f4bda114d57f6a0079f84040654280f455bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f5bd44efca8c8c0d74439e7b808d1f9c4af1df78f91fef8e8bbca8104645435\",\"dweb:/ipfs/Qmb42XSd8MKsEitp42sZkSFGqDRigk6QgGXtiJyJqUZJJ6\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/common/ERC2981.sol":{"ERC2981":{"abi":[{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidDefaultRoyalty","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidDefaultRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidTokenRoyalty","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidTokenRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the fee is specified in basis points by default. IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the ERC. Marketplaces are expected to voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.","errors":{"ERC2981InvalidDefaultRoyalty(uint256,uint256)":[{"details":"The default royalty set is invalid (eg. (numerator / denominator) >= 1)."}],"ERC2981InvalidDefaultRoyaltyReceiver(address)":[{"details":"The default royalty receiver is invalid."}],"ERC2981InvalidTokenRoyalty(uint256,uint256,uint256)":[{"details":"The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1)."}],"ERC2981InvalidTokenRoyaltyReceiver(uint256,address)":[{"details":"The royalty receiver for `tokenId` is invalid."}]},"kind":"dev","methods":{"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"royaltyInfo(uint256,uint256)":"2a55205a","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"ERC2981InvalidDefaultRoyalty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC2981InvalidDefaultRoyaltyReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"ERC2981InvalidTokenRoyalty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC2981InvalidTokenRoyaltyReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the fee is specified in basis points by default. IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the ERC. Marketplaces are expected to voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.\",\"errors\":{\"ERC2981InvalidDefaultRoyalty(uint256,uint256)\":[{\"details\":\"The default royalty set is invalid (eg. (numerator / denominator) >= 1).\"}],\"ERC2981InvalidDefaultRoyaltyReceiver(address)\":[{\"details\":\"The default royalty receiver is invalid.\"}],\"ERC2981InvalidTokenRoyalty(uint256,uint256,uint256)\":[{\"details\":\"The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1).\"}],\"ERC2981InvalidTokenRoyaltyReceiver(uint256,address)\":[{\"details\":\"The royalty receiver for `tokenId` is invalid.\"}]},\"kind\":\"dev\",\"methods\":{\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/common/ERC2981.sol\":\"ERC2981\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC2981.sol\":{\"keccak256\":\"0xafab0e6c71905303c47dd254168cb31efc91f0ae284cde609b0202f97f85469e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://824d05aec56eb82a2a3c28eece530dc0792d3a008b09d01444e57cf4aceb0445\",\"dweb:/ipfs/QmVvqmJ5UobuRU9Q4JMyXxBfzKs2cpjbWXMNpxX4binTX8\"]},\"@openzeppelin/contracts/token/common/ERC2981.sol\":{\"keccak256\":\"0xa33062c6e0675a74a27b06a4ae4c6ad4d3b7219e27d9c146a4ac57295096d393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://777543d88013fdd0ee7f47ac619fb13a1993bb667675d8816fde024f73cfbf2d\",\"dweb:/ipfs/QmfDS9uL1XZ2oUe1PH8eRCRyu3Hf98cK8ksGf4Ww7kg5zv\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":2829,"contract":"@openzeppelin/contracts/token/common/ERC2981.sol:ERC2981","label":"_defaultRoyaltyInfo","offset":0,"slot":"0","type":"t_struct(RoyaltyInfo)2826_storage"},{"astId":2834,"contract":"@openzeppelin/contracts/token/common/ERC2981.sol:ERC2981","label":"_tokenRoyaltyInfo","offset":0,"slot":"1","type":"t_mapping(t_uint256,t_struct(RoyaltyInfo)2826_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_uint256,t_struct(RoyaltyInfo)2826_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct ERC2981.RoyaltyInfo)","numberOfBytes":"32","value":"t_struct(RoyaltyInfo)2826_storage"},"t_struct(RoyaltyInfo)2826_storage":{"encoding":"inplace","label":"struct ERC2981.RoyaltyInfo","members":[{"astId":2823,"contract":"@openzeppelin/contracts/token/common/ERC2981.sol:ERC2981","label":"receiver","offset":0,"slot":"0","type":"t_address"},{"astId":2825,"contract":"@openzeppelin/contracts/token/common/ERC2981.sol:ERC2981","label":"royaltyFraction","offset":20,"slot":"0","type":"t_uint96"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Bytes.sol":{"Bytes":{"abi":[],"devdoc":{"details":"Bytes operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220c67dd7fdc3183f2ccffbe8ba954eb31c5bcd56ebd252e7d4046f41097cc3af3c64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 PUSH30 0xD7FDC3183F2CCFFBE8BA954EB31C5BCD56EBD252E7D4046F41097CC3AF3C PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"198:14538:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;198:14538:15;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220c67dd7fdc3183f2ccffbe8ba954eb31c5bcd56ebd252e7d4046f41097cc3af3c64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 PUSH30 0xD7FDC3183F2CCFFBE8BA954EB31C5BCD56EBD252E7D4046F41097CC3AF3C PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"198:14538:15:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Bytes operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Bytes.sol\":\"Bytes\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Panic.sol":{"Panic":{"abi":[],"devdoc":{"details":"Helper library for emitting standardized panic codes. ```solidity contract Example { using Panic for uint256; // Use any of the declared internal constants function foo() { Panic.GENERIC.panic(); } // Alternatively function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._","kind":"dev","methods":{},"stateVariables":{"ARRAY_OUT_OF_BOUNDS":{"details":"array out of bounds access"},"ASSERT":{"details":"used by the assert() builtin"},"DIVISION_BY_ZERO":{"details":"division or modulo by zero"},"EMPTY_ARRAY_POP":{"details":"empty array pop"},"ENUM_CONVERSION_ERROR":{"details":"enum conversion error"},"GENERIC":{"details":"generic / unspecified error"},"INVALID_INTERNAL_FUNCTION":{"details":"calling invalid internal function"},"RESOURCE_ERROR":{"details":"resource error (too large allocation or too large array)"},"STORAGE_ENCODING_ERROR":{"details":"invalid encoding in storage"},"UNDER_OVERFLOW":{"details":"arithmetic underflow or overflow"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122022069ac55900f6a29e5e40067718af40945cfaad89cf3030f909da111e3e7caf64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 MOD SWAP11 0xC5 MSIZE STOP 0xF6 LOG2 SWAP15 MCOPY BLOCKHASH MOD PUSH24 0x18AF40945CFAAD89CF3030F909DA111E3E7CAF64736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"657:1315:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;657:1315:17;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122022069ac55900f6a29e5e40067718af40945cfaad89cf3030f909da111e3e7caf64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 MOD SWAP11 0xC5 MSIZE STOP 0xF6 LOG2 SWAP15 MCOPY BLOCKHASH MOD PUSH24 0x18AF40945CFAAD89CF3030F909DA111E3E7CAF64736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"657:1315:17:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example { using Panic for uint256; // Use any of the declared internal constants function foo() { Panic.GENERIC.panic(); } // Alternatively function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Pausable.sol":{"Pausable":{"abi":[{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.","errors":{"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}]},"events":{"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."}},"kind":"dev","methods":{"paused()":{"details":"Returns true if the contract is paused, and false otherwise."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"paused()":"5c975abb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":3968,"contract":"@openzeppelin/contracts/utils/Pausable.sol:Pausable","label":"_paused","offset":0,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"}],"devdoc":{"custom:stateless":"","details":"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. IMPORTANT: Deprecated. This storage-based reentrancy guard will be removed and replaced by the {ReentrancyGuardTransient} variant in v6.0.","errors":{"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"custom:stateless\":\"\",\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. IMPORTANT: Deprecated. This storage-based reentrancy guard will be removed and replaced by the {ReentrancyGuardTransient} variant in v6.0.\",\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99\",\"dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122042851c92114da71f299d79fe664afa2e562fd3083c15ae52111e85361434430d64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP DUP6 SHR SWAP3 GT 0x4D 0xA7 0x1F 0x29 SWAP14 PUSH26 0xFE664AFA2E562FD3083C15AE52111E85361434430D64736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1407:2774:20:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1407:2774:20;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122042851c92114da71f299d79fe664afa2e562fd3083c15ae52111e85361434430d64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP DUP6 SHR SWAP3 GT 0x4D 0xA7 0x1F 0x29 SWAP14 PUSH26 0xFE664AFA2E562FD3083C15AE52111E85361434430D64736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1407:2774:20:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"StringsInsufficientHexLength","type":"error"},{"inputs":[],"name":"StringsInvalidAddressFormat","type":"error"},{"inputs":[],"name":"StringsInvalidChar","type":"error"}],"devdoc":{"details":"String operations.","errors":{"StringsInsufficientHexLength(uint256,uint256)":[{"details":"The `value` string doesn't fit in the specified `length`."}],"StringsInvalidAddressFormat()":[{"details":"The string being parsed is not a properly formatted address."}],"StringsInvalidChar()":[{"details":"The string being parsed contains characters that are not in scope of the given base."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200a837edfa6e61bdbcebb2b67b2b1fdd0e5b329937f3bb67c3668d478cd08fe5664736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP DUP4 PUSH31 0xDFA6E61BDBCEBB2B67B2B1FDD0E5B329937F3BB67C3668D478CD08FE566473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"332:21205:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;332:21205:21;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200a837edfa6e61bdbcebb2b67b2b1fdd0e5b329937f3bb67c3668d478cd08fe5664736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP DUP4 PUSH31 0xDFA6E61BDBCEBB2B67B2B1FDD0E5B329937F3BB67C3668D478CD08FE566473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"332:21205:21:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidAddressFormat\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidChar\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}],\"StringsInvalidAddressFormat()\":[{\"details\":\"The string being parsed is not a properly formatted address.\"}],\"StringsInvalidChar()\":[{\"details\":\"The string being parsed contains characters that are not in scope of the given base.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200095ce9411f7a751e3f9528ec5bdec90e7cea7cb900fb4e4125b2e0e2122ec0e64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STOP SWAP6 0xCE SWAP5 GT 0xF7 0xA7 MLOAD 0xE3 0xF9 MSTORE DUP15 0xC5 0xBD 0xEC SWAP1 0xE7 0xCE 0xA7 0xCB SWAP1 0xF 0xB4 0xE4 SLT JUMPDEST 0x2E 0xE 0x21 0x22 0xEC 0xE PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"281:32382:24:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:32382:24;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200095ce9411f7a751e3f9528ec5bdec90e7cea7cb900fb4e4125b2e0e2122ec0e64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STOP SWAP6 0xCE SWAP5 GT 0xF7 0xA7 MLOAD 0xE3 0xF9 MSTORE DUP15 0xC5 0xBD 0xEC SWAP1 0xE7 0xCE 0xA7 0xCB SWAP1 0xF 0xB4 0xE4 SLT JUMPDEST 0x2E 0xE 0x21 0x22 0xEC 0xE PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"281:32382:24:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntDowncast","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"}],"devdoc":{"details":"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.","errors":{"SafeCastOverflowedIntDowncast(uint8,int256)":[{"details":"Value doesn't fit in an int of `bits` size."}],"SafeCastOverflowedIntToUint(int256)":[{"details":"An int value doesn't fit in a uint of `bits` size."}],"SafeCastOverflowedUintDowncast(uint8,uint256)":[{"details":"Value doesn't fit in a uint of `bits` size."}],"SafeCastOverflowedUintToInt(uint256)":[{"details":"A uint value doesn't fit in an int of `bits` size."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220193a94c9e4f48ade38f2470be071758de2d1c2dbc3913cea4639c62edce19eda64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT GASPRICE SWAP5 0xC9 0xE4 DELEGATECALL DUP11 0xDE CODESIZE CALLCODE SELFBALANCE SIGNEXTEND 0xE0 PUSH18 0x758DE2D1C2DBC3913CEA4639C62EDCE19EDA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"769:34170:25:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;769:34170:25;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220193a94c9e4f48ade38f2470be071758de2d1c2dbc3913cea4639c62edce19eda64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT GASPRICE SWAP5 0xC9 0xE4 DELEGATECALL DUP11 0xDE CODESIZE CALLCODE SELFBALANCE SIGNEXTEND 0xE0 PUSH18 0x758DE2D1C2DBC3913CEA4639C62EDCE19EDA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"769:34170:25:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in a uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in a uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"A uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204b83036d7498f4e22547db3b139d17c4ffcde45da093dbbced6e203959e8748464736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B DUP4 SUB PUSH14 0x7498F4E22547DB3B139D17C4FFCD 0xE4 TSTORE LOG0 SWAP4 0xDB 0xBC 0xED PUSH15 0x203959E8748464736F6C634300081A STOP CALLER ","sourceMap":"258:2354:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;258:2354:26;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204b83036d7498f4e22547db3b139d17c4ffcde45da093dbbced6e203959e8748464736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B DUP4 SUB PUSH14 0x7498F4E22547DB3B139D17C4FFCD 0xE4 TSTORE LOG0 SWAP4 0xDB 0xBC 0xED PUSH15 0x203959E8748464736F6C634300081A STOP CALLER ","sourceMap":"258:2354:26:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/TricksforBoosterNFT.sol":{"TricksforBoosterNFT":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"baseURI_","type":"string"},{"internalType":"string","name":"contractMetadataURI_","type":"string"},{"internalType":"address","name":"royaltyReceiver_","type":"address"},{"internalType":"uint96","name":"royaltyFeeBasisPoints_","type":"uint96"},{"internalType":"address","name":"initialAdmin_","type":"address"},{"internalType":"address","name":"initialMinter_","type":"address"},{"internalType":"uint48","name":"defaultAdminDelay_","type":"uint48"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"uint48","name":"schedule","type":"uint48"}],"name":"AccessControlEnforcedDefaultAdminDelay","type":"error"},{"inputs":[],"name":"AccessControlEnforcedDefaultAdminRules","type":"error"},{"inputs":[{"internalType":"address","name":"defaultAdmin","type":"address"}],"name":"AccessControlInvalidDefaultAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidDefaultRoyalty","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidDefaultRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidTokenRoyalty","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidTokenRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"previousURI","type":"string"},{"indexed":false,"internalType":"string","name":"newURI","type":"string"}],"name":"BaseURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"previousURI","type":"string"},{"indexed":false,"internalType":"string","name":"newURI","type":"string"}],"name":"ContractURIUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"DefaultAdminDelayChangeCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint48","name":"newDelay","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"effectSchedule","type":"uint48"}],"name":"DefaultAdminDelayChangeScheduled","type":"event"},{"anonymous":false,"inputs":[],"name":"DefaultAdminTransferCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":false,"internalType":"uint48","name":"acceptSchedule","type":"uint48"}],"name":"DefaultAdminTransferScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint96","name":"feeBasisPoints","type":"uint96"}],"name":"DefaultRoyaltyUpdated","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":true,"internalType":"uint256","name":"tokenId","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":"acceptDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"beginDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"}],"name":"changeDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelayIncreaseWait","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdmin","outputs":[{"internalType":"address","name":"newAdmin","type":"address"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdminDelay","outputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rollbackDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"contractMetadataURI_","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeBasisPoints","type":"uint96"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Does not include staking logic — staking is handled by TricksforBoosterStaking.","errors":{"AccessControlBadConfirmation()":[{"details":"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."}],"AccessControlEnforcedDefaultAdminDelay(uint48)":[{"details":"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled."}],"AccessControlEnforcedDefaultAdminRules()":[{"details":"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps."}],"AccessControlInvalidDefaultAdmin(address)":[{"details":"The new default admin is not a valid default admin."}],"AccessControlUnauthorizedAccount(address,bytes32)":[{"details":"The `account` is missing a role."}],"ERC2981InvalidDefaultRoyalty(uint256,uint256)":[{"details":"The default royalty set is invalid (eg. (numerator / denominator) >= 1)."}],"ERC2981InvalidDefaultRoyaltyReceiver(address)":[{"details":"The default royalty receiver is invalid."}],"ERC2981InvalidTokenRoyalty(uint256,uint256,uint256)":[{"details":"The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1)."}],"ERC2981InvalidTokenRoyaltyReceiver(uint256,address)":[{"details":"The royalty receiver for `tokenId` is invalid."}],"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}],"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}],"SafeCastOverflowedUintDowncast(uint8,uint256)":[{"details":"Value doesn't fit in a uint of `bits` size."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"DefaultAdminDelayChangeCanceled()":{"details":"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass."},"DefaultAdminDelayChangeScheduled(uint48,uint48)":{"details":"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed."},"DefaultAdminTransferCanceled()":{"details":"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule."},"DefaultAdminTransferScheduled(address,uint48)":{"details":"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes."},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."}},"kind":"dev","methods":{"acceptDefaultAdminTransfer()":{"details":"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed."},"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"beginDefaultAdminTransfer(address)":{"details":"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event."},"cancelDefaultAdminTransfer()":{"details":"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event."},"changeDefaultAdminDelay(uint48)":{"details":"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event."},"constructor":{"params":{"baseURI_":"Base URI for token metadata (appended with tokenId)","contractMetadataURI_":"URI for OpenSea collection-level metadata","defaultAdminDelay_":"Delay in seconds for default-admin transfers","initialAdmin_":"Initial default administrator","initialMinter_":"Initial account authorized to mint","name_":"ERC-721 collection name","royaltyFeeBasisPoints_":"Royalty fee in basis points (10 000 = 100%)","royaltyReceiver_":"Address that receives royalty payments","symbol_":"ERC-721 collection symbol"}},"defaultAdmin()":{"details":"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder."},"defaultAdminDelay()":{"details":"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}."},"defaultAdminDelayIncreaseWait()":{"details":"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds)."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"owner()":{"details":"Gets the address of the owner."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"pendingDefaultAdmin()":{"details":"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced."},"pendingDefaultAdminDelay()":{"details":"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule."},"renounceRole(bytes32,address)":{"details":"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role."},"revokeRole(bytes32,address)":{"details":"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"rollbackDefaultAdminDelay()":{"details":"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers."},"safeMint(address,uint256)":{"params":{"to":"Recipient address for the minted token.","tokenId":"Token ID to mint. Must not already exist."}},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"setBaseURI(string)":{"params":{"baseURI_":"New base URI string."}},"setContractURI(string)":{"params":{"contractMetadataURI_":"New collection metadata URI."}},"setRoyaltyInfo(address,uint96)":{"params":{"feeBasisPoints":"Royalty fee in basis points (10 000 = 100%).","receiver":"Address that receives royalty payments."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"title":"TricksforBoosterNFT","version":1},"evm":{"bytecode":{"functionDebugData":{"@_1667":{"entryPoint":null,"id":1667,"parameterSlots":2,"returnSlots":0},"@_679":{"entryPoint":null,"id":679,"parameterSlots":2,"returnSlots":0},"@_9536":{"entryPoint":null,"id":9536,"parameterSlots":9,"returnSlots":0},"@_feeDenominator_2957":{"entryPoint":null,"id":2957,"parameterSlots":0,"returnSlots":1},"@_grantRole_256":{"entryPoint":610,"id":256,"parameterSlots":2,"returnSlots":1},"@_grantRole_865":{"entryPoint":337,"id":865,"parameterSlots":2,"returnSlots":1},"@_msgSender_3889":{"entryPoint":null,"id":3889,"parameterSlots":0,"returnSlots":1},"@_setDefaultRoyalty_3003":{"entryPoint":448,"id":3003,"parameterSlots":2,"returnSlots":0},"@defaultAdmin_930":{"entryPoint":null,"id":930,"parameterSlots":0,"returnSlots":1},"@hasRole_80":{"entryPoint":null,"id":80,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":938,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":801,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint96t_addresst_addresst_uint48_fromMemory":{"entryPoint":1008,"id":null,"parameterSlots":2,"returnSlots":9},"abi_decode_uint48_fromMemory":{"entryPoint":987,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint96_fromMemory":{"entryPoint":965,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":1332,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":1408,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1276,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":781,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:5832:30","nodeType":"YulBlock","src":"0:5832:30","statements":[{"nativeSrc":"6:3:30","nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nativeSrc":"46:95:30","nodeType":"YulBlock","src":"46:95:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:30","nodeType":"YulLiteral","src":"63:1:30","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:30","nodeType":"YulLiteral","src":"70:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:30","nodeType":"YulLiteral","src":"75:10:30","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:30","nodeType":"YulIdentifier","src":"66:3:30"},"nativeSrc":"66:20:30","nodeType":"YulFunctionCall","src":"66:20:30"}],"functionName":{"name":"mstore","nativeSrc":"56:6:30","nodeType":"YulIdentifier","src":"56:6:30"},"nativeSrc":"56:31:30","nodeType":"YulFunctionCall","src":"56:31:30"},"nativeSrc":"56:31:30","nodeType":"YulExpressionStatement","src":"56:31:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:30","nodeType":"YulLiteral","src":"103:1:30","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:30","nodeType":"YulLiteral","src":"106:4:30","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:30","nodeType":"YulIdentifier","src":"96:6:30"},"nativeSrc":"96:15:30","nodeType":"YulFunctionCall","src":"96:15:30"},"nativeSrc":"96:15:30","nodeType":"YulExpressionStatement","src":"96:15:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:30","nodeType":"YulLiteral","src":"127:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:30","nodeType":"YulLiteral","src":"130:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:30","nodeType":"YulIdentifier","src":"120:6:30"},"nativeSrc":"120:15:30","nodeType":"YulFunctionCall","src":"120:15:30"},"nativeSrc":"120:15:30","nodeType":"YulExpressionStatement","src":"120:15:30"}]},"name":"panic_error_0x41","nativeSrc":"14:127:30","nodeType":"YulFunctionDefinition","src":"14:127:30"},{"body":{"nativeSrc":"210:659:30","nodeType":"YulBlock","src":"210:659:30","statements":[{"body":{"nativeSrc":"259:16:30","nodeType":"YulBlock","src":"259:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"268:1:30","nodeType":"YulLiteral","src":"268:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"271:1:30","nodeType":"YulLiteral","src":"271:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"261:6:30","nodeType":"YulIdentifier","src":"261:6:30"},"nativeSrc":"261:12:30","nodeType":"YulFunctionCall","src":"261:12:30"},"nativeSrc":"261:12:30","nodeType":"YulExpressionStatement","src":"261:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"238:6:30","nodeType":"YulIdentifier","src":"238:6:30"},{"kind":"number","nativeSrc":"246:4:30","nodeType":"YulLiteral","src":"246:4:30","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"234:3:30","nodeType":"YulIdentifier","src":"234:3:30"},"nativeSrc":"234:17:30","nodeType":"YulFunctionCall","src":"234:17:30"},{"name":"end","nativeSrc":"253:3:30","nodeType":"YulIdentifier","src":"253:3:30"}],"functionName":{"name":"slt","nativeSrc":"230:3:30","nodeType":"YulIdentifier","src":"230:3:30"},"nativeSrc":"230:27:30","nodeType":"YulFunctionCall","src":"230:27:30"}],"functionName":{"name":"iszero","nativeSrc":"223:6:30","nodeType":"YulIdentifier","src":"223:6:30"},"nativeSrc":"223:35:30","nodeType":"YulFunctionCall","src":"223:35:30"},"nativeSrc":"220:55:30","nodeType":"YulIf","src":"220:55:30"},{"nativeSrc":"284:27:30","nodeType":"YulVariableDeclaration","src":"284:27:30","value":{"arguments":[{"name":"offset","nativeSrc":"304:6:30","nodeType":"YulIdentifier","src":"304:6:30"}],"functionName":{"name":"mload","nativeSrc":"298:5:30","nodeType":"YulIdentifier","src":"298:5:30"},"nativeSrc":"298:13:30","nodeType":"YulFunctionCall","src":"298:13:30"},"variables":[{"name":"length","nativeSrc":"288:6:30","nodeType":"YulTypedName","src":"288:6:30","type":""}]},{"body":{"nativeSrc":"354:22:30","nodeType":"YulBlock","src":"354:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"356:16:30","nodeType":"YulIdentifier","src":"356:16:30"},"nativeSrc":"356:18:30","nodeType":"YulFunctionCall","src":"356:18:30"},"nativeSrc":"356:18:30","nodeType":"YulExpressionStatement","src":"356:18:30"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"326:6:30","nodeType":"YulIdentifier","src":"326:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"342:2:30","nodeType":"YulLiteral","src":"342:2:30","type":"","value":"64"},{"kind":"number","nativeSrc":"346:1:30","nodeType":"YulLiteral","src":"346:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"338:3:30","nodeType":"YulIdentifier","src":"338:3:30"},"nativeSrc":"338:10:30","nodeType":"YulFunctionCall","src":"338:10:30"},{"kind":"number","nativeSrc":"350:1:30","nodeType":"YulLiteral","src":"350:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"334:3:30","nodeType":"YulIdentifier","src":"334:3:30"},"nativeSrc":"334:18:30","nodeType":"YulFunctionCall","src":"334:18:30"}],"functionName":{"name":"gt","nativeSrc":"323:2:30","nodeType":"YulIdentifier","src":"323:2:30"},"nativeSrc":"323:30:30","nodeType":"YulFunctionCall","src":"323:30:30"},"nativeSrc":"320:56:30","nodeType":"YulIf","src":"320:56:30"},{"nativeSrc":"385:23:30","nodeType":"YulVariableDeclaration","src":"385:23:30","value":{"arguments":[{"kind":"number","nativeSrc":"405:2:30","nodeType":"YulLiteral","src":"405:2:30","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"399:5:30","nodeType":"YulIdentifier","src":"399:5:30"},"nativeSrc":"399:9:30","nodeType":"YulFunctionCall","src":"399:9:30"},"variables":[{"name":"memPtr","nativeSrc":"389:6:30","nodeType":"YulTypedName","src":"389:6:30","type":""}]},{"nativeSrc":"417:85:30","nodeType":"YulVariableDeclaration","src":"417:85:30","value":{"arguments":[{"name":"memPtr","nativeSrc":"439:6:30","nodeType":"YulIdentifier","src":"439:6:30"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"463:6:30","nodeType":"YulIdentifier","src":"463:6:30"},{"kind":"number","nativeSrc":"471:4:30","nodeType":"YulLiteral","src":"471:4:30","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"459:3:30","nodeType":"YulIdentifier","src":"459:3:30"},"nativeSrc":"459:17:30","nodeType":"YulFunctionCall","src":"459:17:30"},{"arguments":[{"kind":"number","nativeSrc":"482:2:30","nodeType":"YulLiteral","src":"482:2:30","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"478:3:30","nodeType":"YulIdentifier","src":"478:3:30"},"nativeSrc":"478:7:30","nodeType":"YulFunctionCall","src":"478:7:30"}],"functionName":{"name":"and","nativeSrc":"455:3:30","nodeType":"YulIdentifier","src":"455:3:30"},"nativeSrc":"455:31:30","nodeType":"YulFunctionCall","src":"455:31:30"},{"kind":"number","nativeSrc":"488:2:30","nodeType":"YulLiteral","src":"488:2:30","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"451:3:30","nodeType":"YulIdentifier","src":"451:3:30"},"nativeSrc":"451:40:30","nodeType":"YulFunctionCall","src":"451:40:30"},{"arguments":[{"kind":"number","nativeSrc":"497:2:30","nodeType":"YulLiteral","src":"497:2:30","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"493:3:30","nodeType":"YulIdentifier","src":"493:3:30"},"nativeSrc":"493:7:30","nodeType":"YulFunctionCall","src":"493:7:30"}],"functionName":{"name":"and","nativeSrc":"447:3:30","nodeType":"YulIdentifier","src":"447:3:30"},"nativeSrc":"447:54:30","nodeType":"YulFunctionCall","src":"447:54:30"}],"functionName":{"name":"add","nativeSrc":"435:3:30","nodeType":"YulIdentifier","src":"435:3:30"},"nativeSrc":"435:67:30","nodeType":"YulFunctionCall","src":"435:67:30"},"variables":[{"name":"newFreePtr","nativeSrc":"421:10:30","nodeType":"YulTypedName","src":"421:10:30","type":""}]},{"body":{"nativeSrc":"577:22:30","nodeType":"YulBlock","src":"577:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"579:16:30","nodeType":"YulIdentifier","src":"579:16:30"},"nativeSrc":"579:18:30","nodeType":"YulFunctionCall","src":"579:18:30"},"nativeSrc":"579:18:30","nodeType":"YulExpressionStatement","src":"579:18:30"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"520:10:30","nodeType":"YulIdentifier","src":"520:10:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"540:2:30","nodeType":"YulLiteral","src":"540:2:30","type":"","value":"64"},{"kind":"number","nativeSrc":"544:1:30","nodeType":"YulLiteral","src":"544:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"536:3:30","nodeType":"YulIdentifier","src":"536:3:30"},"nativeSrc":"536:10:30","nodeType":"YulFunctionCall","src":"536:10:30"},{"kind":"number","nativeSrc":"548:1:30","nodeType":"YulLiteral","src":"548:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"532:3:30","nodeType":"YulIdentifier","src":"532:3:30"},"nativeSrc":"532:18:30","nodeType":"YulFunctionCall","src":"532:18:30"}],"functionName":{"name":"gt","nativeSrc":"517:2:30","nodeType":"YulIdentifier","src":"517:2:30"},"nativeSrc":"517:34:30","nodeType":"YulFunctionCall","src":"517:34:30"},{"arguments":[{"name":"newFreePtr","nativeSrc":"556:10:30","nodeType":"YulIdentifier","src":"556:10:30"},{"name":"memPtr","nativeSrc":"568:6:30","nodeType":"YulIdentifier","src":"568:6:30"}],"functionName":{"name":"lt","nativeSrc":"553:2:30","nodeType":"YulIdentifier","src":"553:2:30"},"nativeSrc":"553:22:30","nodeType":"YulFunctionCall","src":"553:22:30"}],"functionName":{"name":"or","nativeSrc":"514:2:30","nodeType":"YulIdentifier","src":"514:2:30"},"nativeSrc":"514:62:30","nodeType":"YulFunctionCall","src":"514:62:30"},"nativeSrc":"511:88:30","nodeType":"YulIf","src":"511:88:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"615:2:30","nodeType":"YulLiteral","src":"615:2:30","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"619:10:30","nodeType":"YulIdentifier","src":"619:10:30"}],"functionName":{"name":"mstore","nativeSrc":"608:6:30","nodeType":"YulIdentifier","src":"608:6:30"},"nativeSrc":"608:22:30","nodeType":"YulFunctionCall","src":"608:22:30"},"nativeSrc":"608:22:30","nodeType":"YulExpressionStatement","src":"608:22:30"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"646:6:30","nodeType":"YulIdentifier","src":"646:6:30"},{"name":"length","nativeSrc":"654:6:30","nodeType":"YulIdentifier","src":"654:6:30"}],"functionName":{"name":"mstore","nativeSrc":"639:6:30","nodeType":"YulIdentifier","src":"639:6:30"},"nativeSrc":"639:22:30","nodeType":"YulFunctionCall","src":"639:22:30"},"nativeSrc":"639:22:30","nodeType":"YulExpressionStatement","src":"639:22:30"},{"body":{"nativeSrc":"713:16:30","nodeType":"YulBlock","src":"713:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"722:1:30","nodeType":"YulLiteral","src":"722:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"725:1:30","nodeType":"YulLiteral","src":"725:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"715:6:30","nodeType":"YulIdentifier","src":"715:6:30"},"nativeSrc":"715:12:30","nodeType":"YulFunctionCall","src":"715:12:30"},"nativeSrc":"715:12:30","nodeType":"YulExpressionStatement","src":"715:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"684:6:30","nodeType":"YulIdentifier","src":"684:6:30"},{"name":"length","nativeSrc":"692:6:30","nodeType":"YulIdentifier","src":"692:6:30"}],"functionName":{"name":"add","nativeSrc":"680:3:30","nodeType":"YulIdentifier","src":"680:3:30"},"nativeSrc":"680:19:30","nodeType":"YulFunctionCall","src":"680:19:30"},{"kind":"number","nativeSrc":"701:4:30","nodeType":"YulLiteral","src":"701:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"676:3:30","nodeType":"YulIdentifier","src":"676:3:30"},"nativeSrc":"676:30:30","nodeType":"YulFunctionCall","src":"676:30:30"},{"name":"end","nativeSrc":"708:3:30","nodeType":"YulIdentifier","src":"708:3:30"}],"functionName":{"name":"gt","nativeSrc":"673:2:30","nodeType":"YulIdentifier","src":"673:2:30"},"nativeSrc":"673:39:30","nodeType":"YulFunctionCall","src":"673:39:30"},"nativeSrc":"670:59:30","nodeType":"YulIf","src":"670:59:30"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"748:6:30","nodeType":"YulIdentifier","src":"748:6:30"},{"kind":"number","nativeSrc":"756:4:30","nodeType":"YulLiteral","src":"756:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"744:3:30","nodeType":"YulIdentifier","src":"744:3:30"},"nativeSrc":"744:17:30","nodeType":"YulFunctionCall","src":"744:17:30"},{"arguments":[{"name":"offset","nativeSrc":"767:6:30","nodeType":"YulIdentifier","src":"767:6:30"},{"kind":"number","nativeSrc":"775:4:30","nodeType":"YulLiteral","src":"775:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"763:3:30","nodeType":"YulIdentifier","src":"763:3:30"},"nativeSrc":"763:17:30","nodeType":"YulFunctionCall","src":"763:17:30"},{"name":"length","nativeSrc":"782:6:30","nodeType":"YulIdentifier","src":"782:6:30"}],"functionName":{"name":"mcopy","nativeSrc":"738:5:30","nodeType":"YulIdentifier","src":"738:5:30"},"nativeSrc":"738:51:30","nodeType":"YulFunctionCall","src":"738:51:30"},"nativeSrc":"738:51:30","nodeType":"YulExpressionStatement","src":"738:51:30"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"813:6:30","nodeType":"YulIdentifier","src":"813:6:30"},{"name":"length","nativeSrc":"821:6:30","nodeType":"YulIdentifier","src":"821:6:30"}],"functionName":{"name":"add","nativeSrc":"809:3:30","nodeType":"YulIdentifier","src":"809:3:30"},"nativeSrc":"809:19:30","nodeType":"YulFunctionCall","src":"809:19:30"},{"kind":"number","nativeSrc":"830:4:30","nodeType":"YulLiteral","src":"830:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"805:3:30","nodeType":"YulIdentifier","src":"805:3:30"},"nativeSrc":"805:30:30","nodeType":"YulFunctionCall","src":"805:30:30"},{"kind":"number","nativeSrc":"837:1:30","nodeType":"YulLiteral","src":"837:1:30","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"798:6:30","nodeType":"YulIdentifier","src":"798:6:30"},"nativeSrc":"798:41:30","nodeType":"YulFunctionCall","src":"798:41:30"},"nativeSrc":"798:41:30","nodeType":"YulExpressionStatement","src":"798:41:30"},{"nativeSrc":"848:15:30","nodeType":"YulAssignment","src":"848:15:30","value":{"name":"memPtr","nativeSrc":"857:6:30","nodeType":"YulIdentifier","src":"857:6:30"},"variableNames":[{"name":"array","nativeSrc":"848:5:30","nodeType":"YulIdentifier","src":"848:5:30"}]}]},"name":"abi_decode_string_fromMemory","nativeSrc":"146:723:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"184:6:30","nodeType":"YulTypedName","src":"184:6:30","type":""},{"name":"end","nativeSrc":"192:3:30","nodeType":"YulTypedName","src":"192:3:30","type":""}],"returnVariables":[{"name":"array","nativeSrc":"200:5:30","nodeType":"YulTypedName","src":"200:5:30","type":""}],"src":"146:723:30"},{"body":{"nativeSrc":"934:117:30","nodeType":"YulBlock","src":"934:117:30","statements":[{"nativeSrc":"944:22:30","nodeType":"YulAssignment","src":"944:22:30","value":{"arguments":[{"name":"offset","nativeSrc":"959:6:30","nodeType":"YulIdentifier","src":"959:6:30"}],"functionName":{"name":"mload","nativeSrc":"953:5:30","nodeType":"YulIdentifier","src":"953:5:30"},"nativeSrc":"953:13:30","nodeType":"YulFunctionCall","src":"953:13:30"},"variableNames":[{"name":"value","nativeSrc":"944:5:30","nodeType":"YulIdentifier","src":"944:5:30"}]},{"body":{"nativeSrc":"1029:16:30","nodeType":"YulBlock","src":"1029:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1038:1:30","nodeType":"YulLiteral","src":"1038:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1041:1:30","nodeType":"YulLiteral","src":"1041:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1031:6:30","nodeType":"YulIdentifier","src":"1031:6:30"},"nativeSrc":"1031:12:30","nodeType":"YulFunctionCall","src":"1031:12:30"},"nativeSrc":"1031:12:30","nodeType":"YulExpressionStatement","src":"1031:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"988:5:30","nodeType":"YulIdentifier","src":"988:5:30"},{"arguments":[{"name":"value","nativeSrc":"999:5:30","nodeType":"YulIdentifier","src":"999:5:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1014:3:30","nodeType":"YulLiteral","src":"1014:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"1019:1:30","nodeType":"YulLiteral","src":"1019:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1010:3:30","nodeType":"YulIdentifier","src":"1010:3:30"},"nativeSrc":"1010:11:30","nodeType":"YulFunctionCall","src":"1010:11:30"},{"kind":"number","nativeSrc":"1023:1:30","nodeType":"YulLiteral","src":"1023:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1006:3:30","nodeType":"YulIdentifier","src":"1006:3:30"},"nativeSrc":"1006:19:30","nodeType":"YulFunctionCall","src":"1006:19:30"}],"functionName":{"name":"and","nativeSrc":"995:3:30","nodeType":"YulIdentifier","src":"995:3:30"},"nativeSrc":"995:31:30","nodeType":"YulFunctionCall","src":"995:31:30"}],"functionName":{"name":"eq","nativeSrc":"985:2:30","nodeType":"YulIdentifier","src":"985:2:30"},"nativeSrc":"985:42:30","nodeType":"YulFunctionCall","src":"985:42:30"}],"functionName":{"name":"iszero","nativeSrc":"978:6:30","nodeType":"YulIdentifier","src":"978:6:30"},"nativeSrc":"978:50:30","nodeType":"YulFunctionCall","src":"978:50:30"},"nativeSrc":"975:70:30","nodeType":"YulIf","src":"975:70:30"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"874:177:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"913:6:30","nodeType":"YulTypedName","src":"913:6:30","type":""}],"returnVariables":[{"name":"value","nativeSrc":"924:5:30","nodeType":"YulTypedName","src":"924:5:30","type":""}],"src":"874:177:30"},{"body":{"nativeSrc":"1115:116:30","nodeType":"YulBlock","src":"1115:116:30","statements":[{"nativeSrc":"1125:22:30","nodeType":"YulAssignment","src":"1125:22:30","value":{"arguments":[{"name":"offset","nativeSrc":"1140:6:30","nodeType":"YulIdentifier","src":"1140:6:30"}],"functionName":{"name":"mload","nativeSrc":"1134:5:30","nodeType":"YulIdentifier","src":"1134:5:30"},"nativeSrc":"1134:13:30","nodeType":"YulFunctionCall","src":"1134:13:30"},"variableNames":[{"name":"value","nativeSrc":"1125:5:30","nodeType":"YulIdentifier","src":"1125:5:30"}]},{"body":{"nativeSrc":"1209:16:30","nodeType":"YulBlock","src":"1209:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1218:1:30","nodeType":"YulLiteral","src":"1218:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1221:1:30","nodeType":"YulLiteral","src":"1221:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1211:6:30","nodeType":"YulIdentifier","src":"1211:6:30"},"nativeSrc":"1211:12:30","nodeType":"YulFunctionCall","src":"1211:12:30"},"nativeSrc":"1211:12:30","nodeType":"YulExpressionStatement","src":"1211:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1169:5:30","nodeType":"YulIdentifier","src":"1169:5:30"},{"arguments":[{"name":"value","nativeSrc":"1180:5:30","nodeType":"YulIdentifier","src":"1180:5:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1195:2:30","nodeType":"YulLiteral","src":"1195:2:30","type":"","value":"96"},{"kind":"number","nativeSrc":"1199:1:30","nodeType":"YulLiteral","src":"1199:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1191:3:30","nodeType":"YulIdentifier","src":"1191:3:30"},"nativeSrc":"1191:10:30","nodeType":"YulFunctionCall","src":"1191:10:30"},{"kind":"number","nativeSrc":"1203:1:30","nodeType":"YulLiteral","src":"1203:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1187:3:30","nodeType":"YulIdentifier","src":"1187:3:30"},"nativeSrc":"1187:18:30","nodeType":"YulFunctionCall","src":"1187:18:30"}],"functionName":{"name":"and","nativeSrc":"1176:3:30","nodeType":"YulIdentifier","src":"1176:3:30"},"nativeSrc":"1176:30:30","nodeType":"YulFunctionCall","src":"1176:30:30"}],"functionName":{"name":"eq","nativeSrc":"1166:2:30","nodeType":"YulIdentifier","src":"1166:2:30"},"nativeSrc":"1166:41:30","nodeType":"YulFunctionCall","src":"1166:41:30"}],"functionName":{"name":"iszero","nativeSrc":"1159:6:30","nodeType":"YulIdentifier","src":"1159:6:30"},"nativeSrc":"1159:49:30","nodeType":"YulFunctionCall","src":"1159:49:30"},"nativeSrc":"1156:69:30","nodeType":"YulIf","src":"1156:69:30"}]},"name":"abi_decode_uint96_fromMemory","nativeSrc":"1056:175:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1094:6:30","nodeType":"YulTypedName","src":"1094:6:30","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1105:5:30","nodeType":"YulTypedName","src":"1105:5:30","type":""}],"src":"1056:175:30"},{"body":{"nativeSrc":"1295:112:30","nodeType":"YulBlock","src":"1295:112:30","statements":[{"nativeSrc":"1305:22:30","nodeType":"YulAssignment","src":"1305:22:30","value":{"arguments":[{"name":"offset","nativeSrc":"1320:6:30","nodeType":"YulIdentifier","src":"1320:6:30"}],"functionName":{"name":"mload","nativeSrc":"1314:5:30","nodeType":"YulIdentifier","src":"1314:5:30"},"nativeSrc":"1314:13:30","nodeType":"YulFunctionCall","src":"1314:13:30"},"variableNames":[{"name":"value","nativeSrc":"1305:5:30","nodeType":"YulIdentifier","src":"1305:5:30"}]},{"body":{"nativeSrc":"1385:16:30","nodeType":"YulBlock","src":"1385:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1394:1:30","nodeType":"YulLiteral","src":"1394:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1397:1:30","nodeType":"YulLiteral","src":"1397:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1387:6:30","nodeType":"YulIdentifier","src":"1387:6:30"},"nativeSrc":"1387:12:30","nodeType":"YulFunctionCall","src":"1387:12:30"},"nativeSrc":"1387:12:30","nodeType":"YulExpressionStatement","src":"1387:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1349:5:30","nodeType":"YulIdentifier","src":"1349:5:30"},{"arguments":[{"name":"value","nativeSrc":"1360:5:30","nodeType":"YulIdentifier","src":"1360:5:30"},{"kind":"number","nativeSrc":"1367:14:30","nodeType":"YulLiteral","src":"1367:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1356:3:30","nodeType":"YulIdentifier","src":"1356:3:30"},"nativeSrc":"1356:26:30","nodeType":"YulFunctionCall","src":"1356:26:30"}],"functionName":{"name":"eq","nativeSrc":"1346:2:30","nodeType":"YulIdentifier","src":"1346:2:30"},"nativeSrc":"1346:37:30","nodeType":"YulFunctionCall","src":"1346:37:30"}],"functionName":{"name":"iszero","nativeSrc":"1339:6:30","nodeType":"YulIdentifier","src":"1339:6:30"},"nativeSrc":"1339:45:30","nodeType":"YulFunctionCall","src":"1339:45:30"},"nativeSrc":"1336:65:30","nodeType":"YulIf","src":"1336:65:30"}]},"name":"abi_decode_uint48_fromMemory","nativeSrc":"1236:171:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1274:6:30","nodeType":"YulTypedName","src":"1274:6:30","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1285:5:30","nodeType":"YulTypedName","src":"1285:5:30","type":""}],"src":"1236:171:30"},{"body":{"nativeSrc":"1667:1169:30","nodeType":"YulBlock","src":"1667:1169:30","statements":[{"body":{"nativeSrc":"1714:16:30","nodeType":"YulBlock","src":"1714:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1723:1:30","nodeType":"YulLiteral","src":"1723:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1726:1:30","nodeType":"YulLiteral","src":"1726:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1716:6:30","nodeType":"YulIdentifier","src":"1716:6:30"},"nativeSrc":"1716:12:30","nodeType":"YulFunctionCall","src":"1716:12:30"},"nativeSrc":"1716:12:30","nodeType":"YulExpressionStatement","src":"1716:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1688:7:30","nodeType":"YulIdentifier","src":"1688:7:30"},{"name":"headStart","nativeSrc":"1697:9:30","nodeType":"YulIdentifier","src":"1697:9:30"}],"functionName":{"name":"sub","nativeSrc":"1684:3:30","nodeType":"YulIdentifier","src":"1684:3:30"},"nativeSrc":"1684:23:30","nodeType":"YulFunctionCall","src":"1684:23:30"},{"kind":"number","nativeSrc":"1709:3:30","nodeType":"YulLiteral","src":"1709:3:30","type":"","value":"288"}],"functionName":{"name":"slt","nativeSrc":"1680:3:30","nodeType":"YulIdentifier","src":"1680:3:30"},"nativeSrc":"1680:33:30","nodeType":"YulFunctionCall","src":"1680:33:30"},"nativeSrc":"1677:53:30","nodeType":"YulIf","src":"1677:53:30"},{"nativeSrc":"1739:30:30","nodeType":"YulVariableDeclaration","src":"1739:30:30","value":{"arguments":[{"name":"headStart","nativeSrc":"1759:9:30","nodeType":"YulIdentifier","src":"1759:9:30"}],"functionName":{"name":"mload","nativeSrc":"1753:5:30","nodeType":"YulIdentifier","src":"1753:5:30"},"nativeSrc":"1753:16:30","nodeType":"YulFunctionCall","src":"1753:16:30"},"variables":[{"name":"offset","nativeSrc":"1743:6:30","nodeType":"YulTypedName","src":"1743:6:30","type":""}]},{"body":{"nativeSrc":"1812:16:30","nodeType":"YulBlock","src":"1812:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1821:1:30","nodeType":"YulLiteral","src":"1821:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1824:1:30","nodeType":"YulLiteral","src":"1824:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1814:6:30","nodeType":"YulIdentifier","src":"1814:6:30"},"nativeSrc":"1814:12:30","nodeType":"YulFunctionCall","src":"1814:12:30"},"nativeSrc":"1814:12:30","nodeType":"YulExpressionStatement","src":"1814:12:30"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1784:6:30","nodeType":"YulIdentifier","src":"1784:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1800:2:30","nodeType":"YulLiteral","src":"1800:2:30","type":"","value":"64"},{"kind":"number","nativeSrc":"1804:1:30","nodeType":"YulLiteral","src":"1804:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1796:3:30","nodeType":"YulIdentifier","src":"1796:3:30"},"nativeSrc":"1796:10:30","nodeType":"YulFunctionCall","src":"1796:10:30"},{"kind":"number","nativeSrc":"1808:1:30","nodeType":"YulLiteral","src":"1808:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1792:3:30","nodeType":"YulIdentifier","src":"1792:3:30"},"nativeSrc":"1792:18:30","nodeType":"YulFunctionCall","src":"1792:18:30"}],"functionName":{"name":"gt","nativeSrc":"1781:2:30","nodeType":"YulIdentifier","src":"1781:2:30"},"nativeSrc":"1781:30:30","nodeType":"YulFunctionCall","src":"1781:30:30"},"nativeSrc":"1778:50:30","nodeType":"YulIf","src":"1778:50:30"},{"nativeSrc":"1837:71:30","nodeType":"YulAssignment","src":"1837:71:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1880:9:30","nodeType":"YulIdentifier","src":"1880:9:30"},{"name":"offset","nativeSrc":"1891:6:30","nodeType":"YulIdentifier","src":"1891:6:30"}],"functionName":{"name":"add","nativeSrc":"1876:3:30","nodeType":"YulIdentifier","src":"1876:3:30"},"nativeSrc":"1876:22:30","nodeType":"YulFunctionCall","src":"1876:22:30"},{"name":"dataEnd","nativeSrc":"1900:7:30","nodeType":"YulIdentifier","src":"1900:7:30"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1847:28:30","nodeType":"YulIdentifier","src":"1847:28:30"},"nativeSrc":"1847:61:30","nodeType":"YulFunctionCall","src":"1847:61:30"},"variableNames":[{"name":"value0","nativeSrc":"1837:6:30","nodeType":"YulIdentifier","src":"1837:6:30"}]},{"nativeSrc":"1917:41:30","nodeType":"YulVariableDeclaration","src":"1917:41:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1943:9:30","nodeType":"YulIdentifier","src":"1943:9:30"},{"kind":"number","nativeSrc":"1954:2:30","nodeType":"YulLiteral","src":"1954:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1939:3:30","nodeType":"YulIdentifier","src":"1939:3:30"},"nativeSrc":"1939:18:30","nodeType":"YulFunctionCall","src":"1939:18:30"}],"functionName":{"name":"mload","nativeSrc":"1933:5:30","nodeType":"YulIdentifier","src":"1933:5:30"},"nativeSrc":"1933:25:30","nodeType":"YulFunctionCall","src":"1933:25:30"},"variables":[{"name":"offset_1","nativeSrc":"1921:8:30","nodeType":"YulTypedName","src":"1921:8:30","type":""}]},{"body":{"nativeSrc":"2003:16:30","nodeType":"YulBlock","src":"2003:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2012:1:30","nodeType":"YulLiteral","src":"2012:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"2015:1:30","nodeType":"YulLiteral","src":"2015:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2005:6:30","nodeType":"YulIdentifier","src":"2005:6:30"},"nativeSrc":"2005:12:30","nodeType":"YulFunctionCall","src":"2005:12:30"},"nativeSrc":"2005:12:30","nodeType":"YulExpressionStatement","src":"2005:12:30"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"1973:8:30","nodeType":"YulIdentifier","src":"1973:8:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1991:2:30","nodeType":"YulLiteral","src":"1991:2:30","type":"","value":"64"},{"kind":"number","nativeSrc":"1995:1:30","nodeType":"YulLiteral","src":"1995:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1987:3:30","nodeType":"YulIdentifier","src":"1987:3:30"},"nativeSrc":"1987:10:30","nodeType":"YulFunctionCall","src":"1987:10:30"},{"kind":"number","nativeSrc":"1999:1:30","nodeType":"YulLiteral","src":"1999:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1983:3:30","nodeType":"YulIdentifier","src":"1983:3:30"},"nativeSrc":"1983:18:30","nodeType":"YulFunctionCall","src":"1983:18:30"}],"functionName":{"name":"gt","nativeSrc":"1970:2:30","nodeType":"YulIdentifier","src":"1970:2:30"},"nativeSrc":"1970:32:30","nodeType":"YulFunctionCall","src":"1970:32:30"},"nativeSrc":"1967:52:30","nodeType":"YulIf","src":"1967:52:30"},{"nativeSrc":"2028:73:30","nodeType":"YulAssignment","src":"2028:73:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2071:9:30","nodeType":"YulIdentifier","src":"2071:9:30"},{"name":"offset_1","nativeSrc":"2082:8:30","nodeType":"YulIdentifier","src":"2082:8:30"}],"functionName":{"name":"add","nativeSrc":"2067:3:30","nodeType":"YulIdentifier","src":"2067:3:30"},"nativeSrc":"2067:24:30","nodeType":"YulFunctionCall","src":"2067:24:30"},{"name":"dataEnd","nativeSrc":"2093:7:30","nodeType":"YulIdentifier","src":"2093:7:30"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"2038:28:30","nodeType":"YulIdentifier","src":"2038:28:30"},"nativeSrc":"2038:63:30","nodeType":"YulFunctionCall","src":"2038:63:30"},"variableNames":[{"name":"value1","nativeSrc":"2028:6:30","nodeType":"YulIdentifier","src":"2028:6:30"}]},{"nativeSrc":"2110:41:30","nodeType":"YulVariableDeclaration","src":"2110:41:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2136:9:30","nodeType":"YulIdentifier","src":"2136:9:30"},{"kind":"number","nativeSrc":"2147:2:30","nodeType":"YulLiteral","src":"2147:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2132:3:30","nodeType":"YulIdentifier","src":"2132:3:30"},"nativeSrc":"2132:18:30","nodeType":"YulFunctionCall","src":"2132:18:30"}],"functionName":{"name":"mload","nativeSrc":"2126:5:30","nodeType":"YulIdentifier","src":"2126:5:30"},"nativeSrc":"2126:25:30","nodeType":"YulFunctionCall","src":"2126:25:30"},"variables":[{"name":"offset_2","nativeSrc":"2114:8:30","nodeType":"YulTypedName","src":"2114:8:30","type":""}]},{"body":{"nativeSrc":"2196:16:30","nodeType":"YulBlock","src":"2196:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2205:1:30","nodeType":"YulLiteral","src":"2205:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"2208:1:30","nodeType":"YulLiteral","src":"2208:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2198:6:30","nodeType":"YulIdentifier","src":"2198:6:30"},"nativeSrc":"2198:12:30","nodeType":"YulFunctionCall","src":"2198:12:30"},"nativeSrc":"2198:12:30","nodeType":"YulExpressionStatement","src":"2198:12:30"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"2166:8:30","nodeType":"YulIdentifier","src":"2166:8:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2184:2:30","nodeType":"YulLiteral","src":"2184:2:30","type":"","value":"64"},{"kind":"number","nativeSrc":"2188:1:30","nodeType":"YulLiteral","src":"2188:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2180:3:30","nodeType":"YulIdentifier","src":"2180:3:30"},"nativeSrc":"2180:10:30","nodeType":"YulFunctionCall","src":"2180:10:30"},{"kind":"number","nativeSrc":"2192:1:30","nodeType":"YulLiteral","src":"2192:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2176:3:30","nodeType":"YulIdentifier","src":"2176:3:30"},"nativeSrc":"2176:18:30","nodeType":"YulFunctionCall","src":"2176:18:30"}],"functionName":{"name":"gt","nativeSrc":"2163:2:30","nodeType":"YulIdentifier","src":"2163:2:30"},"nativeSrc":"2163:32:30","nodeType":"YulFunctionCall","src":"2163:32:30"},"nativeSrc":"2160:52:30","nodeType":"YulIf","src":"2160:52:30"},{"nativeSrc":"2221:73:30","nodeType":"YulAssignment","src":"2221:73:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2264:9:30","nodeType":"YulIdentifier","src":"2264:9:30"},{"name":"offset_2","nativeSrc":"2275:8:30","nodeType":"YulIdentifier","src":"2275:8:30"}],"functionName":{"name":"add","nativeSrc":"2260:3:30","nodeType":"YulIdentifier","src":"2260:3:30"},"nativeSrc":"2260:24:30","nodeType":"YulFunctionCall","src":"2260:24:30"},{"name":"dataEnd","nativeSrc":"2286:7:30","nodeType":"YulIdentifier","src":"2286:7:30"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"2231:28:30","nodeType":"YulIdentifier","src":"2231:28:30"},"nativeSrc":"2231:63:30","nodeType":"YulFunctionCall","src":"2231:63:30"},"variableNames":[{"name":"value2","nativeSrc":"2221:6:30","nodeType":"YulIdentifier","src":"2221:6:30"}]},{"nativeSrc":"2303:41:30","nodeType":"YulVariableDeclaration","src":"2303:41:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2329:9:30","nodeType":"YulIdentifier","src":"2329:9:30"},{"kind":"number","nativeSrc":"2340:2:30","nodeType":"YulLiteral","src":"2340:2:30","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2325:3:30","nodeType":"YulIdentifier","src":"2325:3:30"},"nativeSrc":"2325:18:30","nodeType":"YulFunctionCall","src":"2325:18:30"}],"functionName":{"name":"mload","nativeSrc":"2319:5:30","nodeType":"YulIdentifier","src":"2319:5:30"},"nativeSrc":"2319:25:30","nodeType":"YulFunctionCall","src":"2319:25:30"},"variables":[{"name":"offset_3","nativeSrc":"2307:8:30","nodeType":"YulTypedName","src":"2307:8:30","type":""}]},{"body":{"nativeSrc":"2389:16:30","nodeType":"YulBlock","src":"2389:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2398:1:30","nodeType":"YulLiteral","src":"2398:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"2401:1:30","nodeType":"YulLiteral","src":"2401:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2391:6:30","nodeType":"YulIdentifier","src":"2391:6:30"},"nativeSrc":"2391:12:30","nodeType":"YulFunctionCall","src":"2391:12:30"},"nativeSrc":"2391:12:30","nodeType":"YulExpressionStatement","src":"2391:12:30"}]},"condition":{"arguments":[{"name":"offset_3","nativeSrc":"2359:8:30","nodeType":"YulIdentifier","src":"2359:8:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2377:2:30","nodeType":"YulLiteral","src":"2377:2:30","type":"","value":"64"},{"kind":"number","nativeSrc":"2381:1:30","nodeType":"YulLiteral","src":"2381:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2373:3:30","nodeType":"YulIdentifier","src":"2373:3:30"},"nativeSrc":"2373:10:30","nodeType":"YulFunctionCall","src":"2373:10:30"},{"kind":"number","nativeSrc":"2385:1:30","nodeType":"YulLiteral","src":"2385:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2369:3:30","nodeType":"YulIdentifier","src":"2369:3:30"},"nativeSrc":"2369:18:30","nodeType":"YulFunctionCall","src":"2369:18:30"}],"functionName":{"name":"gt","nativeSrc":"2356:2:30","nodeType":"YulIdentifier","src":"2356:2:30"},"nativeSrc":"2356:32:30","nodeType":"YulFunctionCall","src":"2356:32:30"},"nativeSrc":"2353:52:30","nodeType":"YulIf","src":"2353:52:30"},{"nativeSrc":"2414:73:30","nodeType":"YulAssignment","src":"2414:73:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2457:9:30","nodeType":"YulIdentifier","src":"2457:9:30"},{"name":"offset_3","nativeSrc":"2468:8:30","nodeType":"YulIdentifier","src":"2468:8:30"}],"functionName":{"name":"add","nativeSrc":"2453:3:30","nodeType":"YulIdentifier","src":"2453:3:30"},"nativeSrc":"2453:24:30","nodeType":"YulFunctionCall","src":"2453:24:30"},{"name":"dataEnd","nativeSrc":"2479:7:30","nodeType":"YulIdentifier","src":"2479:7:30"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"2424:28:30","nodeType":"YulIdentifier","src":"2424:28:30"},"nativeSrc":"2424:63:30","nodeType":"YulFunctionCall","src":"2424:63:30"},"variableNames":[{"name":"value3","nativeSrc":"2414:6:30","nodeType":"YulIdentifier","src":"2414:6:30"}]},{"nativeSrc":"2496:60:30","nodeType":"YulAssignment","src":"2496:60:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2540:9:30","nodeType":"YulIdentifier","src":"2540:9:30"},{"kind":"number","nativeSrc":"2551:3:30","nodeType":"YulLiteral","src":"2551:3:30","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"2536:3:30","nodeType":"YulIdentifier","src":"2536:3:30"},"nativeSrc":"2536:19:30","nodeType":"YulFunctionCall","src":"2536:19:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"2506:29:30","nodeType":"YulIdentifier","src":"2506:29:30"},"nativeSrc":"2506:50:30","nodeType":"YulFunctionCall","src":"2506:50:30"},"variableNames":[{"name":"value4","nativeSrc":"2496:6:30","nodeType":"YulIdentifier","src":"2496:6:30"}]},{"nativeSrc":"2565:59:30","nodeType":"YulAssignment","src":"2565:59:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2608:9:30","nodeType":"YulIdentifier","src":"2608:9:30"},{"kind":"number","nativeSrc":"2619:3:30","nodeType":"YulLiteral","src":"2619:3:30","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"2604:3:30","nodeType":"YulIdentifier","src":"2604:3:30"},"nativeSrc":"2604:19:30","nodeType":"YulFunctionCall","src":"2604:19:30"}],"functionName":{"name":"abi_decode_uint96_fromMemory","nativeSrc":"2575:28:30","nodeType":"YulIdentifier","src":"2575:28:30"},"nativeSrc":"2575:49:30","nodeType":"YulFunctionCall","src":"2575:49:30"},"variableNames":[{"name":"value5","nativeSrc":"2565:6:30","nodeType":"YulIdentifier","src":"2565:6:30"}]},{"nativeSrc":"2633:60:30","nodeType":"YulAssignment","src":"2633:60:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2677:9:30","nodeType":"YulIdentifier","src":"2677:9:30"},{"kind":"number","nativeSrc":"2688:3:30","nodeType":"YulLiteral","src":"2688:3:30","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"2673:3:30","nodeType":"YulIdentifier","src":"2673:3:30"},"nativeSrc":"2673:19:30","nodeType":"YulFunctionCall","src":"2673:19:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"2643:29:30","nodeType":"YulIdentifier","src":"2643:29:30"},"nativeSrc":"2643:50:30","nodeType":"YulFunctionCall","src":"2643:50:30"},"variableNames":[{"name":"value6","nativeSrc":"2633:6:30","nodeType":"YulIdentifier","src":"2633:6:30"}]},{"nativeSrc":"2702:60:30","nodeType":"YulAssignment","src":"2702:60:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2746:9:30","nodeType":"YulIdentifier","src":"2746:9:30"},{"kind":"number","nativeSrc":"2757:3:30","nodeType":"YulLiteral","src":"2757:3:30","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"2742:3:30","nodeType":"YulIdentifier","src":"2742:3:30"},"nativeSrc":"2742:19:30","nodeType":"YulFunctionCall","src":"2742:19:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"2712:29:30","nodeType":"YulIdentifier","src":"2712:29:30"},"nativeSrc":"2712:50:30","nodeType":"YulFunctionCall","src":"2712:50:30"},"variableNames":[{"name":"value7","nativeSrc":"2702:6:30","nodeType":"YulIdentifier","src":"2702:6:30"}]},{"nativeSrc":"2771:59:30","nodeType":"YulAssignment","src":"2771:59:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2814:9:30","nodeType":"YulIdentifier","src":"2814:9:30"},{"kind":"number","nativeSrc":"2825:3:30","nodeType":"YulLiteral","src":"2825:3:30","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"2810:3:30","nodeType":"YulIdentifier","src":"2810:3:30"},"nativeSrc":"2810:19:30","nodeType":"YulFunctionCall","src":"2810:19:30"}],"functionName":{"name":"abi_decode_uint48_fromMemory","nativeSrc":"2781:28:30","nodeType":"YulIdentifier","src":"2781:28:30"},"nativeSrc":"2781:49:30","nodeType":"YulFunctionCall","src":"2781:49:30"},"variableNames":[{"name":"value8","nativeSrc":"2771:6:30","nodeType":"YulIdentifier","src":"2771:6:30"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint96t_addresst_addresst_uint48_fromMemory","nativeSrc":"1412:1424:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1569:9:30","nodeType":"YulTypedName","src":"1569:9:30","type":""},{"name":"dataEnd","nativeSrc":"1580:7:30","nodeType":"YulTypedName","src":"1580:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1592:6:30","nodeType":"YulTypedName","src":"1592:6:30","type":""},{"name":"value1","nativeSrc":"1600:6:30","nodeType":"YulTypedName","src":"1600:6:30","type":""},{"name":"value2","nativeSrc":"1608:6:30","nodeType":"YulTypedName","src":"1608:6:30","type":""},{"name":"value3","nativeSrc":"1616:6:30","nodeType":"YulTypedName","src":"1616:6:30","type":""},{"name":"value4","nativeSrc":"1624:6:30","nodeType":"YulTypedName","src":"1624:6:30","type":""},{"name":"value5","nativeSrc":"1632:6:30","nodeType":"YulTypedName","src":"1632:6:30","type":""},{"name":"value6","nativeSrc":"1640:6:30","nodeType":"YulTypedName","src":"1640:6:30","type":""},{"name":"value7","nativeSrc":"1648:6:30","nodeType":"YulTypedName","src":"1648:6:30","type":""},{"name":"value8","nativeSrc":"1656:6:30","nodeType":"YulTypedName","src":"1656:6:30","type":""}],"src":"1412:1424:30"},{"body":{"nativeSrc":"2896:325:30","nodeType":"YulBlock","src":"2896:325:30","statements":[{"nativeSrc":"2906:22:30","nodeType":"YulAssignment","src":"2906:22:30","value":{"arguments":[{"kind":"number","nativeSrc":"2920:1:30","nodeType":"YulLiteral","src":"2920:1:30","type":"","value":"1"},{"name":"data","nativeSrc":"2923:4:30","nodeType":"YulIdentifier","src":"2923:4:30"}],"functionName":{"name":"shr","nativeSrc":"2916:3:30","nodeType":"YulIdentifier","src":"2916:3:30"},"nativeSrc":"2916:12:30","nodeType":"YulFunctionCall","src":"2916:12:30"},"variableNames":[{"name":"length","nativeSrc":"2906:6:30","nodeType":"YulIdentifier","src":"2906:6:30"}]},{"nativeSrc":"2937:38:30","nodeType":"YulVariableDeclaration","src":"2937:38:30","value":{"arguments":[{"name":"data","nativeSrc":"2967:4:30","nodeType":"YulIdentifier","src":"2967:4:30"},{"kind":"number","nativeSrc":"2973:1:30","nodeType":"YulLiteral","src":"2973:1:30","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"2963:3:30","nodeType":"YulIdentifier","src":"2963:3:30"},"nativeSrc":"2963:12:30","nodeType":"YulFunctionCall","src":"2963:12:30"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"2941:18:30","nodeType":"YulTypedName","src":"2941:18:30","type":""}]},{"body":{"nativeSrc":"3014:31:30","nodeType":"YulBlock","src":"3014:31:30","statements":[{"nativeSrc":"3016:27:30","nodeType":"YulAssignment","src":"3016:27:30","value":{"arguments":[{"name":"length","nativeSrc":"3030:6:30","nodeType":"YulIdentifier","src":"3030:6:30"},{"kind":"number","nativeSrc":"3038:4:30","nodeType":"YulLiteral","src":"3038:4:30","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"3026:3:30","nodeType":"YulIdentifier","src":"3026:3:30"},"nativeSrc":"3026:17:30","nodeType":"YulFunctionCall","src":"3026:17:30"},"variableNames":[{"name":"length","nativeSrc":"3016:6:30","nodeType":"YulIdentifier","src":"3016:6:30"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"2994:18:30","nodeType":"YulIdentifier","src":"2994:18:30"}],"functionName":{"name":"iszero","nativeSrc":"2987:6:30","nodeType":"YulIdentifier","src":"2987:6:30"},"nativeSrc":"2987:26:30","nodeType":"YulFunctionCall","src":"2987:26:30"},"nativeSrc":"2984:61:30","nodeType":"YulIf","src":"2984:61:30"},{"body":{"nativeSrc":"3104:111:30","nodeType":"YulBlock","src":"3104:111:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3125:1:30","nodeType":"YulLiteral","src":"3125:1:30","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3132:3:30","nodeType":"YulLiteral","src":"3132:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"3137:10:30","nodeType":"YulLiteral","src":"3137:10:30","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3128:3:30","nodeType":"YulIdentifier","src":"3128:3:30"},"nativeSrc":"3128:20:30","nodeType":"YulFunctionCall","src":"3128:20:30"}],"functionName":{"name":"mstore","nativeSrc":"3118:6:30","nodeType":"YulIdentifier","src":"3118:6:30"},"nativeSrc":"3118:31:30","nodeType":"YulFunctionCall","src":"3118:31:30"},"nativeSrc":"3118:31:30","nodeType":"YulExpressionStatement","src":"3118:31:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3169:1:30","nodeType":"YulLiteral","src":"3169:1:30","type":"","value":"4"},{"kind":"number","nativeSrc":"3172:4:30","nodeType":"YulLiteral","src":"3172:4:30","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"3162:6:30","nodeType":"YulIdentifier","src":"3162:6:30"},"nativeSrc":"3162:15:30","nodeType":"YulFunctionCall","src":"3162:15:30"},"nativeSrc":"3162:15:30","nodeType":"YulExpressionStatement","src":"3162:15:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3197:1:30","nodeType":"YulLiteral","src":"3197:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"3200:4:30","nodeType":"YulLiteral","src":"3200:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3190:6:30","nodeType":"YulIdentifier","src":"3190:6:30"},"nativeSrc":"3190:15:30","nodeType":"YulFunctionCall","src":"3190:15:30"},"nativeSrc":"3190:15:30","nodeType":"YulExpressionStatement","src":"3190:15:30"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"3060:18:30","nodeType":"YulIdentifier","src":"3060:18:30"},{"arguments":[{"name":"length","nativeSrc":"3083:6:30","nodeType":"YulIdentifier","src":"3083:6:30"},{"kind":"number","nativeSrc":"3091:2:30","nodeType":"YulLiteral","src":"3091:2:30","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"3080:2:30","nodeType":"YulIdentifier","src":"3080:2:30"},"nativeSrc":"3080:14:30","nodeType":"YulFunctionCall","src":"3080:14:30"}],"functionName":{"name":"eq","nativeSrc":"3057:2:30","nodeType":"YulIdentifier","src":"3057:2:30"},"nativeSrc":"3057:38:30","nodeType":"YulFunctionCall","src":"3057:38:30"},"nativeSrc":"3054:161:30","nodeType":"YulIf","src":"3054:161:30"}]},"name":"extract_byte_array_length","nativeSrc":"2841:380:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"2876:4:30","nodeType":"YulTypedName","src":"2876:4:30","type":""}],"returnVariables":[{"name":"length","nativeSrc":"2885:6:30","nodeType":"YulTypedName","src":"2885:6:30","type":""}],"src":"2841:380:30"},{"body":{"nativeSrc":"3282:65:30","nodeType":"YulBlock","src":"3282:65:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3299:1:30","nodeType":"YulLiteral","src":"3299:1:30","type":"","value":"0"},{"name":"ptr","nativeSrc":"3302:3:30","nodeType":"YulIdentifier","src":"3302:3:30"}],"functionName":{"name":"mstore","nativeSrc":"3292:6:30","nodeType":"YulIdentifier","src":"3292:6:30"},"nativeSrc":"3292:14:30","nodeType":"YulFunctionCall","src":"3292:14:30"},"nativeSrc":"3292:14:30","nodeType":"YulExpressionStatement","src":"3292:14:30"},{"nativeSrc":"3315:26:30","nodeType":"YulAssignment","src":"3315:26:30","value":{"arguments":[{"kind":"number","nativeSrc":"3333:1:30","nodeType":"YulLiteral","src":"3333:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"3336:4:30","nodeType":"YulLiteral","src":"3336:4:30","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"3323:9:30","nodeType":"YulIdentifier","src":"3323:9:30"},"nativeSrc":"3323:18:30","nodeType":"YulFunctionCall","src":"3323:18:30"},"variableNames":[{"name":"data","nativeSrc":"3315:4:30","nodeType":"YulIdentifier","src":"3315:4:30"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"3226:121:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"3265:3:30","nodeType":"YulTypedName","src":"3265:3:30","type":""}],"returnVariables":[{"name":"data","nativeSrc":"3273:4:30","nodeType":"YulTypedName","src":"3273:4:30","type":""}],"src":"3226:121:30"},{"body":{"nativeSrc":"3433:437:30","nodeType":"YulBlock","src":"3433:437:30","statements":[{"body":{"nativeSrc":"3466:398:30","nodeType":"YulBlock","src":"3466:398:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3487:1:30","nodeType":"YulLiteral","src":"3487:1:30","type":"","value":"0"},{"name":"array","nativeSrc":"3490:5:30","nodeType":"YulIdentifier","src":"3490:5:30"}],"functionName":{"name":"mstore","nativeSrc":"3480:6:30","nodeType":"YulIdentifier","src":"3480:6:30"},"nativeSrc":"3480:16:30","nodeType":"YulFunctionCall","src":"3480:16:30"},"nativeSrc":"3480:16:30","nodeType":"YulExpressionStatement","src":"3480:16:30"},{"nativeSrc":"3509:30:30","nodeType":"YulVariableDeclaration","src":"3509:30:30","value":{"arguments":[{"kind":"number","nativeSrc":"3531:1:30","nodeType":"YulLiteral","src":"3531:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"3534:4:30","nodeType":"YulLiteral","src":"3534:4:30","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"3521:9:30","nodeType":"YulIdentifier","src":"3521:9:30"},"nativeSrc":"3521:18:30","nodeType":"YulFunctionCall","src":"3521:18:30"},"variables":[{"name":"data","nativeSrc":"3513:4:30","nodeType":"YulTypedName","src":"3513:4:30","type":""}]},{"nativeSrc":"3552:57:30","nodeType":"YulVariableDeclaration","src":"3552:57:30","value":{"arguments":[{"name":"data","nativeSrc":"3575:4:30","nodeType":"YulIdentifier","src":"3575:4:30"},{"arguments":[{"kind":"number","nativeSrc":"3585:1:30","nodeType":"YulLiteral","src":"3585:1:30","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"3592:10:30","nodeType":"YulIdentifier","src":"3592:10:30"},{"kind":"number","nativeSrc":"3604:2:30","nodeType":"YulLiteral","src":"3604:2:30","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3588:3:30","nodeType":"YulIdentifier","src":"3588:3:30"},"nativeSrc":"3588:19:30","nodeType":"YulFunctionCall","src":"3588:19:30"}],"functionName":{"name":"shr","nativeSrc":"3581:3:30","nodeType":"YulIdentifier","src":"3581:3:30"},"nativeSrc":"3581:27:30","nodeType":"YulFunctionCall","src":"3581:27:30"}],"functionName":{"name":"add","nativeSrc":"3571:3:30","nodeType":"YulIdentifier","src":"3571:3:30"},"nativeSrc":"3571:38:30","nodeType":"YulFunctionCall","src":"3571:38:30"},"variables":[{"name":"deleteStart","nativeSrc":"3556:11:30","nodeType":"YulTypedName","src":"3556:11:30","type":""}]},{"body":{"nativeSrc":"3646:23:30","nodeType":"YulBlock","src":"3646:23:30","statements":[{"nativeSrc":"3648:19:30","nodeType":"YulAssignment","src":"3648:19:30","value":{"name":"data","nativeSrc":"3663:4:30","nodeType":"YulIdentifier","src":"3663:4:30"},"variableNames":[{"name":"deleteStart","nativeSrc":"3648:11:30","nodeType":"YulIdentifier","src":"3648:11:30"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"3628:10:30","nodeType":"YulIdentifier","src":"3628:10:30"},{"kind":"number","nativeSrc":"3640:4:30","nodeType":"YulLiteral","src":"3640:4:30","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"3625:2:30","nodeType":"YulIdentifier","src":"3625:2:30"},"nativeSrc":"3625:20:30","nodeType":"YulFunctionCall","src":"3625:20:30"},"nativeSrc":"3622:47:30","nodeType":"YulIf","src":"3622:47:30"},{"nativeSrc":"3682:41:30","nodeType":"YulVariableDeclaration","src":"3682:41:30","value":{"arguments":[{"name":"data","nativeSrc":"3696:4:30","nodeType":"YulIdentifier","src":"3696:4:30"},{"arguments":[{"kind":"number","nativeSrc":"3706:1:30","nodeType":"YulLiteral","src":"3706:1:30","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"3713:3:30","nodeType":"YulIdentifier","src":"3713:3:30"},{"kind":"number","nativeSrc":"3718:2:30","nodeType":"YulLiteral","src":"3718:2:30","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3709:3:30","nodeType":"YulIdentifier","src":"3709:3:30"},"nativeSrc":"3709:12:30","nodeType":"YulFunctionCall","src":"3709:12:30"}],"functionName":{"name":"shr","nativeSrc":"3702:3:30","nodeType":"YulIdentifier","src":"3702:3:30"},"nativeSrc":"3702:20:30","nodeType":"YulFunctionCall","src":"3702:20:30"}],"functionName":{"name":"add","nativeSrc":"3692:3:30","nodeType":"YulIdentifier","src":"3692:3:30"},"nativeSrc":"3692:31:30","nodeType":"YulFunctionCall","src":"3692:31:30"},"variables":[{"name":"_1","nativeSrc":"3686:2:30","nodeType":"YulTypedName","src":"3686:2:30","type":""}]},{"nativeSrc":"3736:24:30","nodeType":"YulVariableDeclaration","src":"3736:24:30","value":{"name":"deleteStart","nativeSrc":"3749:11:30","nodeType":"YulIdentifier","src":"3749:11:30"},"variables":[{"name":"start","nativeSrc":"3740:5:30","nodeType":"YulTypedName","src":"3740:5:30","type":""}]},{"body":{"nativeSrc":"3834:20:30","nodeType":"YulBlock","src":"3834:20:30","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"3843:5:30","nodeType":"YulIdentifier","src":"3843:5:30"},{"kind":"number","nativeSrc":"3850:1:30","nodeType":"YulLiteral","src":"3850:1:30","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"3836:6:30","nodeType":"YulIdentifier","src":"3836:6:30"},"nativeSrc":"3836:16:30","nodeType":"YulFunctionCall","src":"3836:16:30"},"nativeSrc":"3836:16:30","nodeType":"YulExpressionStatement","src":"3836:16:30"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"3784:5:30","nodeType":"YulIdentifier","src":"3784:5:30"},{"name":"_1","nativeSrc":"3791:2:30","nodeType":"YulIdentifier","src":"3791:2:30"}],"functionName":{"name":"lt","nativeSrc":"3781:2:30","nodeType":"YulIdentifier","src":"3781:2:30"},"nativeSrc":"3781:13:30","nodeType":"YulFunctionCall","src":"3781:13:30"},"nativeSrc":"3773:81:30","nodeType":"YulForLoop","post":{"nativeSrc":"3795:26:30","nodeType":"YulBlock","src":"3795:26:30","statements":[{"nativeSrc":"3797:22:30","nodeType":"YulAssignment","src":"3797:22:30","value":{"arguments":[{"name":"start","nativeSrc":"3810:5:30","nodeType":"YulIdentifier","src":"3810:5:30"},{"kind":"number","nativeSrc":"3817:1:30","nodeType":"YulLiteral","src":"3817:1:30","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3806:3:30","nodeType":"YulIdentifier","src":"3806:3:30"},"nativeSrc":"3806:13:30","nodeType":"YulFunctionCall","src":"3806:13:30"},"variableNames":[{"name":"start","nativeSrc":"3797:5:30","nodeType":"YulIdentifier","src":"3797:5:30"}]}]},"pre":{"nativeSrc":"3777:3:30","nodeType":"YulBlock","src":"3777:3:30","statements":[]},"src":"3773:81:30"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"3449:3:30","nodeType":"YulIdentifier","src":"3449:3:30"},{"kind":"number","nativeSrc":"3454:2:30","nodeType":"YulLiteral","src":"3454:2:30","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"3446:2:30","nodeType":"YulIdentifier","src":"3446:2:30"},"nativeSrc":"3446:11:30","nodeType":"YulFunctionCall","src":"3446:11:30"},"nativeSrc":"3443:421:30","nodeType":"YulIf","src":"3443:421:30"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"3352:518:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"3405:5:30","nodeType":"YulTypedName","src":"3405:5:30","type":""},{"name":"len","nativeSrc":"3412:3:30","nodeType":"YulTypedName","src":"3412:3:30","type":""},{"name":"startIndex","nativeSrc":"3417:10:30","nodeType":"YulTypedName","src":"3417:10:30","type":""}],"src":"3352:518:30"},{"body":{"nativeSrc":"3960:81:30","nodeType":"YulBlock","src":"3960:81:30","statements":[{"nativeSrc":"3970:65:30","nodeType":"YulAssignment","src":"3970:65:30","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"3985:4:30","nodeType":"YulIdentifier","src":"3985:4:30"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4003:1:30","nodeType":"YulLiteral","src":"4003:1:30","type":"","value":"3"},{"name":"len","nativeSrc":"4006:3:30","nodeType":"YulIdentifier","src":"4006:3:30"}],"functionName":{"name":"shl","nativeSrc":"3999:3:30","nodeType":"YulIdentifier","src":"3999:3:30"},"nativeSrc":"3999:11:30","nodeType":"YulFunctionCall","src":"3999:11:30"},{"arguments":[{"kind":"number","nativeSrc":"4016:1:30","nodeType":"YulLiteral","src":"4016:1:30","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4012:3:30","nodeType":"YulIdentifier","src":"4012:3:30"},"nativeSrc":"4012:6:30","nodeType":"YulFunctionCall","src":"4012:6:30"}],"functionName":{"name":"shr","nativeSrc":"3995:3:30","nodeType":"YulIdentifier","src":"3995:3:30"},"nativeSrc":"3995:24:30","nodeType":"YulFunctionCall","src":"3995:24:30"}],"functionName":{"name":"not","nativeSrc":"3991:3:30","nodeType":"YulIdentifier","src":"3991:3:30"},"nativeSrc":"3991:29:30","nodeType":"YulFunctionCall","src":"3991:29:30"}],"functionName":{"name":"and","nativeSrc":"3981:3:30","nodeType":"YulIdentifier","src":"3981:3:30"},"nativeSrc":"3981:40:30","nodeType":"YulFunctionCall","src":"3981:40:30"},{"arguments":[{"kind":"number","nativeSrc":"4027:1:30","nodeType":"YulLiteral","src":"4027:1:30","type":"","value":"1"},{"name":"len","nativeSrc":"4030:3:30","nodeType":"YulIdentifier","src":"4030:3:30"}],"functionName":{"name":"shl","nativeSrc":"4023:3:30","nodeType":"YulIdentifier","src":"4023:3:30"},"nativeSrc":"4023:11:30","nodeType":"YulFunctionCall","src":"4023:11:30"}],"functionName":{"name":"or","nativeSrc":"3978:2:30","nodeType":"YulIdentifier","src":"3978:2:30"},"nativeSrc":"3978:57:30","nodeType":"YulFunctionCall","src":"3978:57:30"},"variableNames":[{"name":"used","nativeSrc":"3970:4:30","nodeType":"YulIdentifier","src":"3970:4:30"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"3875:166:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"3937:4:30","nodeType":"YulTypedName","src":"3937:4:30","type":""},{"name":"len","nativeSrc":"3943:3:30","nodeType":"YulTypedName","src":"3943:3:30","type":""}],"returnVariables":[{"name":"used","nativeSrc":"3951:4:30","nodeType":"YulTypedName","src":"3951:4:30","type":""}],"src":"3875:166:30"},{"body":{"nativeSrc":"4142:1203:30","nodeType":"YulBlock","src":"4142:1203:30","statements":[{"nativeSrc":"4152:24:30","nodeType":"YulVariableDeclaration","src":"4152:24:30","value":{"arguments":[{"name":"src","nativeSrc":"4172:3:30","nodeType":"YulIdentifier","src":"4172:3:30"}],"functionName":{"name":"mload","nativeSrc":"4166:5:30","nodeType":"YulIdentifier","src":"4166:5:30"},"nativeSrc":"4166:10:30","nodeType":"YulFunctionCall","src":"4166:10:30"},"variables":[{"name":"newLen","nativeSrc":"4156:6:30","nodeType":"YulTypedName","src":"4156:6:30","type":""}]},{"body":{"nativeSrc":"4219:22:30","nodeType":"YulBlock","src":"4219:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"4221:16:30","nodeType":"YulIdentifier","src":"4221:16:30"},"nativeSrc":"4221:18:30","nodeType":"YulFunctionCall","src":"4221:18:30"},"nativeSrc":"4221:18:30","nodeType":"YulExpressionStatement","src":"4221:18:30"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"4191:6:30","nodeType":"YulIdentifier","src":"4191:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4207:2:30","nodeType":"YulLiteral","src":"4207:2:30","type":"","value":"64"},{"kind":"number","nativeSrc":"4211:1:30","nodeType":"YulLiteral","src":"4211:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4203:3:30","nodeType":"YulIdentifier","src":"4203:3:30"},"nativeSrc":"4203:10:30","nodeType":"YulFunctionCall","src":"4203:10:30"},{"kind":"number","nativeSrc":"4215:1:30","nodeType":"YulLiteral","src":"4215:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4199:3:30","nodeType":"YulIdentifier","src":"4199:3:30"},"nativeSrc":"4199:18:30","nodeType":"YulFunctionCall","src":"4199:18:30"}],"functionName":{"name":"gt","nativeSrc":"4188:2:30","nodeType":"YulIdentifier","src":"4188:2:30"},"nativeSrc":"4188:30:30","nodeType":"YulFunctionCall","src":"4188:30:30"},"nativeSrc":"4185:56:30","nodeType":"YulIf","src":"4185:56:30"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"4294:4:30","nodeType":"YulIdentifier","src":"4294:4:30"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"4332:4:30","nodeType":"YulIdentifier","src":"4332:4:30"}],"functionName":{"name":"sload","nativeSrc":"4326:5:30","nodeType":"YulIdentifier","src":"4326:5:30"},"nativeSrc":"4326:11:30","nodeType":"YulFunctionCall","src":"4326:11:30"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"4300:25:30","nodeType":"YulIdentifier","src":"4300:25:30"},"nativeSrc":"4300:38:30","nodeType":"YulFunctionCall","src":"4300:38:30"},{"name":"newLen","nativeSrc":"4340:6:30","nodeType":"YulIdentifier","src":"4340:6:30"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"4250:43:30","nodeType":"YulIdentifier","src":"4250:43:30"},"nativeSrc":"4250:97:30","nodeType":"YulFunctionCall","src":"4250:97:30"},"nativeSrc":"4250:97:30","nodeType":"YulExpressionStatement","src":"4250:97:30"},{"nativeSrc":"4356:18:30","nodeType":"YulVariableDeclaration","src":"4356:18:30","value":{"kind":"number","nativeSrc":"4373:1:30","nodeType":"YulLiteral","src":"4373:1:30","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"4360:9:30","nodeType":"YulTypedName","src":"4360:9:30","type":""}]},{"nativeSrc":"4383:17:30","nodeType":"YulAssignment","src":"4383:17:30","value":{"kind":"number","nativeSrc":"4396:4:30","nodeType":"YulLiteral","src":"4396:4:30","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"4383:9:30","nodeType":"YulIdentifier","src":"4383:9:30"}]},{"cases":[{"body":{"nativeSrc":"4446:642:30","nodeType":"YulBlock","src":"4446:642:30","statements":[{"nativeSrc":"4460:35:30","nodeType":"YulVariableDeclaration","src":"4460:35:30","value":{"arguments":[{"name":"newLen","nativeSrc":"4479:6:30","nodeType":"YulIdentifier","src":"4479:6:30"},{"arguments":[{"kind":"number","nativeSrc":"4491:2:30","nodeType":"YulLiteral","src":"4491:2:30","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"4487:3:30","nodeType":"YulIdentifier","src":"4487:3:30"},"nativeSrc":"4487:7:30","nodeType":"YulFunctionCall","src":"4487:7:30"}],"functionName":{"name":"and","nativeSrc":"4475:3:30","nodeType":"YulIdentifier","src":"4475:3:30"},"nativeSrc":"4475:20:30","nodeType":"YulFunctionCall","src":"4475:20:30"},"variables":[{"name":"loopEnd","nativeSrc":"4464:7:30","nodeType":"YulTypedName","src":"4464:7:30","type":""}]},{"nativeSrc":"4508:49:30","nodeType":"YulVariableDeclaration","src":"4508:49:30","value":{"arguments":[{"name":"slot","nativeSrc":"4552:4:30","nodeType":"YulIdentifier","src":"4552:4:30"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"4522:29:30","nodeType":"YulIdentifier","src":"4522:29:30"},"nativeSrc":"4522:35:30","nodeType":"YulFunctionCall","src":"4522:35:30"},"variables":[{"name":"dstPtr","nativeSrc":"4512:6:30","nodeType":"YulTypedName","src":"4512:6:30","type":""}]},{"nativeSrc":"4570:10:30","nodeType":"YulVariableDeclaration","src":"4570:10:30","value":{"kind":"number","nativeSrc":"4579:1:30","nodeType":"YulLiteral","src":"4579:1:30","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"4574:1:30","nodeType":"YulTypedName","src":"4574:1:30","type":""}]},{"body":{"nativeSrc":"4650:165:30","nodeType":"YulBlock","src":"4650:165:30","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"4675:6:30","nodeType":"YulIdentifier","src":"4675:6:30"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"4693:3:30","nodeType":"YulIdentifier","src":"4693:3:30"},{"name":"srcOffset","nativeSrc":"4698:9:30","nodeType":"YulIdentifier","src":"4698:9:30"}],"functionName":{"name":"add","nativeSrc":"4689:3:30","nodeType":"YulIdentifier","src":"4689:3:30"},"nativeSrc":"4689:19:30","nodeType":"YulFunctionCall","src":"4689:19:30"}],"functionName":{"name":"mload","nativeSrc":"4683:5:30","nodeType":"YulIdentifier","src":"4683:5:30"},"nativeSrc":"4683:26:30","nodeType":"YulFunctionCall","src":"4683:26:30"}],"functionName":{"name":"sstore","nativeSrc":"4668:6:30","nodeType":"YulIdentifier","src":"4668:6:30"},"nativeSrc":"4668:42:30","nodeType":"YulFunctionCall","src":"4668:42:30"},"nativeSrc":"4668:42:30","nodeType":"YulExpressionStatement","src":"4668:42:30"},{"nativeSrc":"4727:24:30","nodeType":"YulAssignment","src":"4727:24:30","value":{"arguments":[{"name":"dstPtr","nativeSrc":"4741:6:30","nodeType":"YulIdentifier","src":"4741:6:30"},{"kind":"number","nativeSrc":"4749:1:30","nodeType":"YulLiteral","src":"4749:1:30","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"4737:3:30","nodeType":"YulIdentifier","src":"4737:3:30"},"nativeSrc":"4737:14:30","nodeType":"YulFunctionCall","src":"4737:14:30"},"variableNames":[{"name":"dstPtr","nativeSrc":"4727:6:30","nodeType":"YulIdentifier","src":"4727:6:30"}]},{"nativeSrc":"4768:33:30","nodeType":"YulAssignment","src":"4768:33:30","value":{"arguments":[{"name":"srcOffset","nativeSrc":"4785:9:30","nodeType":"YulIdentifier","src":"4785:9:30"},{"kind":"number","nativeSrc":"4796:4:30","nodeType":"YulLiteral","src":"4796:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4781:3:30","nodeType":"YulIdentifier","src":"4781:3:30"},"nativeSrc":"4781:20:30","nodeType":"YulFunctionCall","src":"4781:20:30"},"variableNames":[{"name":"srcOffset","nativeSrc":"4768:9:30","nodeType":"YulIdentifier","src":"4768:9:30"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"4604:1:30","nodeType":"YulIdentifier","src":"4604:1:30"},{"name":"loopEnd","nativeSrc":"4607:7:30","nodeType":"YulIdentifier","src":"4607:7:30"}],"functionName":{"name":"lt","nativeSrc":"4601:2:30","nodeType":"YulIdentifier","src":"4601:2:30"},"nativeSrc":"4601:14:30","nodeType":"YulFunctionCall","src":"4601:14:30"},"nativeSrc":"4593:222:30","nodeType":"YulForLoop","post":{"nativeSrc":"4616:21:30","nodeType":"YulBlock","src":"4616:21:30","statements":[{"nativeSrc":"4618:17:30","nodeType":"YulAssignment","src":"4618:17:30","value":{"arguments":[{"name":"i","nativeSrc":"4627:1:30","nodeType":"YulIdentifier","src":"4627:1:30"},{"kind":"number","nativeSrc":"4630:4:30","nodeType":"YulLiteral","src":"4630:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4623:3:30","nodeType":"YulIdentifier","src":"4623:3:30"},"nativeSrc":"4623:12:30","nodeType":"YulFunctionCall","src":"4623:12:30"},"variableNames":[{"name":"i","nativeSrc":"4618:1:30","nodeType":"YulIdentifier","src":"4618:1:30"}]}]},"pre":{"nativeSrc":"4597:3:30","nodeType":"YulBlock","src":"4597:3:30","statements":[]},"src":"4593:222:30"},{"body":{"nativeSrc":"4863:166:30","nodeType":"YulBlock","src":"4863:166:30","statements":[{"nativeSrc":"4881:43:30","nodeType":"YulVariableDeclaration","src":"4881:43:30","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"4908:3:30","nodeType":"YulIdentifier","src":"4908:3:30"},{"name":"srcOffset","nativeSrc":"4913:9:30","nodeType":"YulIdentifier","src":"4913:9:30"}],"functionName":{"name":"add","nativeSrc":"4904:3:30","nodeType":"YulIdentifier","src":"4904:3:30"},"nativeSrc":"4904:19:30","nodeType":"YulFunctionCall","src":"4904:19:30"}],"functionName":{"name":"mload","nativeSrc":"4898:5:30","nodeType":"YulIdentifier","src":"4898:5:30"},"nativeSrc":"4898:26:30","nodeType":"YulFunctionCall","src":"4898:26:30"},"variables":[{"name":"lastValue","nativeSrc":"4885:9:30","nodeType":"YulTypedName","src":"4885:9:30","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"4948:6:30","nodeType":"YulIdentifier","src":"4948:6:30"},{"arguments":[{"name":"lastValue","nativeSrc":"4960:9:30","nodeType":"YulIdentifier","src":"4960:9:30"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4987:1:30","nodeType":"YulLiteral","src":"4987:1:30","type":"","value":"3"},{"name":"newLen","nativeSrc":"4990:6:30","nodeType":"YulIdentifier","src":"4990:6:30"}],"functionName":{"name":"shl","nativeSrc":"4983:3:30","nodeType":"YulIdentifier","src":"4983:3:30"},"nativeSrc":"4983:14:30","nodeType":"YulFunctionCall","src":"4983:14:30"},{"kind":"number","nativeSrc":"4999:3:30","nodeType":"YulLiteral","src":"4999:3:30","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"4979:3:30","nodeType":"YulIdentifier","src":"4979:3:30"},"nativeSrc":"4979:24:30","nodeType":"YulFunctionCall","src":"4979:24:30"},{"arguments":[{"kind":"number","nativeSrc":"5009:1:30","nodeType":"YulLiteral","src":"5009:1:30","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"5005:3:30","nodeType":"YulIdentifier","src":"5005:3:30"},"nativeSrc":"5005:6:30","nodeType":"YulFunctionCall","src":"5005:6:30"}],"functionName":{"name":"shr","nativeSrc":"4975:3:30","nodeType":"YulIdentifier","src":"4975:3:30"},"nativeSrc":"4975:37:30","nodeType":"YulFunctionCall","src":"4975:37:30"}],"functionName":{"name":"not","nativeSrc":"4971:3:30","nodeType":"YulIdentifier","src":"4971:3:30"},"nativeSrc":"4971:42:30","nodeType":"YulFunctionCall","src":"4971:42:30"}],"functionName":{"name":"and","nativeSrc":"4956:3:30","nodeType":"YulIdentifier","src":"4956:3:30"},"nativeSrc":"4956:58:30","nodeType":"YulFunctionCall","src":"4956:58:30"}],"functionName":{"name":"sstore","nativeSrc":"4941:6:30","nodeType":"YulIdentifier","src":"4941:6:30"},"nativeSrc":"4941:74:30","nodeType":"YulFunctionCall","src":"4941:74:30"},"nativeSrc":"4941:74:30","nodeType":"YulExpressionStatement","src":"4941:74:30"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"4834:7:30","nodeType":"YulIdentifier","src":"4834:7:30"},{"name":"newLen","nativeSrc":"4843:6:30","nodeType":"YulIdentifier","src":"4843:6:30"}],"functionName":{"name":"lt","nativeSrc":"4831:2:30","nodeType":"YulIdentifier","src":"4831:2:30"},"nativeSrc":"4831:19:30","nodeType":"YulFunctionCall","src":"4831:19:30"},"nativeSrc":"4828:201:30","nodeType":"YulIf","src":"4828:201:30"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"5049:4:30","nodeType":"YulIdentifier","src":"5049:4:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5063:1:30","nodeType":"YulLiteral","src":"5063:1:30","type":"","value":"1"},{"name":"newLen","nativeSrc":"5066:6:30","nodeType":"YulIdentifier","src":"5066:6:30"}],"functionName":{"name":"shl","nativeSrc":"5059:3:30","nodeType":"YulIdentifier","src":"5059:3:30"},"nativeSrc":"5059:14:30","nodeType":"YulFunctionCall","src":"5059:14:30"},{"kind":"number","nativeSrc":"5075:1:30","nodeType":"YulLiteral","src":"5075:1:30","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"5055:3:30","nodeType":"YulIdentifier","src":"5055:3:30"},"nativeSrc":"5055:22:30","nodeType":"YulFunctionCall","src":"5055:22:30"}],"functionName":{"name":"sstore","nativeSrc":"5042:6:30","nodeType":"YulIdentifier","src":"5042:6:30"},"nativeSrc":"5042:36:30","nodeType":"YulFunctionCall","src":"5042:36:30"},"nativeSrc":"5042:36:30","nodeType":"YulExpressionStatement","src":"5042:36:30"}]},"nativeSrc":"4439:649:30","nodeType":"YulCase","src":"4439:649:30","value":{"kind":"number","nativeSrc":"4444:1:30","nodeType":"YulLiteral","src":"4444:1:30","type":"","value":"1"}},{"body":{"nativeSrc":"5105:234:30","nodeType":"YulBlock","src":"5105:234:30","statements":[{"nativeSrc":"5119:14:30","nodeType":"YulVariableDeclaration","src":"5119:14:30","value":{"kind":"number","nativeSrc":"5132:1:30","nodeType":"YulLiteral","src":"5132:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5123:5:30","nodeType":"YulTypedName","src":"5123:5:30","type":""}]},{"body":{"nativeSrc":"5168:67:30","nodeType":"YulBlock","src":"5168:67:30","statements":[{"nativeSrc":"5186:35:30","nodeType":"YulAssignment","src":"5186:35:30","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5205:3:30","nodeType":"YulIdentifier","src":"5205:3:30"},{"name":"srcOffset","nativeSrc":"5210:9:30","nodeType":"YulIdentifier","src":"5210:9:30"}],"functionName":{"name":"add","nativeSrc":"5201:3:30","nodeType":"YulIdentifier","src":"5201:3:30"},"nativeSrc":"5201:19:30","nodeType":"YulFunctionCall","src":"5201:19:30"}],"functionName":{"name":"mload","nativeSrc":"5195:5:30","nodeType":"YulIdentifier","src":"5195:5:30"},"nativeSrc":"5195:26:30","nodeType":"YulFunctionCall","src":"5195:26:30"},"variableNames":[{"name":"value","nativeSrc":"5186:5:30","nodeType":"YulIdentifier","src":"5186:5:30"}]}]},"condition":{"name":"newLen","nativeSrc":"5149:6:30","nodeType":"YulIdentifier","src":"5149:6:30"},"nativeSrc":"5146:89:30","nodeType":"YulIf","src":"5146:89:30"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"5255:4:30","nodeType":"YulIdentifier","src":"5255:4:30"},{"arguments":[{"name":"value","nativeSrc":"5314:5:30","nodeType":"YulIdentifier","src":"5314:5:30"},{"name":"newLen","nativeSrc":"5321:6:30","nodeType":"YulIdentifier","src":"5321:6:30"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"5261:52:30","nodeType":"YulIdentifier","src":"5261:52:30"},"nativeSrc":"5261:67:30","nodeType":"YulFunctionCall","src":"5261:67:30"}],"functionName":{"name":"sstore","nativeSrc":"5248:6:30","nodeType":"YulIdentifier","src":"5248:6:30"},"nativeSrc":"5248:81:30","nodeType":"YulFunctionCall","src":"5248:81:30"},"nativeSrc":"5248:81:30","nodeType":"YulExpressionStatement","src":"5248:81:30"}]},"nativeSrc":"5097:242:30","nodeType":"YulCase","src":"5097:242:30","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"4419:6:30","nodeType":"YulIdentifier","src":"4419:6:30"},{"kind":"number","nativeSrc":"4427:2:30","nodeType":"YulLiteral","src":"4427:2:30","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"4416:2:30","nodeType":"YulIdentifier","src":"4416:2:30"},"nativeSrc":"4416:14:30","nodeType":"YulFunctionCall","src":"4416:14:30"},"nativeSrc":"4409:930:30","nodeType":"YulSwitch","src":"4409:930:30"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"4046:1299:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"4127:4:30","nodeType":"YulTypedName","src":"4127:4:30","type":""},{"name":"src","nativeSrc":"4133:3:30","nodeType":"YulTypedName","src":"4133:3:30","type":""}],"src":"4046:1299:30"},{"body":{"nativeSrc":"5451:102:30","nodeType":"YulBlock","src":"5451:102:30","statements":[{"nativeSrc":"5461:26:30","nodeType":"YulAssignment","src":"5461:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"5473:9:30","nodeType":"YulIdentifier","src":"5473:9:30"},{"kind":"number","nativeSrc":"5484:2:30","nodeType":"YulLiteral","src":"5484:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5469:3:30","nodeType":"YulIdentifier","src":"5469:3:30"},"nativeSrc":"5469:18:30","nodeType":"YulFunctionCall","src":"5469:18:30"},"variableNames":[{"name":"tail","nativeSrc":"5461:4:30","nodeType":"YulIdentifier","src":"5461:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5503:9:30","nodeType":"YulIdentifier","src":"5503:9:30"},{"arguments":[{"name":"value0","nativeSrc":"5518:6:30","nodeType":"YulIdentifier","src":"5518:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5534:3:30","nodeType":"YulLiteral","src":"5534:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"5539:1:30","nodeType":"YulLiteral","src":"5539:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5530:3:30","nodeType":"YulIdentifier","src":"5530:3:30"},"nativeSrc":"5530:11:30","nodeType":"YulFunctionCall","src":"5530:11:30"},{"kind":"number","nativeSrc":"5543:1:30","nodeType":"YulLiteral","src":"5543:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5526:3:30","nodeType":"YulIdentifier","src":"5526:3:30"},"nativeSrc":"5526:19:30","nodeType":"YulFunctionCall","src":"5526:19:30"}],"functionName":{"name":"and","nativeSrc":"5514:3:30","nodeType":"YulIdentifier","src":"5514:3:30"},"nativeSrc":"5514:32:30","nodeType":"YulFunctionCall","src":"5514:32:30"}],"functionName":{"name":"mstore","nativeSrc":"5496:6:30","nodeType":"YulIdentifier","src":"5496:6:30"},"nativeSrc":"5496:51:30","nodeType":"YulFunctionCall","src":"5496:51:30"},"nativeSrc":"5496:51:30","nodeType":"YulExpressionStatement","src":"5496:51:30"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"5350:203:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5420:9:30","nodeType":"YulTypedName","src":"5420:9:30","type":""},{"name":"value0","nativeSrc":"5431:6:30","nodeType":"YulTypedName","src":"5431:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5442:4:30","nodeType":"YulTypedName","src":"5442:4:30","type":""}],"src":"5350:203:30"},{"body":{"nativeSrc":"5686:144:30","nodeType":"YulBlock","src":"5686:144:30","statements":[{"nativeSrc":"5696:26:30","nodeType":"YulAssignment","src":"5696:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"5708:9:30","nodeType":"YulIdentifier","src":"5708:9:30"},{"kind":"number","nativeSrc":"5719:2:30","nodeType":"YulLiteral","src":"5719:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5704:3:30","nodeType":"YulIdentifier","src":"5704:3:30"},"nativeSrc":"5704:18:30","nodeType":"YulFunctionCall","src":"5704:18:30"},"variableNames":[{"name":"tail","nativeSrc":"5696:4:30","nodeType":"YulIdentifier","src":"5696:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5738:9:30","nodeType":"YulIdentifier","src":"5738:9:30"},{"arguments":[{"name":"value0","nativeSrc":"5753:6:30","nodeType":"YulIdentifier","src":"5753:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5769:2:30","nodeType":"YulLiteral","src":"5769:2:30","type":"","value":"96"},{"kind":"number","nativeSrc":"5773:1:30","nodeType":"YulLiteral","src":"5773:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5765:3:30","nodeType":"YulIdentifier","src":"5765:3:30"},"nativeSrc":"5765:10:30","nodeType":"YulFunctionCall","src":"5765:10:30"},{"kind":"number","nativeSrc":"5777:1:30","nodeType":"YulLiteral","src":"5777:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5761:3:30","nodeType":"YulIdentifier","src":"5761:3:30"},"nativeSrc":"5761:18:30","nodeType":"YulFunctionCall","src":"5761:18:30"}],"functionName":{"name":"and","nativeSrc":"5749:3:30","nodeType":"YulIdentifier","src":"5749:3:30"},"nativeSrc":"5749:31:30","nodeType":"YulFunctionCall","src":"5749:31:30"}],"functionName":{"name":"mstore","nativeSrc":"5731:6:30","nodeType":"YulIdentifier","src":"5731:6:30"},"nativeSrc":"5731:50:30","nodeType":"YulFunctionCall","src":"5731:50:30"},"nativeSrc":"5731:50:30","nodeType":"YulExpressionStatement","src":"5731:50:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5801:9:30","nodeType":"YulIdentifier","src":"5801:9:30"},{"kind":"number","nativeSrc":"5812:2:30","nodeType":"YulLiteral","src":"5812:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5797:3:30","nodeType":"YulIdentifier","src":"5797:3:30"},"nativeSrc":"5797:18:30","nodeType":"YulFunctionCall","src":"5797:18:30"},{"name":"value1","nativeSrc":"5817:6:30","nodeType":"YulIdentifier","src":"5817:6:30"}],"functionName":{"name":"mstore","nativeSrc":"5790:6:30","nodeType":"YulIdentifier","src":"5790:6:30"},"nativeSrc":"5790:34:30","nodeType":"YulFunctionCall","src":"5790:34:30"},"nativeSrc":"5790:34:30","nodeType":"YulExpressionStatement","src":"5790:34:30"}]},"name":"abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"5558:272:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5647:9:30","nodeType":"YulTypedName","src":"5647:9:30","type":""},{"name":"value1","nativeSrc":"5658:6:30","nodeType":"YulTypedName","src":"5658:6:30","type":""},{"name":"value0","nativeSrc":"5666:6:30","nodeType":"YulTypedName","src":"5666:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5677:4:30","nodeType":"YulTypedName","src":"5677:4:30","type":""}],"src":"5558:272:30"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := mload(offset)\n if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, length)\n if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n mcopy(add(memPtr, 0x20), add(offset, 0x20), length)\n mstore(add(add(memPtr, length), 0x20), 0)\n array := memPtr\n }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_uint96_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(96, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_uint48_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, 0xffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint96t_addresst_addresst_uint48_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8\n {\n if slt(sub(dataEnd, headStart), 288) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n let offset_2 := mload(add(headStart, 64))\n if gt(offset_2, sub(shl(64, 1), 1)) { revert(0, 0) }\n value2 := abi_decode_string_fromMemory(add(headStart, offset_2), dataEnd)\n let offset_3 := mload(add(headStart, 96))\n if gt(offset_3, sub(shl(64, 1), 1)) { revert(0, 0) }\n value3 := abi_decode_string_fromMemory(add(headStart, offset_3), dataEnd)\n value4 := abi_decode_address_fromMemory(add(headStart, 128))\n value5 := abi_decode_uint96_fromMemory(add(headStart, 160))\n value6 := abi_decode_address_fromMemory(add(headStart, 192))\n value7 := abi_decode_address_fromMemory(add(headStart, 224))\n value8 := abi_decode_uint48_fromMemory(add(headStart, 256))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _1 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _1) { start := add(start, 1) }\n { sstore(start, 0) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 0x20)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(96, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n}","id":30,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561000f575f80fd5b5060405161295238038061295283398101604081905261002e916103f0565b80838a8a5f61003d8382610580565b50600161004a8282610580565b5050506001600160a01b03811661007b57604051636116401160e11b81525f60048201526024015b60405180910390fd5b600980546001600160d01b0316600160d01b65ffffffffffff8516021790556100a45f82610151565b5050506001600160a01b03851615806100c457506001600160a01b038316155b806100d657506001600160a01b038216155b156100f45760405163d92e233d60e01b815260040160405180910390fd5b600c6101008882610580565b50600d61010d8782610580565b5061011885856101c0565b6101427f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683610151565b5050505050505050505061063a565b5f826101ad575f61016a600a546001600160a01b031690565b6001600160a01b03161461019157604051631fe1e13d60e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0384161790555b6101b78383610262565b90505b92915050565b6127106001600160601b0382168110156101ff57604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610072565b6001600160a01b03831661022857604051635b6cc80560e11b81525f6004820152602401610072565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b5f8281526008602090815260408083206001600160a01b038516845290915281205460ff16610306575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556102be3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101ba565b505f6101ba565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610330575f80fd5b81516001600160401b038111156103495761034961030d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103775761037761030d565b60405281815283820160200185101561038e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146103c0575f80fd5b919050565b80516001600160601b03811681146103c0575f80fd5b805165ffffffffffff811681146103c0575f80fd5b5f805f805f805f805f6101208a8c031215610409575f80fd5b89516001600160401b0381111561041e575f80fd5b61042a8c828d01610321565b60208c0151909a5090506001600160401b03811115610447575f80fd5b6104538c828d01610321565b60408c015190995090506001600160401b03811115610470575f80fd5b61047c8c828d01610321565b60608c015190985090506001600160401b03811115610499575f80fd5b6104a58c828d01610321565b9650506104b460808b016103aa565b94506104c260a08b016103c5565b93506104d060c08b016103aa565b92506104de60e08b016103aa565b91506104ed6101008b016103db565b90509295985092959850929598565b600181811c9082168061051057607f821691505b60208210810361052e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561057b57805f5260205f20601f840160051c810160208510156105595750805b601f840160051c820191505b81811015610578575f8155600101610565565b50505b505050565b81516001600160401b038111156105995761059961030d565b6105ad816105a784546104fc565b84610534565b6020601f8211600181146105df575f83156105c85750848201515b5f19600385901b1c1916600184901b178455610578565b5f84815260208120601f198516915b8281101561060e57878501518255602094850194600190920191016105ee565b508482101561062b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b61230b806106475f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c806370a0823111610140578063a22cb465116100bf578063cf6eefb711610084578063cf6eefb714610503578063d539139314610531578063d547741f14610558578063d602b9fd1461056b578063e8a3d48514610573578063e985e9c51461057b575f80fd5b8063a22cb465146104ba578063b88d4fde146104cd578063c87b56dd146104e0578063cc8463c8146104f3578063cefc1429146104fb575f80fd5b8063938e3d7b11610105578063938e3d7b1461045e57806395d89b4114610471578063a144819414610479578063a1eda53c1461048c578063a217fddf146104b3575f80fd5b806370a08231146104175780638456cb591461042a57806384ef8ffc146104325780638da5cb5b1461044357806391d148541461044b575f80fd5b80632f2ff15d116101cc5780635c975abb116101915780635c975abb146103cb578063634e93da146103d65780636352211e146103e9578063649a5ec7146103fc5780636c0360eb1461040f575f80fd5b80632f2ff15d1461037757806336568abe1461038a5780633f4ba83a1461039d57806342842e0e146103a557806355f804b3146103b8575f80fd5b8063095ea7b311610212578063095ea7b3146102e75780630aa6220b146102fa57806323b872dd14610302578063248a9ca3146103155780632a55205a14610345575f80fd5b806301ffc9a71461024e578063022d63fb1461027657806302fa7c471461029257806306fdde03146102a7578063081812fc146102bc575b5f80fd5b61026161025c366004611ce7565b61058e565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff909116815260200161026d565b6102a56102a0366004611d1d565b61059e565b005b6102af610625565b60405161026d9190611d8b565b6102cf6102ca366004611d9d565b6106b4565b6040516001600160a01b03909116815260200161026d565b6102a56102f5366004611db4565b6106db565b6102a56106ea565b6102a5610310366004611ddc565b6106ff565b610337610323366004611d9d565b5f9081526008602052604090206001015490565b60405190815260200161026d565b610358610353366004611e16565b61078d565b604080516001600160a01b03909316835260208301919091520161026d565b6102a5610385366004611e36565b610810565b6102a5610398366004611e36565b610838565b6102a56108de565b6102a56103b3366004611ddc565b6108f0565b6102a56103c6366004611e60565b61090f565b600b5460ff16610261565b6102a56103e4366004611ece565b6109f8565b6102cf6103f7366004611d9d565b610a0b565b6102a561040a366004611ee7565b610a15565b6102af610a28565b610337610425366004611ece565b610a37565b6102a5610a7c565b600a546001600160a01b03166102cf565b6102cf610a8e565b610261610459366004611e36565b610aa6565b6102a561046c366004611e60565b610ad0565b6102af610bab565b6102a5610487366004611db4565b610bba565b610494610bf6565b6040805165ffffffffffff93841681529290911660208301520161026d565b6103375f81565b6102a56104c8366004611f0c565b610c48565b6102a56104db366004611f4e565b610c53565b6102af6104ee366004611d9d565b610c6b565b61027b610cd0565b6102a5610d2e565b61050b610d6d565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161026d565b6103377f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102a5610566366004611e36565b610d8e565b6102a5610db6565b6102af610dc8565b61026161058936600461202b565b610dd7565b5f61059882610e04565b92915050565b5f6105a881610e28565b6001600160a01b0383166105cf5760405163d92e233d60e01b815260040160405180910390fd5b6105d98383610e32565b6040516001600160601b03831681526001600160a01b038416907fe12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf49060200160405180910390a2505050565b60605f805461063390612053565b80601f016020809104026020016040519081016040528092919081815260200182805461065f90612053565b80156106aa5780601f10610681576101008083540402835291602001916106aa565b820191905f5260205f20905b81548152906001019060200180831161068d57829003601f168201915b5050505050905090565b5f6106be82610ed4565b505f828152600460205260409020546001600160a01b0316610598565b6106e6828233610f0c565b5050565b5f6106f481610e28565b6106fc610f19565b50565b6001600160a01b03821661072d57604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610739838333610f25565b9050836001600160a01b0316816001600160a01b031614610787576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610724565b50505050565b5f82815260076020526040812080548291906001600160a01b03811690600160a01b90046001600160601b0316816107e05750506006546001600160a01b03811690600160a01b90046001600160601b03165b5f6127106107f76001600160601b0384168961209f565b61080191906120b6565b92989297509195505050505050565b8161082e57604051631fe1e13d60e11b815260040160405180910390fd5b6106e68282611017565b811580156108535750600a546001600160a01b038281169116145b156108d4575f80610862610d6d565b90925090506001600160a01b038216151580610884575065ffffffffffff8116155b8061089757504265ffffffffffff821610155b156108bf576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610724565b50506009805465ffffffffffff60a01b191690555b6106e6828261103b565b5f6108e881610e28565b6106fc61106e565b61090a83838360405180602001604052805f815250610c53565b505050565b5f61091981610e28565b5f600c805461092790612053565b80601f016020809104026020016040519081016040528092919081815260200182805461095390612053565b801561099e5780601f106109755761010080835404028352916020019161099e565b820191905f5260205f20905b81548152906001019060200180831161098157829003601f168201915b505050505090508383600c91826109b6929190612119565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc18185856040516109ea939291906121d3565b60405180910390a150505050565b5f610a0281610e28565b6106e6826110c0565b5f61059882610ed4565b5f610a1f81610e28565b6106e682611132565b6060600c805461063390612053565b5f6001600160a01b038216610a61576040516322718ad960e21b81525f6004820152602401610724565b506001600160a01b03165f9081526003602052604090205490565b5f610a8681610e28565b6106fc6111a1565b5f610aa1600a546001600160a01b031690565b905090565b5f9182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610ada81610e28565b5f600d8054610ae890612053565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1490612053565b8015610b5f5780601f10610b3657610100808354040283529160200191610b5f565b820191905f5260205f20905b815481529060010190602001808311610b4257829003601f168201915b505050505090508383600d9182610b77929190612119565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168185856040516109ea939291906121d3565b60606001805461063390612053565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610be481610e28565b610bec6111de565b61090a8383611202565b600a545f90600160d01b900465ffffffffffff168015158015610c2157504265ffffffffffff821610155b610c2c575f80610c40565b600a54600160a01b900465ffffffffffff16815b915091509091565b6106e633838361121b565b610c5e8484846106ff565b61078733858585856112e2565b6060610c7682610ed4565b505f610c80610a28565b90505f815111610c9e5760405180602001604052805f815250610cc9565b80610ca88461140a565b604051602001610cb992919061222e565b6040516020818303038152906040525b9392505050565b600a545f90600160d01b900465ffffffffffff168015158015610cfa57504265ffffffffffff8216105b610d1557600954600160d01b900465ffffffffffff16610d28565b600a54600160a01b900465ffffffffffff165b91505090565b5f610d37610d6d565b509050336001600160a01b03821614610d6557604051636116401160e11b8152336004820152602401610724565b6106fc61149a565b6009546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610dac57604051631fe1e13d60e11b815260040160405180910390fd5b6106e68282611530565b5f610dc081610e28565b6106fc611554565b6060600d805461063390612053565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166318a4c3c360e11b148061059857506105988261155e565b6106fc8133611582565b6127106001600160601b038216811015610e7157604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610724565b6001600160a01b038316610e9a57604051635b6cc80560e11b81525f6004820152602401610724565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b5f818152600260205260408120546001600160a01b03168061059857604051637e27328960e01b815260048101849052602401610724565b61090a83838360016115bb565b610f235f806116bf565b565b5f828152600260205260408120546001600160a01b0390811690831615610f5157610f5181848661177e565b6001600160a01b03811615610f8b57610f6c5f855f806115bb565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615610fb9576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f8281526008602052604090206001015461103181610e28565b61078783836117e2565b6001600160a01b03811633146110645760405163334bd91960e11b815260040160405180910390fd5b61090a8282611848565b611076611884565b600b805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f6110c9610cd0565b6110d2426118a7565b6110dc9190612242565b90506110e882826118dd565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f61113c8261195a565b611145426118a7565b61114f9190612242565b905061115b82826116bf565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6111a96111de565b600b805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110a33390565b600b5460ff1615610f235760405163d93c066560e01b815260040160405180910390fd5b6106e6828260405180602001604052805f8152506119a1565b6001600160a01b0383166112445760405163a9fbf51f60e01b81525f6004820152602401610724565b6001600160a01b03821661127657604051630b61174360e31b81526001600160a01b0383166004820152602401610724565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561140357604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611324908890889087908790600401612260565b6020604051808303815f875af192505050801561135e575060408051601f3d908101601f1916820190925261135b9181019061229c565b60015b6113c5573d80801561138b576040519150601f19603f3d011682016040523d82523d5f602084013e611390565b606091505b5080515f036113bd57604051633250574960e11b81526001600160a01b0385166004820152602401610724565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461140157604051633250574960e11b81526001600160a01b0385166004820152602401610724565b505b5050505050565b60605f611416836119b8565b60010190505f8167ffffffffffffffff81111561143557611435611f3a565b6040519080825280601f01601f19166020018201604052801561145f576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461146957509392505050565b5f806114a4610d6d565b915091506114b98165ffffffffffff16151590565b15806114cd57504265ffffffffffff821610155b156114f5576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610724565b6115105f61150b600a546001600160a01b031690565b611848565b5061151b5f836117e2565b5050600980546001600160d01b031916905550565b5f8281526008602052604090206001015461154a81610e28565b6107878383611848565b610f235f806118dd565b5f6001600160e01b03198216637965db0b60e01b1480610598575061059882611a8f565b61158c8282610aa6565b6106e65760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610724565b80806115cf57506001600160a01b03821615155b15611690575f6115de84610ed4565b90506001600160a01b0383161580159061160a5750826001600160a01b0316816001600160a01b031614155b801561161d575061161b8184610dd7565b155b156116465760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610724565b811561168e5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600a54600160d01b900465ffffffffffff168015611741574265ffffffffffff8216101561171857600a54600980546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611741565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600a80546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b611789838383611ab3565b61090a576001600160a01b0383166117b757604051637e27328960e01b815260048101829052602401610724565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610724565b5f8261183e575f6117fb600a546001600160a01b031690565b6001600160a01b03161461182257604051631fe1e13d60e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0384161790555b610cc98383611b17565b5f821580156118645750600a546001600160a01b038381169116145b1561187a57600a80546001600160a01b03191690555b610cc98383611ba8565b600b5460ff16610f2357604051638dfc202b60e01b815260040160405180910390fd5b5f65ffffffffffff8211156118d9576040516306dfcc6560e41b81526030600482015260248101839052604401610724565b5090565b5f6118e6610d6d565b6009805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b03881617179055915061192890508165ffffffffffff16151590565b1561090a576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a1505050565b5f80611964610cd0565b90508065ffffffffffff168365ffffffffffff161161198c5761198783826122b7565b610cc9565b610cc965ffffffffffff841662069780611c13565b6119ab8383611c22565b61090a335f8585856112e2565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106119f65772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611a22576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611a4057662386f26fc10000830492506010015b6305f5e1008310611a58576305f5e100830492506008015b6127108310611a6c57612710830492506004015b60648310611a7e576064830492506002015b600a83106105985760010192915050565b5f6001600160e01b0319821663152a902d60e11b1480610598575061059882611c83565b5f6001600160a01b03831615801590611b0f5750826001600160a01b0316846001600160a01b03161480611aec5750611aec8484610dd7565b80611b0f57505f828152600460205260409020546001600160a01b038481169116145b949350505050565b5f611b228383610aa6565b611ba1575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611b593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610598565b505f610598565b5f611bb38383610aa6565b15611ba1575f8381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610598565b5f828218828410028218610cc9565b6001600160a01b038216611c4b57604051633250574960e11b81525f6004820152602401610724565b5f611c5783835f610f25565b90506001600160a01b0381161561090a576040516339e3563760e11b81525f6004820152602401610724565b5f6001600160e01b031982166380ac58cd60e01b1480611cb357506001600160e01b03198216635b5e139f60e01b145b8061059857506301ffc9a760e01b6001600160e01b0319831614610598565b6001600160e01b0319811681146106fc575f80fd5b5f60208284031215611cf7575f80fd5b8135610cc981611cd2565b80356001600160a01b0381168114611d18575f80fd5b919050565b5f8060408385031215611d2e575f80fd5b611d3783611d02565b915060208301356001600160601b0381168114611d52575f80fd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cc96020830184611d5d565b5f60208284031215611dad575f80fd5b5035919050565b5f8060408385031215611dc5575f80fd5b611dce83611d02565b946020939093013593505050565b5f805f60608486031215611dee575f80fd5b611df784611d02565b9250611e0560208501611d02565b929592945050506040919091013590565b5f8060408385031215611e27575f80fd5b50508035926020909101359150565b5f8060408385031215611e47575f80fd5b82359150611e5760208401611d02565b90509250929050565b5f8060208385031215611e71575f80fd5b823567ffffffffffffffff811115611e87575f80fd5b8301601f81018513611e97575f80fd5b803567ffffffffffffffff811115611ead575f80fd5b856020828401011115611ebe575f80fd5b6020919091019590945092505050565b5f60208284031215611ede575f80fd5b610cc982611d02565b5f60208284031215611ef7575f80fd5b813565ffffffffffff81168114610cc9575f80fd5b5f8060408385031215611f1d575f80fd5b611f2683611d02565b915060208301358015158114611d52575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215611f61575f80fd5b611f6a85611d02565b9350611f7860208601611d02565b925060408501359150606085013567ffffffffffffffff811115611f9a575f80fd5b8501601f81018713611faa575f80fd5b803567ffffffffffffffff811115611fc457611fc4611f3a565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611ff357611ff3611f3a565b60405281815282820160200189101561200a575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f806040838503121561203c575f80fd5b61204583611d02565b9150611e5760208401611d02565b600181811c9082168061206757607f821691505b60208210810361208557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105985761059861208b565b5f826120d057634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561090a57805f5260205f20601f840160051c810160208510156120fa5750805b601f840160051c820191505b81811015611403575f8155600101612106565b67ffffffffffffffff83111561213157612131611f3a565b6121458361213f8354612053565b836120d5565b5f601f841160018114612176575f851561215f5750838201355b5f19600387901b1c1916600186901b178355611403565b5f83815260208120601f198716915b828110156121a55786850135825560209485019460019092019101612185565b50868210156121c1575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f6121e56040830186611d5d565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f611b0f61223c8386612217565b84612217565b65ffffffffffff81811683821601908111156105985761059861208b565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061229290830184611d5d565b9695505050505050565b5f602082840312156122ac575f80fd5b8151610cc981611cd2565b65ffffffffffff82811682821603908111156105985761059861208b56fea26469706673582212206c61f9cbc8861ecf23317af095dbbbb42c5ff32ed8e4a71b91c7a2a6aa06803564736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2952 CODESIZE SUB DUP1 PUSH2 0x2952 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x3F0 JUMP JUMPDEST DUP1 DUP4 DUP11 DUP11 PUSH0 PUSH2 0x3D DUP4 DUP3 PUSH2 0x580 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x4A DUP3 DUP3 PUSH2 0x580 JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x7B JUMPI PUSH1 0x40 MLOAD PUSH4 0x61164011 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH1 0x1 PUSH1 0xD0 SHL PUSH6 0xFFFFFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0xA4 PUSH0 DUP3 PUSH2 0x151 JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO DUP1 PUSH2 0xC4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO JUMPDEST DUP1 PUSH2 0xD6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO JUMPDEST ISZERO PUSH2 0xF4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xC PUSH2 0x100 DUP9 DUP3 PUSH2 0x580 JUMP JUMPDEST POP PUSH1 0xD PUSH2 0x10D DUP8 DUP3 PUSH2 0x580 JUMP JUMPDEST POP PUSH2 0x118 DUP6 DUP6 PUSH2 0x1C0 JUMP JUMPDEST PUSH2 0x142 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP4 PUSH2 0x151 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP PUSH2 0x63A JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1AD JUMPI PUSH0 PUSH2 0x16A PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1B7 DUP4 DUP4 PUSH2 0x262 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND DUP2 LT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x40 MLOAD PUSH4 0x6F483D09 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x72 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x228 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B6CC805 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x72 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 MUL OR PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x306 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x2BE CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x1BA JUMP JUMPDEST POP PUSH0 PUSH2 0x1BA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x330 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x349 JUMPI PUSH2 0x349 PUSH2 0x30D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x377 JUMPI PUSH2 0x377 PUSH2 0x30D JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x38E JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3C0 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3C0 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3C0 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x409 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x41E JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x42A DUP13 DUP3 DUP14 ADD PUSH2 0x321 JUMP JUMPDEST PUSH1 0x20 DUP13 ADD MLOAD SWAP1 SWAP11 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x447 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x453 DUP13 DUP3 DUP14 ADD PUSH2 0x321 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP1 SWAP10 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x470 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x47C DUP13 DUP3 DUP14 ADD PUSH2 0x321 JUMP JUMPDEST PUSH1 0x60 DUP13 ADD MLOAD SWAP1 SWAP9 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x499 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x4A5 DUP13 DUP3 DUP14 ADD PUSH2 0x321 JUMP JUMPDEST SWAP7 POP POP PUSH2 0x4B4 PUSH1 0x80 DUP12 ADD PUSH2 0x3AA JUMP JUMPDEST SWAP5 POP PUSH2 0x4C2 PUSH1 0xA0 DUP12 ADD PUSH2 0x3C5 JUMP JUMPDEST SWAP4 POP PUSH2 0x4D0 PUSH1 0xC0 DUP12 ADD PUSH2 0x3AA JUMP JUMPDEST SWAP3 POP PUSH2 0x4DE PUSH1 0xE0 DUP12 ADD PUSH2 0x3AA JUMP JUMPDEST SWAP2 POP PUSH2 0x4ED PUSH2 0x100 DUP12 ADD PUSH2 0x3DB JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x510 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x52E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x57B JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x559 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x578 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x565 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x599 JUMPI PUSH2 0x599 PUSH2 0x30D JUMP JUMPDEST PUSH2 0x5AD DUP2 PUSH2 0x5A7 DUP5 SLOAD PUSH2 0x4FC JUMP JUMPDEST DUP5 PUSH2 0x534 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x5DF JUMPI PUSH0 DUP4 ISZERO PUSH2 0x5C8 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x578 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x60E JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x5EE JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x62B JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x230B DUP1 PUSH2 0x647 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x24A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0xBF JUMPI DUP1 PUSH4 0xCF6EEFB7 GT PUSH2 0x84 JUMPI DUP1 PUSH4 0xCF6EEFB7 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0xD602B9FD EQ PUSH2 0x56B JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x573 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x57B JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x4CD JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0xCC8463C8 EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0xCEFC1429 EQ PUSH2 0x4FB JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x938E3D7B GT PUSH2 0x105 JUMPI DUP1 PUSH4 0x938E3D7B EQ PUSH2 0x45E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x471 JUMPI DUP1 PUSH4 0xA1448194 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0xA1EDA53C EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x4B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x84EF8FFC EQ PUSH2 0x432 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x44B JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x1CC JUMPI DUP1 PUSH4 0x5C975ABB GT PUSH2 0x191 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0x634E93DA EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x649A5EC7 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x40F JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0x55F804B3 EQ PUSH2 0x3B8 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x212 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xAA6220B EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x345 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x22D63FB EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x2FA7C47 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2BC JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x261 PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x1CE7 JUMP JUMPDEST PUSH2 0x58E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x69780 JUMPDEST PUSH1 0x40 MLOAD PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x2A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D1D JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2AF PUSH2 0x625 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26D SWAP2 SWAP1 PUSH2 0x1D8B JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x2CA CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9D JUMP JUMPDEST PUSH2 0x6B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x2F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DB4 JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x6EA JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x310 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DDC JUMP JUMPDEST PUSH2 0x6FF JUMP JUMPDEST PUSH2 0x337 PUSH2 0x323 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9D JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x358 PUSH2 0x353 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E16 JUMP JUMPDEST PUSH2 0x78D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x810 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x398 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x838 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x8DE JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DDC JUMP JUMPDEST PUSH2 0x8F0 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x3C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E60 JUMP JUMPDEST PUSH2 0x90F JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0xFF AND PUSH2 0x261 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x3E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ECE JUMP JUMPDEST PUSH2 0x9F8 JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x3F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9D JUMP JUMPDEST PUSH2 0xA0B JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x40A CALLDATASIZE PUSH1 0x4 PUSH2 0x1EE7 JUMP JUMPDEST PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0xA28 JUMP JUMPDEST PUSH2 0x337 PUSH2 0x425 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ECE JUMP JUMPDEST PUSH2 0xA37 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0xA7C JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CF JUMP JUMPDEST PUSH2 0x2CF PUSH2 0xA8E JUMP JUMPDEST PUSH2 0x261 PUSH2 0x459 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0xAA6 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x46C CALLDATASIZE PUSH1 0x4 PUSH2 0x1E60 JUMP JUMPDEST PUSH2 0xAD0 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x487 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DB4 JUMP JUMPDEST PUSH2 0xBBA JUMP JUMPDEST PUSH2 0x494 PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x337 PUSH0 DUP2 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F0C JUMP JUMPDEST PUSH2 0xC48 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x4DB CALLDATASIZE PUSH1 0x4 PUSH2 0x1F4E JUMP JUMPDEST PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0x4EE CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9D JUMP JUMPDEST PUSH2 0xC6B JUMP JUMPDEST PUSH2 0x27B PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x50B PUSH2 0xD6D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x337 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x566 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0xDB6 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0xDC8 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x589 CALLDATASIZE PUSH1 0x4 PUSH2 0x202B JUMP JUMPDEST PUSH2 0xDD7 JUMP JUMPDEST PUSH0 PUSH2 0x598 DUP3 PUSH2 0xE04 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5A8 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5CF JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5D9 DUP4 DUP4 PUSH2 0xE32 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xE12D7D5BDB8218A22277DCA8F854DD4573A1CEA3D3E4808DC567DF9EB1C14BF4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 SLOAD PUSH2 0x633 SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x65F SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6AA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x681 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6AA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x68D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x6BE DUP3 PUSH2 0xED4 JUMP JUMPDEST POP PUSH0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x598 JUMP JUMPDEST PUSH2 0x6E6 DUP3 DUP3 CALLER PUSH2 0xF0C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6F4 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0xF19 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x72D JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x739 DUP4 DUP4 CALLER PUSH2 0xF25 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x787 JUMPI PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x724 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x7E0 JUMPI POP POP PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST PUSH0 PUSH2 0x2710 PUSH2 0x7F7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND DUP10 PUSH2 0x209F JUMP JUMPDEST PUSH2 0x801 SWAP2 SWAP1 PUSH2 0x20B6 JUMP JUMPDEST SWAP3 SWAP9 SWAP3 SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x82E JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6E6 DUP3 DUP3 PUSH2 0x1017 JUMP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI POP PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x8D4 JUMPI PUSH0 DUP1 PUSH2 0x862 PUSH2 0xD6D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x884 JUMPI POP PUSH6 0xFFFFFFFFFFFF DUP2 AND ISZERO JUMPDEST DUP1 PUSH2 0x897 JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x8BF JUMPI PUSH1 0x40 MLOAD PUSH4 0x19CA5EBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST POP POP PUSH1 0x9 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE JUMPDEST PUSH2 0x6E6 DUP3 DUP3 PUSH2 0x103B JUMP JUMPDEST PUSH0 PUSH2 0x8E8 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x106E JUMP JUMPDEST PUSH2 0x90A DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0xC53 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x919 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH0 PUSH1 0xC DUP1 SLOAD PUSH2 0x927 SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x953 SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x99E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x975 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x99E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x981 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 DUP4 PUSH1 0xC SWAP2 DUP3 PUSH2 0x9B6 SWAP3 SWAP2 SWAP1 PUSH2 0x2119 JUMP JUMPDEST POP PUSH32 0x309B29DED109B9E28FB9885757B3E0096EB75C51D23AA4635D68BCD569F6ADC1 DUP2 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9EA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x21D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA02 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6E6 DUP3 PUSH2 0x10C0 JUMP JUMPDEST PUSH0 PUSH2 0x598 DUP3 PUSH2 0xED4 JUMP JUMPDEST PUSH0 PUSH2 0xA1F DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6E6 DUP3 PUSH2 0x1132 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC DUP1 SLOAD PUSH2 0x633 SWAP1 PUSH2 0x2053 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA61 JUMPI PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xA86 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x11A1 JUMP JUMPDEST PUSH0 PUSH2 0xAA1 PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xADA DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH0 PUSH1 0xD DUP1 SLOAD PUSH2 0xAE8 SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xB14 SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB5F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB36 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB5F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB42 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 DUP4 PUSH1 0xD SWAP2 DUP3 PUSH2 0xB77 SWAP3 SWAP2 SWAP1 PUSH2 0x2119 JUMP JUMPDEST POP PUSH32 0xC9C7C3FE08B88B4DF9D4D47EF47D2C43D55C025A0BA88CA442580ED9E7348A16 DUP2 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9EA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x21D3 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x633 SWAP1 PUSH2 0x2053 JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0xBE4 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0xBEC PUSH2 0x11DE JUMP JUMPDEST PUSH2 0x90A DUP4 DUP4 PUSH2 0x1202 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 ISZERO PUSH2 0xC21 JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST PUSH2 0xC2C JUMPI PUSH0 DUP1 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP2 JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x6E6 CALLER DUP4 DUP4 PUSH2 0x121B JUMP JUMPDEST PUSH2 0xC5E DUP5 DUP5 DUP5 PUSH2 0x6FF JUMP JUMPDEST PUSH2 0x787 CALLER DUP6 DUP6 DUP6 DUP6 PUSH2 0x12E2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC76 DUP3 PUSH2 0xED4 JUMP JUMPDEST POP PUSH0 PUSH2 0xC80 PUSH2 0xA28 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 MLOAD GT PUSH2 0xC9E JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0xCC9 JUMP JUMPDEST DUP1 PUSH2 0xCA8 DUP5 PUSH2 0x140A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCB9 SWAP3 SWAP2 SWAP1 PUSH2 0x222E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 ISZERO PUSH2 0xCFA JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT JUMPDEST PUSH2 0xD15 JUMPI PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND PUSH2 0xD28 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xD37 PUSH2 0xD6D JUMP JUMPDEST POP SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0xD65 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61164011 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x149A JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH6 0xFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0xDAC JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6E6 DUP3 DUP3 PUSH2 0x1530 JUMP JUMPDEST PUSH0 PUSH2 0xDC0 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x1554 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xD DUP1 SLOAD PUSH2 0x633 SWAP1 PUSH2 0x2053 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x18A4C3C3 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x598 JUMPI POP PUSH2 0x598 DUP3 PUSH2 0x155E JUMP JUMPDEST PUSH2 0x6FC DUP2 CALLER PUSH2 0x1582 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND DUP2 LT ISZERO PUSH2 0xE71 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6F483D09 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x724 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE9A JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B6CC805 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 MUL OR PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x598 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH2 0x90A DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0xF23 PUSH0 DUP1 PUSH2 0x16BF JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND ISZERO PUSH2 0xF51 JUMPI PUSH2 0xF51 DUP2 DUP5 DUP7 PUSH2 0x177E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xF8B JUMPI PUSH2 0xF6C PUSH0 DUP6 PUSH0 DUP1 PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP8 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x1031 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x787 DUP4 DUP4 PUSH2 0x17E2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x1064 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x90A DUP3 DUP3 PUSH2 0x1848 JUMP JUMPDEST PUSH2 0x1076 PUSH2 0x1884 JUMP JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH0 PUSH2 0x10C9 PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x10D2 TIMESTAMP PUSH2 0x18A7 JUMP JUMPDEST PUSH2 0x10DC SWAP2 SWAP1 PUSH2 0x2242 JUMP JUMPDEST SWAP1 POP PUSH2 0x10E8 DUP3 DUP3 PUSH2 0x18DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x3377DC44241E779DD06AFAB5B788A35CA5F3B778836E2990BDB26A2A4B2E5ED6 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x113C DUP3 PUSH2 0x195A JUMP JUMPDEST PUSH2 0x1145 TIMESTAMP PUSH2 0x18A7 JUMP JUMPDEST PUSH2 0x114F SWAP2 SWAP1 PUSH2 0x2242 JUMP JUMPDEST SWAP1 POP PUSH2 0x115B DUP3 DUP3 PUSH2 0x16BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xF1038C18CF84A56E432FDBFAF746924B7EA511DFE03A6506A0CEBA4888788D9B SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x11A9 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x10A3 CALLER SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xF23 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6E6 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0x19A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1244 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1276 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x1403 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1324 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2260 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x135E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x135B SWAP2 DUP2 ADD SWAP1 PUSH2 0x229C JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x13C5 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x138B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1390 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH0 SUB PUSH2 0x13BD JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0x1401 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x1416 DUP4 PUSH2 0x19B8 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1435 JUMPI PUSH2 0x1435 PUSH2 0x1F3A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x145F JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0x1469 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x14A4 PUSH2 0xD6D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x14B9 DUP2 PUSH6 0xFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO DUP1 PUSH2 0x14CD JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x14F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x19CA5EBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH2 0x1510 PUSH0 PUSH2 0x150B PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1848 JUMP JUMPDEST POP PUSH2 0x151B PUSH0 DUP4 PUSH2 0x17E2 JUMP JUMPDEST POP POP PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x154A DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x787 DUP4 DUP4 PUSH2 0x1848 JUMP JUMPDEST PUSH2 0xF23 PUSH0 DUP1 PUSH2 0x18DD JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x598 JUMPI POP PUSH2 0x598 DUP3 PUSH2 0x1A8F JUMP JUMPDEST PUSH2 0x158C DUP3 DUP3 PUSH2 0xAA6 JUMP JUMPDEST PUSH2 0x6E6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x724 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x15CF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1690 JUMPI PUSH0 PUSH2 0x15DE DUP5 PUSH2 0xED4 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x160A JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x161D JUMPI POP PUSH2 0x161B DUP2 DUP5 PUSH2 0xDD7 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1646 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x168E JUMPI DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0x1741 JUMPI TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO PUSH2 0x1718 JUMPI PUSH1 0xA SLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV PUSH6 0xFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xD0 SHL MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1741 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2B1FA2EDAFE6F7B9E97C1A9E0C3660E645BEB2DCAA2D45BDBF9BEAF5472E1EC5 SWAP1 PUSH0 SWAP1 LOG1 JUMPDEST POP PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH6 0xFFFFFFFFFFFF SWAP5 DUP6 AND MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND OR PUSH1 0x1 PUSH1 0xD0 SHL SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1789 DUP4 DUP4 DUP4 PUSH2 0x1AB3 JUMP JUMPDEST PUSH2 0x90A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x17B7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x724 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x183E JUMPI PUSH0 PUSH2 0x17FB PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1822 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0xCC9 DUP4 DUP4 PUSH2 0x1B17 JUMP JUMPDEST PUSH0 DUP3 ISZERO DUP1 ISZERO PUSH2 0x1864 JUMPI POP PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x187A JUMPI PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMPDEST PUSH2 0xCC9 DUP4 DUP4 PUSH2 0x1BA8 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0xFF AND PUSH2 0xF23 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x18D9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x30 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x724 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x18E6 PUSH2 0xD6D JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF DUP7 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND OR OR SWAP1 SSTORE SWAP2 POP PUSH2 0x1928 SWAP1 POP DUP2 PUSH6 0xFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x90A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8886EBFC4259ABDBC16601DD8FB5678E54878F47B3C34836CFC51154A9605109 SWAP1 PUSH0 SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1964 PUSH2 0xCD0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH6 0xFFFFFFFFFFFF AND DUP4 PUSH6 0xFFFFFFFFFFFF AND GT PUSH2 0x198C JUMPI PUSH2 0x1987 DUP4 DUP3 PUSH2 0x22B7 JUMP JUMPDEST PUSH2 0xCC9 JUMP JUMPDEST PUSH2 0xCC9 PUSH6 0xFFFFFFFFFFFF DUP5 AND PUSH3 0x69780 PUSH2 0x1C13 JUMP JUMPDEST PUSH2 0x19AB DUP4 DUP4 PUSH2 0x1C22 JUMP JUMPDEST PUSH2 0x90A CALLER PUSH0 DUP6 DUP6 DUP6 PUSH2 0x12E2 JUMP JUMPDEST PUSH0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0x19F6 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1A22 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1A40 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1A58 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x1A6C JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1A7E JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x598 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x152A902D PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x598 JUMPI POP PUSH2 0x598 DUP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1B0F JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1AEC JUMPI POP PUSH2 0x1AEC DUP5 DUP5 PUSH2 0xDD7 JUMP JUMPDEST DUP1 PUSH2 0x1B0F JUMPI POP PUSH0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1B22 DUP4 DUP4 PUSH2 0xAA6 JUMP JUMPDEST PUSH2 0x1BA1 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x1B59 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x598 JUMP JUMPDEST POP PUSH0 PUSH2 0x598 JUMP JUMPDEST PUSH0 PUSH2 0x1BB3 DUP4 DUP4 PUSH2 0xAA6 JUMP JUMPDEST ISZERO PUSH2 0x1BA1 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP7 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x598 JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xCC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C4B JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH0 PUSH2 0x1C57 DUP4 DUP4 PUSH0 PUSH2 0xF25 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x90A JUMPI PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x1CB3 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x598 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6FC JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1CF7 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCC9 DUP2 PUSH2 0x1CD2 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1D18 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D2E JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1D37 DUP4 PUSH2 0x1D02 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1D52 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xCC9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1D5D JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DAD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DC5 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1DCE DUP4 PUSH2 0x1D02 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1DEE JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1DF7 DUP5 PUSH2 0x1D02 JUMP JUMPDEST SWAP3 POP PUSH2 0x1E05 PUSH1 0x20 DUP6 ADD PUSH2 0x1D02 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E27 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E47 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x1E57 PUSH1 0x20 DUP5 ADD PUSH2 0x1D02 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E71 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E87 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1E97 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1EAD JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x1EBE JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EDE JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xCC9 DUP3 PUSH2 0x1D02 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EF7 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xCC9 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F1D JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1F26 DUP4 PUSH2 0x1D02 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1D52 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1F61 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1F6A DUP6 PUSH2 0x1D02 JUMP JUMPDEST SWAP4 POP PUSH2 0x1F78 PUSH1 0x20 DUP7 ADD PUSH2 0x1D02 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F9A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x1FAA JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FC4 JUMPI PUSH2 0x1FC4 PUSH2 0x1F3A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FF3 JUMPI PUSH2 0x1FF3 PUSH2 0x1F3A JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP10 LT ISZERO PUSH2 0x200A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x203C JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x2045 DUP4 PUSH2 0x1D02 JUMP JUMPDEST SWAP2 POP PUSH2 0x1E57 PUSH1 0x20 DUP5 ADD PUSH2 0x1D02 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2067 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2085 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x598 JUMPI PUSH2 0x598 PUSH2 0x208B JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x20D0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x90A JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x20FA JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1403 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2106 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x2131 JUMPI PUSH2 0x2131 PUSH2 0x1F3A JUMP JUMPDEST PUSH2 0x2145 DUP4 PUSH2 0x213F DUP4 SLOAD PUSH2 0x2053 JUMP JUMPDEST DUP4 PUSH2 0x20D5 JUMP JUMPDEST PUSH0 PUSH1 0x1F DUP5 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2176 JUMPI PUSH0 DUP6 ISZERO PUSH2 0x215F JUMPI POP DUP4 DUP3 ADD CALLDATALOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP7 SWAP1 SHL OR DUP4 SSTORE PUSH2 0x1403 JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP8 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x21A5 JUMPI DUP7 DUP6 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2185 JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x21C1 JUMPI PUSH0 NOT PUSH1 0xF8 DUP9 PUSH1 0x3 SHL AND SHR NOT DUP5 DUP8 ADD CALLDATALOAD AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP6 PUSH1 0x1 SHL ADD DUP4 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x21E5 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x1D5D JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE DUP4 DUP2 MSTORE DUP4 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP7 ADD AND DUP3 ADD ADD SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 PUSH1 0x20 DUP5 ADD DUP6 MCOPY PUSH0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1B0F PUSH2 0x223C DUP4 DUP7 PUSH2 0x2217 JUMP JUMPDEST DUP5 PUSH2 0x2217 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x598 JUMPI PUSH2 0x598 PUSH2 0x208B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x2292 SWAP1 DUP4 ADD DUP5 PUSH2 0x1D5D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22AC JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCC9 DUP2 PUSH2 0x1CD2 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x598 JUMPI PUSH2 0x598 PUSH2 0x208B JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH13 0x61F9CBC8861ECF23317AF095DB 0xBB 0xB4 0x2C PUSH0 RETURN 0x2E 0xD8 0xE4 0xA7 SHL SWAP2 0xC7 LOG2 0xA6 0xAA MOD DUP1 CALLDATALOAD PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"678:6691:27:-:0;;;2863:780;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3242:18;3262:13;3195:5;3202:7;1446:5:9;:13;3195:5:27;1446::9;:13;:::i;:::-;-1:-1:-1;1469:7:9;:17;1479:7;1469;:17;:::i;:::-;-1:-1:-1;;;;;;;;2540:33:4;;2536:115;;2596:44;;-1:-1:-1;;;2596:44:4;;2637:1;2596:44;;;5496:51:30;5469:18;;2596:44:4;;;;;;;;2536:115;2660:13;:28;;-1:-1:-1;;;;;2660:28:4;-1:-1:-1;;;2660:28:4;;;;;;;2698:51;-1:-1:-1;2729:19:4;2698:10;:51::i;:::-;-1:-1:-1;;;;;;;;3291:30:27;::::2;::::0;;:61:::2;;-1:-1:-1::0;;;;;;3325:27:27;::::2;::::0;3291:61:::2;:93;;;-1:-1:-1::0;;;;;;3356:28:27;::::2;::::0;3291:93:::2;3287:144;;;3407:13;;-1:-1:-1::0;;;3407:13:27::2;;;;;;;;;;;3287:144;3440:13;:24;3456:8:::0;3440:13;:24:::2;:::i;:::-;-1:-1:-1::0;3474:20:27::2;:43;3497:20:::0;3474;:43:::2;:::i;:::-;-1:-1:-1::0;3527:60:27::2;3546:16:::0;3564:22;3527:18:::2;:60::i;:::-;3597:39;1054:24;3621:14:::0;3597:10:::2;:39::i;:::-;;2863:780:::0;;;;;;;;;678:6691;;5611:370:4;5697:4;5717;5713:214;;5789:1;5763:14;6846:20;;-1:-1:-1;;;;;6846:20:4;;6767:106;5763:14;-1:-1:-1;;;;;5763:28:4;;5759:114;;5818:40;;-1:-1:-1;;;5818:40:4;;;;;;;;;;;5759:114;5886:20;:30;;-1:-1:-1;;;;;;5886:30:4;-1:-1:-1;;;;;5886:30:4;;;;;5713:214;5943:31;5960:4;5966:7;5943:16;:31::i;:::-;5936:38;;5611:370;;;;;:::o;3618:507:14:-;3345:5;-1:-1:-1;;;;;3765:26:14;;;-1:-1:-1;3761:173:14;;;3868:55;;-1:-1:-1;;;3868:55:14;;-1:-1:-1;;;;;5749:31:30;;3868:55:14;;;5731:50:30;5797:18;;;5790:34;;;5704:18;;3868:55:14;5558:272:30;3761:173:14;-1:-1:-1;;;;;3947:22:14;;3943:108;;3992:48;;-1:-1:-1;;;3992:48:14;;4037:1;3992:48;;;5496:51:30;5469:18;;3992:48:14;5350:203:30;3943:108:14;-1:-1:-1;4083:35:14;;;;;;;;;-1:-1:-1;;;;;4083:35:14;;;;;;-1:-1:-1;;;;;4083:35:14;;;;;;;;;;-1:-1:-1;;;4061:57:14;;;;:19;:57;3618:507::o;6145:316:0:-;6222:4;2920:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;2920:29:0;;;;;;;;;;;;6238:217;;6281:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6281:29:0;;;;;;;;;:36;;-1:-1:-1;;6281:36:0;6313:4;6281:36;;;6363:12;735:10:16;;656:96;6363:12:0;-1:-1:-1;;;;;6336:40:0;6354:7;-1:-1:-1;;;;;6336:40:0;6348:4;6336:40;;;;;;;;;;-1:-1:-1;6397:4:0;6390:11;;6238:217;-1:-1:-1;6439:5:0;6432:12;;14:127:30;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:30;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:30;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:30;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:30;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:30:o;874:177::-;953:13;;-1:-1:-1;;;;;995:31:30;;985:42;;975:70;;1041:1;1038;1031:12;975:70;874:177;;;:::o;1056:175::-;1134:13;;-1:-1:-1;;;;;1176:30:30;;1166:41;;1156:69;;1221:1;1218;1211:12;1236:171;1314:13;;1367:14;1356:26;;1346:37;;1336:65;;1397:1;1394;1387:12;1412:1424;1592:6;1600;1608;1616;1624;1632;1640;1648;1656;1709:3;1697:9;1688:7;1684:23;1680:33;1677:53;;;1726:1;1723;1716:12;1677:53;1753:16;;-1:-1:-1;;;;;1781:30:30;;1778:50;;;1824:1;1821;1814:12;1778:50;1847:61;1900:7;1891:6;1880:9;1876:22;1847:61;:::i;:::-;1954:2;1939:18;;1933:25;1837:71;;-1:-1:-1;1933:25:30;-1:-1:-1;;;;;;1970:32:30;;1967:52;;;2015:1;2012;2005:12;1967:52;2038:63;2093:7;2082:8;2071:9;2067:24;2038:63;:::i;:::-;2147:2;2132:18;;2126:25;2028:73;;-1:-1:-1;2126:25:30;-1:-1:-1;;;;;;2163:32:30;;2160:52;;;2208:1;2205;2198:12;2160:52;2231:63;2286:7;2275:8;2264:9;2260:24;2231:63;:::i;:::-;2340:2;2325:18;;2319:25;2221:73;;-1:-1:-1;2319:25:30;-1:-1:-1;;;;;;2356:32:30;;2353:52;;;2401:1;2398;2391:12;2353:52;2424:63;2479:7;2468:8;2457:9;2453:24;2424:63;:::i;:::-;2414:73;;;2506:50;2551:3;2540:9;2536:19;2506:50;:::i;:::-;2496:60;;2575:49;2619:3;2608:9;2604:19;2575:49;:::i;:::-;2565:59;;2643:50;2688:3;2677:9;2673:19;2643:50;:::i;:::-;2633:60;;2712:50;2757:3;2746:9;2742:19;2712:50;:::i;:::-;2702:60;;2781:49;2825:3;2814:9;2810:19;2781:49;:::i;:::-;2771:59;;1412:1424;;;;;;;;;;;:::o;2841:380::-;2920:1;2916:12;;;;2963;;;2984:61;;3038:4;3030:6;3026:17;3016:27;;2984:61;3091:2;3083:6;3080:14;3060:18;3057:38;3054:161;;3137:10;3132:3;3128:20;3125:1;3118:31;3172:4;3169:1;3162:15;3200:4;3197:1;3190:15;3054:161;;2841:380;;;:::o;3352:518::-;3454:2;3449:3;3446:11;3443:421;;;3490:5;3487:1;3480:16;3534:4;3531:1;3521:18;3604:2;3592:10;3588:19;3585:1;3581:27;3575:4;3571:38;3640:4;3628:10;3625:20;3622:47;;;-1:-1:-1;3663:4:30;3622:47;3718:2;3713:3;3709:12;3706:1;3702:20;3696:4;3692:31;3682:41;;3773:81;3791:2;3784:5;3781:13;3773:81;;;3850:1;3836:16;;3817:1;3806:13;3773:81;;;3777:3;;3443:421;3352:518;;;:::o;4046:1299::-;4166:10;;-1:-1:-1;;;;;4188:30:30;;4185:56;;;4221:18;;:::i;:::-;4250:97;4340:6;4300:38;4332:4;4326:11;4300:38;:::i;:::-;4294:4;4250:97;:::i;:::-;4396:4;4427:2;4416:14;;4444:1;4439:649;;;;5132:1;5149:6;5146:89;;;-1:-1:-1;5201:19:30;;;5195:26;5146:89;-1:-1:-1;;4003:1:30;3999:11;;;3995:24;3991:29;3981:40;4027:1;4023:11;;;3978:57;5248:81;;4409:930;;4439:649;3299:1;3292:14;;;3336:4;3323:18;;-1:-1:-1;;4475:20:30;;;4593:222;4607:7;4604:1;4601:14;4593:222;;;4689:19;;;4683:26;4668:42;;4796:4;4781:20;;;;4749:1;4737:14;;;;4623:12;4593:222;;;4597:3;4843:6;4834:7;4831:19;4828:201;;;4904:19;;;4898:26;-1:-1:-1;;4987:1:30;4983:14;;;4999:3;4979:24;4975:37;4971:42;4956:58;4941:74;;4828:201;-1:-1:-1;;;;5075:1:30;5059:14;;;5055:22;5042:36;;-1:-1:-1;4046:1299:30:o;5558:272::-;678:6691:27;;;;;;"},"deployedBytecode":{"functionDebugData":{"@DEFAULT_ADMIN_ROLE_29":{"entryPoint":null,"id":29,"parameterSlots":0,"returnSlots":0},"@MINTER_ROLE_9437":{"entryPoint":null,"id":9437,"parameterSlots":0,"returnSlots":0},"@_acceptDefaultAdminTransfer_1139":{"entryPoint":5274,"id":1139,"parameterSlots":0,"returnSlots":0},"@_approve_2421":{"entryPoint":3852,"id":2421,"parameterSlots":3,"returnSlots":0},"@_approve_2487":{"entryPoint":5563,"id":2487,"parameterSlots":4,"returnSlots":0},"@_baseURI_9683":{"entryPoint":null,"id":9683,"parameterSlots":0,"returnSlots":1},"@_beginDefaultAdminTransfer_1047":{"entryPoint":4288,"id":1047,"parameterSlots":1,"returnSlots":0},"@_cancelDefaultAdminTransfer_1071":{"entryPoint":5460,"id":1071,"parameterSlots":0,"returnSlots":0},"@_changeDefaultAdminDelay_1182":{"entryPoint":4402,"id":1182,"parameterSlots":1,"returnSlots":0},"@_checkAuthorized_2061":{"entryPoint":6014,"id":2061,"parameterSlots":3,"returnSlots":0},"@_checkRole_114":{"entryPoint":5506,"id":114,"parameterSlots":2,"returnSlots":0},"@_checkRole_93":{"entryPoint":3624,"id":93,"parameterSlots":1,"returnSlots":0},"@_delayChangeWait_1234":{"entryPoint":6490,"id":1234,"parameterSlots":1,"returnSlots":1},"@_feeDenominator_2957":{"entryPoint":null,"id":2957,"parameterSlots":0,"returnSlots":1},"@_getApproved_1988":{"entryPoint":null,"id":1988,"parameterSlots":1,"returnSlots":1},"@_grantRole_256":{"entryPoint":6935,"id":256,"parameterSlots":2,"returnSlots":1},"@_grantRole_865":{"entryPoint":6114,"id":865,"parameterSlots":2,"returnSlots":1},"@_hasSchedulePassed_1330":{"entryPoint":null,"id":1330,"parameterSlots":1,"returnSlots":1},"@_isAuthorized_2024":{"entryPoint":6835,"id":2024,"parameterSlots":3,"returnSlots":1},"@_isScheduleSet_1316":{"entryPoint":null,"id":1316,"parameterSlots":1,"returnSlots":1},"@_mint_2217":{"entryPoint":7202,"id":2217,"parameterSlots":2,"returnSlots":0},"@_msgSender_3889":{"entryPoint":null,"id":3889,"parameterSlots":0,"returnSlots":1},"@_ownerOf_1975":{"entryPoint":null,"id":1975,"parameterSlots":1,"returnSlots":1},"@_pause_4050":{"entryPoint":4513,"id":4050,"parameterSlots":0,"returnSlots":0},"@_requireNotPaused_4021":{"entryPoint":4574,"id":4021,"parameterSlots":0,"returnSlots":0},"@_requireOwned_2568":{"entryPoint":3796,"id":2568,"parameterSlots":1,"returnSlots":1},"@_requirePaused_4034":{"entryPoint":6276,"id":4034,"parameterSlots":0,"returnSlots":0},"@_revokeRole_294":{"entryPoint":7080,"id":294,"parameterSlots":2,"returnSlots":1},"@_revokeRole_896":{"entryPoint":6216,"id":896,"parameterSlots":2,"returnSlots":1},"@_rollbackDefaultAdminDelay_1203":{"entryPoint":3865,"id":1203,"parameterSlots":0,"returnSlots":0},"@_safeMint_2232":{"entryPoint":4610,"id":2232,"parameterSlots":2,"returnSlots":0},"@_safeMint_2262":{"entryPoint":6561,"id":2262,"parameterSlots":3,"returnSlots":0},"@_setApprovalForAll_2539":{"entryPoint":4635,"id":2539,"parameterSlots":3,"returnSlots":0},"@_setDefaultRoyalty_3003":{"entryPoint":3634,"id":3003,"parameterSlots":2,"returnSlots":0},"@_setPendingDefaultAdmin_1264":{"entryPoint":6365,"id":1264,"parameterSlots":2,"returnSlots":0},"@_setPendingDelay_1303":{"entryPoint":5823,"id":1303,"parameterSlots":2,"returnSlots":0},"@_unpause_4066":{"entryPoint":4206,"id":4066,"parameterSlots":0,"returnSlots":0},"@_update_2167":{"entryPoint":3877,"id":2167,"parameterSlots":3,"returnSlots":1},"@acceptDefaultAdminTransfer_1095":{"entryPoint":3374,"id":1095,"parameterSlots":0,"returnSlots":0},"@approve_1818":{"entryPoint":1755,"id":1818,"parameterSlots":2,"returnSlots":0},"@balanceOf_1726":{"entryPoint":2615,"id":1726,"parameterSlots":1,"returnSlots":1},"@baseURI_9673":{"entryPoint":2600,"id":9673,"parameterSlots":0,"returnSlots":1},"@beginDefaultAdminTransfer_1019":{"entryPoint":2552,"id":1019,"parameterSlots":1,"returnSlots":0},"@cancelDefaultAdminTransfer_1058":{"entryPoint":3510,"id":1058,"parameterSlots":0,"returnSlots":0},"@changeDefaultAdminDelay_1153":{"entryPoint":2581,"id":1153,"parameterSlots":1,"returnSlots":0},"@checkOnERC721Received_2808":{"entryPoint":4834,"id":2808,"parameterSlots":5,"returnSlots":0},"@contractURI_9664":{"entryPoint":3528,"id":9664,"parameterSlots":0,"returnSlots":1},"@defaultAdminDelayIncreaseWait_1005":{"entryPoint":null,"id":1005,"parameterSlots":0,"returnSlots":1},"@defaultAdminDelay_966":{"entryPoint":3280,"id":966,"parameterSlots":0,"returnSlots":1},"@defaultAdmin_930":{"entryPoint":null,"id":930,"parameterSlots":0,"returnSlots":1},"@getApproved_1835":{"entryPoint":1716,"id":1835,"parameterSlots":1,"returnSlots":1},"@getRoleAdmin_128":{"entryPoint":null,"id":128,"parameterSlots":1,"returnSlots":1},"@grantRole_147":{"entryPoint":4119,"id":147,"parameterSlots":2,"returnSlots":0},"@grantRole_738":{"entryPoint":2064,"id":738,"parameterSlots":2,"returnSlots":0},"@hasRole_80":{"entryPoint":2726,"id":80,"parameterSlots":2,"returnSlots":1},"@isApprovedForAll_1868":{"entryPoint":3543,"id":1868,"parameterSlots":2,"returnSlots":1},"@log10_7318":{"entryPoint":6584,"id":7318,"parameterSlots":1,"returnSlots":1},"@min_6177":{"entryPoint":7187,"id":6177,"parameterSlots":2,"returnSlots":1},"@name_1748":{"entryPoint":1573,"id":1748,"parameterSlots":0,"returnSlots":1},"@ownerOf_1739":{"entryPoint":2571,"id":1739,"parameterSlots":1,"returnSlots":1},"@owner_711":{"entryPoint":2702,"id":711,"parameterSlots":0,"returnSlots":1},"@pause_9644":{"entryPoint":2684,"id":9644,"parameterSlots":0,"returnSlots":0},"@paused_4009":{"entryPoint":null,"id":4009,"parameterSlots":0,"returnSlots":1},"@pendingDefaultAdminDelay_996":{"entryPoint":3062,"id":996,"parameterSlots":0,"returnSlots":2},"@pendingDefaultAdmin_943":{"entryPoint":3437,"id":943,"parameterSlots":0,"returnSlots":2},"@renounceRole_189":{"entryPoint":4155,"id":189,"parameterSlots":2,"returnSlots":0},"@renounceRole_826":{"entryPoint":2104,"id":826,"parameterSlots":2,"returnSlots":0},"@revokeRole_166":{"entryPoint":5424,"id":166,"parameterSlots":2,"returnSlots":0},"@revokeRole_765":{"entryPoint":3470,"id":765,"parameterSlots":2,"returnSlots":0},"@rollbackDefaultAdminDelay_1193":{"entryPoint":1770,"id":1193,"parameterSlots":0,"returnSlots":0},"@royaltyInfo_2948":{"entryPoint":1933,"id":2948,"parameterSlots":2,"returnSlots":2},"@safeMint_9555":{"entryPoint":3002,"id":9555,"parameterSlots":2,"returnSlots":0},"@safeTransferFrom_1932":{"entryPoint":2288,"id":1932,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_1962":{"entryPoint":3155,"id":1962,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_1851":{"entryPoint":3144,"id":1851,"parameterSlots":2,"returnSlots":0},"@setBaseURI_9578":{"entryPoint":2319,"id":9578,"parameterSlots":2,"returnSlots":0},"@setContractURI_9601":{"entryPoint":2768,"id":9601,"parameterSlots":2,"returnSlots":0},"@setRoyaltyInfo_9633":{"entryPoint":1438,"id":9633,"parameterSlots":2,"returnSlots":0},"@supportsInterface_1698":{"entryPoint":7299,"id":1698,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2886":{"entryPoint":6799,"id":2886,"parameterSlots":1,"returnSlots":1},"@supportsInterface_5837":{"entryPoint":null,"id":5837,"parameterSlots":1,"returnSlots":1},"@supportsInterface_62":{"entryPoint":5470,"id":62,"parameterSlots":1,"returnSlots":1},"@supportsInterface_701":{"entryPoint":3588,"id":701,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9701":{"entryPoint":1422,"id":9701,"parameterSlots":1,"returnSlots":1},"@symbol_1757":{"entryPoint":2987,"id":1757,"parameterSlots":0,"returnSlots":1},"@ternary_6139":{"entryPoint":null,"id":6139,"parameterSlots":3,"returnSlots":1},"@toString_4397":{"entryPoint":5130,"id":4397,"parameterSlots":1,"returnSlots":1},"@toUint48_8262":{"entryPoint":6311,"id":8262,"parameterSlots":1,"returnSlots":1},"@toUint_9271":{"entryPoint":null,"id":9271,"parameterSlots":1,"returnSlots":1},"@tokenURI_1793":{"entryPoint":3179,"id":1793,"parameterSlots":1,"returnSlots":1},"@transferFrom_1914":{"entryPoint":1791,"id":1914,"parameterSlots":3,"returnSlots":0},"@unpause_9655":{"entryPoint":2270,"id":9655,"parameterSlots":0,"returnSlots":0},"abi_decode_address":{"entryPoint":7426,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":7886,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":8235,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":7644,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":8014,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":7948,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":7604,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint96":{"entryPoint":7453,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":7734,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":7399,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":8860,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_calldata_ptr":{"entryPoint":7776,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":7581,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_uint256":{"entryPoint":7702,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint48":{"entryPoint":7911,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":8727,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":7517,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":8750,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":8800,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint48__to_t_address_t_uint48__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7563,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8659,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint48__to_t_uint48__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint48_t_uint48__to_t_uint48_t_uint48__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint96__to_t_uint96__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint48":{"entryPoint":8770,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":8374,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":8351,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint48":{"entryPoint":8887,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":8405,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage":{"entryPoint":8473,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":8275,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":8331,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":7994,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":7378,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:14817:30","nodeType":"YulBlock","src":"0:14817:30","statements":[{"nativeSrc":"6:3:30","nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nativeSrc":"58:87:30","nodeType":"YulBlock","src":"58:87:30","statements":[{"body":{"nativeSrc":"123:16:30","nodeType":"YulBlock","src":"123:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:30","nodeType":"YulLiteral","src":"132:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:30","nodeType":"YulLiteral","src":"135:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:30","nodeType":"YulIdentifier","src":"125:6:30"},"nativeSrc":"125:12:30","nodeType":"YulFunctionCall","src":"125:12:30"},"nativeSrc":"125:12:30","nodeType":"YulExpressionStatement","src":"125:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"81:5:30","nodeType":"YulIdentifier","src":"81:5:30"},{"arguments":[{"name":"value","nativeSrc":"92:5:30","nodeType":"YulIdentifier","src":"92:5:30"},{"arguments":[{"kind":"number","nativeSrc":"103:3:30","nodeType":"YulLiteral","src":"103:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"108:10:30","nodeType":"YulLiteral","src":"108:10:30","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"99:3:30","nodeType":"YulIdentifier","src":"99:3:30"},"nativeSrc":"99:20:30","nodeType":"YulFunctionCall","src":"99:20:30"}],"functionName":{"name":"and","nativeSrc":"88:3:30","nodeType":"YulIdentifier","src":"88:3:30"},"nativeSrc":"88:32:30","nodeType":"YulFunctionCall","src":"88:32:30"}],"functionName":{"name":"eq","nativeSrc":"78:2:30","nodeType":"YulIdentifier","src":"78:2:30"},"nativeSrc":"78:43:30","nodeType":"YulFunctionCall","src":"78:43:30"}],"functionName":{"name":"iszero","nativeSrc":"71:6:30","nodeType":"YulIdentifier","src":"71:6:30"},"nativeSrc":"71:51:30","nodeType":"YulFunctionCall","src":"71:51:30"},"nativeSrc":"68:71:30","nodeType":"YulIf","src":"68:71:30"}]},"name":"validator_revert_bytes4","nativeSrc":"14:131:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"47:5:30","nodeType":"YulTypedName","src":"47:5:30","type":""}],"src":"14:131:30"},{"body":{"nativeSrc":"219:176:30","nodeType":"YulBlock","src":"219:176:30","statements":[{"body":{"nativeSrc":"265:16:30","nodeType":"YulBlock","src":"265:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"274:1:30","nodeType":"YulLiteral","src":"274:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"277:1:30","nodeType":"YulLiteral","src":"277:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"267:6:30","nodeType":"YulIdentifier","src":"267:6:30"},"nativeSrc":"267:12:30","nodeType":"YulFunctionCall","src":"267:12:30"},"nativeSrc":"267:12:30","nodeType":"YulExpressionStatement","src":"267:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"240:7:30","nodeType":"YulIdentifier","src":"240:7:30"},{"name":"headStart","nativeSrc":"249:9:30","nodeType":"YulIdentifier","src":"249:9:30"}],"functionName":{"name":"sub","nativeSrc":"236:3:30","nodeType":"YulIdentifier","src":"236:3:30"},"nativeSrc":"236:23:30","nodeType":"YulFunctionCall","src":"236:23:30"},{"kind":"number","nativeSrc":"261:2:30","nodeType":"YulLiteral","src":"261:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"232:3:30","nodeType":"YulIdentifier","src":"232:3:30"},"nativeSrc":"232:32:30","nodeType":"YulFunctionCall","src":"232:32:30"},"nativeSrc":"229:52:30","nodeType":"YulIf","src":"229:52:30"},{"nativeSrc":"290:36:30","nodeType":"YulVariableDeclaration","src":"290:36:30","value":{"arguments":[{"name":"headStart","nativeSrc":"316:9:30","nodeType":"YulIdentifier","src":"316:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"303:12:30","nodeType":"YulIdentifier","src":"303:12:30"},"nativeSrc":"303:23:30","nodeType":"YulFunctionCall","src":"303:23:30"},"variables":[{"name":"value","nativeSrc":"294:5:30","nodeType":"YulTypedName","src":"294:5:30","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"359:5:30","nodeType":"YulIdentifier","src":"359:5:30"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"335:23:30","nodeType":"YulIdentifier","src":"335:23:30"},"nativeSrc":"335:30:30","nodeType":"YulFunctionCall","src":"335:30:30"},"nativeSrc":"335:30:30","nodeType":"YulExpressionStatement","src":"335:30:30"},{"nativeSrc":"374:15:30","nodeType":"YulAssignment","src":"374:15:30","value":{"name":"value","nativeSrc":"384:5:30","nodeType":"YulIdentifier","src":"384:5:30"},"variableNames":[{"name":"value0","nativeSrc":"374:6:30","nodeType":"YulIdentifier","src":"374:6:30"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"150:245:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"185:9:30","nodeType":"YulTypedName","src":"185:9:30","type":""},{"name":"dataEnd","nativeSrc":"196:7:30","nodeType":"YulTypedName","src":"196:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"208:6:30","nodeType":"YulTypedName","src":"208:6:30","type":""}],"src":"150:245:30"},{"body":{"nativeSrc":"495:92:30","nodeType":"YulBlock","src":"495:92:30","statements":[{"nativeSrc":"505:26:30","nodeType":"YulAssignment","src":"505:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"517:9:30","nodeType":"YulIdentifier","src":"517:9:30"},{"kind":"number","nativeSrc":"528:2:30","nodeType":"YulLiteral","src":"528:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"513:3:30","nodeType":"YulIdentifier","src":"513:3:30"},"nativeSrc":"513:18:30","nodeType":"YulFunctionCall","src":"513:18:30"},"variableNames":[{"name":"tail","nativeSrc":"505:4:30","nodeType":"YulIdentifier","src":"505:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"547:9:30","nodeType":"YulIdentifier","src":"547:9:30"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"572:6:30","nodeType":"YulIdentifier","src":"572:6:30"}],"functionName":{"name":"iszero","nativeSrc":"565:6:30","nodeType":"YulIdentifier","src":"565:6:30"},"nativeSrc":"565:14:30","nodeType":"YulFunctionCall","src":"565:14:30"}],"functionName":{"name":"iszero","nativeSrc":"558:6:30","nodeType":"YulIdentifier","src":"558:6:30"},"nativeSrc":"558:22:30","nodeType":"YulFunctionCall","src":"558:22:30"}],"functionName":{"name":"mstore","nativeSrc":"540:6:30","nodeType":"YulIdentifier","src":"540:6:30"},"nativeSrc":"540:41:30","nodeType":"YulFunctionCall","src":"540:41:30"},"nativeSrc":"540:41:30","nodeType":"YulExpressionStatement","src":"540:41:30"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"400:187:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"464:9:30","nodeType":"YulTypedName","src":"464:9:30","type":""},{"name":"value0","nativeSrc":"475:6:30","nodeType":"YulTypedName","src":"475:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"486:4:30","nodeType":"YulTypedName","src":"486:4:30","type":""}],"src":"400:187:30"},{"body":{"nativeSrc":"691:97:30","nodeType":"YulBlock","src":"691:97:30","statements":[{"nativeSrc":"701:26:30","nodeType":"YulAssignment","src":"701:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"713:9:30","nodeType":"YulIdentifier","src":"713:9:30"},{"kind":"number","nativeSrc":"724:2:30","nodeType":"YulLiteral","src":"724:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"709:3:30","nodeType":"YulIdentifier","src":"709:3:30"},"nativeSrc":"709:18:30","nodeType":"YulFunctionCall","src":"709:18:30"},"variableNames":[{"name":"tail","nativeSrc":"701:4:30","nodeType":"YulIdentifier","src":"701:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"743:9:30","nodeType":"YulIdentifier","src":"743:9:30"},{"arguments":[{"name":"value0","nativeSrc":"758:6:30","nodeType":"YulIdentifier","src":"758:6:30"},{"kind":"number","nativeSrc":"766:14:30","nodeType":"YulLiteral","src":"766:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"754:3:30","nodeType":"YulIdentifier","src":"754:3:30"},"nativeSrc":"754:27:30","nodeType":"YulFunctionCall","src":"754:27:30"}],"functionName":{"name":"mstore","nativeSrc":"736:6:30","nodeType":"YulIdentifier","src":"736:6:30"},"nativeSrc":"736:46:30","nodeType":"YulFunctionCall","src":"736:46:30"},"nativeSrc":"736:46:30","nodeType":"YulExpressionStatement","src":"736:46:30"}]},"name":"abi_encode_tuple_t_uint48__to_t_uint48__fromStack_reversed","nativeSrc":"592:196:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"660:9:30","nodeType":"YulTypedName","src":"660:9:30","type":""},{"name":"value0","nativeSrc":"671:6:30","nodeType":"YulTypedName","src":"671:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"682:4:30","nodeType":"YulTypedName","src":"682:4:30","type":""}],"src":"592:196:30"},{"body":{"nativeSrc":"842:124:30","nodeType":"YulBlock","src":"842:124:30","statements":[{"nativeSrc":"852:29:30","nodeType":"YulAssignment","src":"852:29:30","value":{"arguments":[{"name":"offset","nativeSrc":"874:6:30","nodeType":"YulIdentifier","src":"874:6:30"}],"functionName":{"name":"calldataload","nativeSrc":"861:12:30","nodeType":"YulIdentifier","src":"861:12:30"},"nativeSrc":"861:20:30","nodeType":"YulFunctionCall","src":"861:20:30"},"variableNames":[{"name":"value","nativeSrc":"852:5:30","nodeType":"YulIdentifier","src":"852:5:30"}]},{"body":{"nativeSrc":"944:16:30","nodeType":"YulBlock","src":"944:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"953:1:30","nodeType":"YulLiteral","src":"953:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"956:1:30","nodeType":"YulLiteral","src":"956:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"946:6:30","nodeType":"YulIdentifier","src":"946:6:30"},"nativeSrc":"946:12:30","nodeType":"YulFunctionCall","src":"946:12:30"},"nativeSrc":"946:12:30","nodeType":"YulExpressionStatement","src":"946:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"903:5:30","nodeType":"YulIdentifier","src":"903:5:30"},{"arguments":[{"name":"value","nativeSrc":"914:5:30","nodeType":"YulIdentifier","src":"914:5:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"929:3:30","nodeType":"YulLiteral","src":"929:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"934:1:30","nodeType":"YulLiteral","src":"934:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"925:3:30","nodeType":"YulIdentifier","src":"925:3:30"},"nativeSrc":"925:11:30","nodeType":"YulFunctionCall","src":"925:11:30"},{"kind":"number","nativeSrc":"938:1:30","nodeType":"YulLiteral","src":"938:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"921:3:30","nodeType":"YulIdentifier","src":"921:3:30"},"nativeSrc":"921:19:30","nodeType":"YulFunctionCall","src":"921:19:30"}],"functionName":{"name":"and","nativeSrc":"910:3:30","nodeType":"YulIdentifier","src":"910:3:30"},"nativeSrc":"910:31:30","nodeType":"YulFunctionCall","src":"910:31:30"}],"functionName":{"name":"eq","nativeSrc":"900:2:30","nodeType":"YulIdentifier","src":"900:2:30"},"nativeSrc":"900:42:30","nodeType":"YulFunctionCall","src":"900:42:30"}],"functionName":{"name":"iszero","nativeSrc":"893:6:30","nodeType":"YulIdentifier","src":"893:6:30"},"nativeSrc":"893:50:30","nodeType":"YulFunctionCall","src":"893:50:30"},"nativeSrc":"890:70:30","nodeType":"YulIf","src":"890:70:30"}]},"name":"abi_decode_address","nativeSrc":"793:173:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"821:6:30","nodeType":"YulTypedName","src":"821:6:30","type":""}],"returnVariables":[{"name":"value","nativeSrc":"832:5:30","nodeType":"YulTypedName","src":"832:5:30","type":""}],"src":"793:173:30"},{"body":{"nativeSrc":"1057:280:30","nodeType":"YulBlock","src":"1057:280:30","statements":[{"body":{"nativeSrc":"1103:16:30","nodeType":"YulBlock","src":"1103:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1112:1:30","nodeType":"YulLiteral","src":"1112:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1115:1:30","nodeType":"YulLiteral","src":"1115:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1105:6:30","nodeType":"YulIdentifier","src":"1105:6:30"},"nativeSrc":"1105:12:30","nodeType":"YulFunctionCall","src":"1105:12:30"},"nativeSrc":"1105:12:30","nodeType":"YulExpressionStatement","src":"1105:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1078:7:30","nodeType":"YulIdentifier","src":"1078:7:30"},{"name":"headStart","nativeSrc":"1087:9:30","nodeType":"YulIdentifier","src":"1087:9:30"}],"functionName":{"name":"sub","nativeSrc":"1074:3:30","nodeType":"YulIdentifier","src":"1074:3:30"},"nativeSrc":"1074:23:30","nodeType":"YulFunctionCall","src":"1074:23:30"},{"kind":"number","nativeSrc":"1099:2:30","nodeType":"YulLiteral","src":"1099:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1070:3:30","nodeType":"YulIdentifier","src":"1070:3:30"},"nativeSrc":"1070:32:30","nodeType":"YulFunctionCall","src":"1070:32:30"},"nativeSrc":"1067:52:30","nodeType":"YulIf","src":"1067:52:30"},{"nativeSrc":"1128:39:30","nodeType":"YulAssignment","src":"1128:39:30","value":{"arguments":[{"name":"headStart","nativeSrc":"1157:9:30","nodeType":"YulIdentifier","src":"1157:9:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1138:18:30","nodeType":"YulIdentifier","src":"1138:18:30"},"nativeSrc":"1138:29:30","nodeType":"YulFunctionCall","src":"1138:29:30"},"variableNames":[{"name":"value0","nativeSrc":"1128:6:30","nodeType":"YulIdentifier","src":"1128:6:30"}]},{"nativeSrc":"1176:45:30","nodeType":"YulVariableDeclaration","src":"1176:45:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1206:9:30","nodeType":"YulIdentifier","src":"1206:9:30"},{"kind":"number","nativeSrc":"1217:2:30","nodeType":"YulLiteral","src":"1217:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1202:3:30","nodeType":"YulIdentifier","src":"1202:3:30"},"nativeSrc":"1202:18:30","nodeType":"YulFunctionCall","src":"1202:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"1189:12:30","nodeType":"YulIdentifier","src":"1189:12:30"},"nativeSrc":"1189:32:30","nodeType":"YulFunctionCall","src":"1189:32:30"},"variables":[{"name":"value","nativeSrc":"1180:5:30","nodeType":"YulTypedName","src":"1180:5:30","type":""}]},{"body":{"nativeSrc":"1291:16:30","nodeType":"YulBlock","src":"1291:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1300:1:30","nodeType":"YulLiteral","src":"1300:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1303:1:30","nodeType":"YulLiteral","src":"1303:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1293:6:30","nodeType":"YulIdentifier","src":"1293:6:30"},"nativeSrc":"1293:12:30","nodeType":"YulFunctionCall","src":"1293:12:30"},"nativeSrc":"1293:12:30","nodeType":"YulExpressionStatement","src":"1293:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1243:5:30","nodeType":"YulIdentifier","src":"1243:5:30"},{"arguments":[{"name":"value","nativeSrc":"1254:5:30","nodeType":"YulIdentifier","src":"1254:5:30"},{"kind":"number","nativeSrc":"1261:26:30","nodeType":"YulLiteral","src":"1261:26:30","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1250:3:30","nodeType":"YulIdentifier","src":"1250:3:30"},"nativeSrc":"1250:38:30","nodeType":"YulFunctionCall","src":"1250:38:30"}],"functionName":{"name":"eq","nativeSrc":"1240:2:30","nodeType":"YulIdentifier","src":"1240:2:30"},"nativeSrc":"1240:49:30","nodeType":"YulFunctionCall","src":"1240:49:30"}],"functionName":{"name":"iszero","nativeSrc":"1233:6:30","nodeType":"YulIdentifier","src":"1233:6:30"},"nativeSrc":"1233:57:30","nodeType":"YulFunctionCall","src":"1233:57:30"},"nativeSrc":"1230:77:30","nodeType":"YulIf","src":"1230:77:30"},{"nativeSrc":"1316:15:30","nodeType":"YulAssignment","src":"1316:15:30","value":{"name":"value","nativeSrc":"1326:5:30","nodeType":"YulIdentifier","src":"1326:5:30"},"variableNames":[{"name":"value1","nativeSrc":"1316:6:30","nodeType":"YulIdentifier","src":"1316:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_uint96","nativeSrc":"971:366:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1015:9:30","nodeType":"YulTypedName","src":"1015:9:30","type":""},{"name":"dataEnd","nativeSrc":"1026:7:30","nodeType":"YulTypedName","src":"1026:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1038:6:30","nodeType":"YulTypedName","src":"1038:6:30","type":""},{"name":"value1","nativeSrc":"1046:6:30","nodeType":"YulTypedName","src":"1046:6:30","type":""}],"src":"971:366:30"},{"body":{"nativeSrc":"1403:239:30","nodeType":"YulBlock","src":"1403:239:30","statements":[{"nativeSrc":"1413:26:30","nodeType":"YulVariableDeclaration","src":"1413:26:30","value":{"arguments":[{"name":"value","nativeSrc":"1433:5:30","nodeType":"YulIdentifier","src":"1433:5:30"}],"functionName":{"name":"mload","nativeSrc":"1427:5:30","nodeType":"YulIdentifier","src":"1427:5:30"},"nativeSrc":"1427:12:30","nodeType":"YulFunctionCall","src":"1427:12:30"},"variables":[{"name":"length","nativeSrc":"1417:6:30","nodeType":"YulTypedName","src":"1417:6:30","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1455:3:30","nodeType":"YulIdentifier","src":"1455:3:30"},{"name":"length","nativeSrc":"1460:6:30","nodeType":"YulIdentifier","src":"1460:6:30"}],"functionName":{"name":"mstore","nativeSrc":"1448:6:30","nodeType":"YulIdentifier","src":"1448:6:30"},"nativeSrc":"1448:19:30","nodeType":"YulFunctionCall","src":"1448:19:30"},"nativeSrc":"1448:19:30","nodeType":"YulExpressionStatement","src":"1448:19:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"1486:3:30","nodeType":"YulIdentifier","src":"1486:3:30"},{"kind":"number","nativeSrc":"1491:4:30","nodeType":"YulLiteral","src":"1491:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1482:3:30","nodeType":"YulIdentifier","src":"1482:3:30"},"nativeSrc":"1482:14:30","nodeType":"YulFunctionCall","src":"1482:14:30"},{"arguments":[{"name":"value","nativeSrc":"1502:5:30","nodeType":"YulIdentifier","src":"1502:5:30"},{"kind":"number","nativeSrc":"1509:4:30","nodeType":"YulLiteral","src":"1509:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1498:3:30","nodeType":"YulIdentifier","src":"1498:3:30"},"nativeSrc":"1498:16:30","nodeType":"YulFunctionCall","src":"1498:16:30"},{"name":"length","nativeSrc":"1516:6:30","nodeType":"YulIdentifier","src":"1516:6:30"}],"functionName":{"name":"mcopy","nativeSrc":"1476:5:30","nodeType":"YulIdentifier","src":"1476:5:30"},"nativeSrc":"1476:47:30","nodeType":"YulFunctionCall","src":"1476:47:30"},"nativeSrc":"1476:47:30","nodeType":"YulExpressionStatement","src":"1476:47:30"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"1547:3:30","nodeType":"YulIdentifier","src":"1547:3:30"},{"name":"length","nativeSrc":"1552:6:30","nodeType":"YulIdentifier","src":"1552:6:30"}],"functionName":{"name":"add","nativeSrc":"1543:3:30","nodeType":"YulIdentifier","src":"1543:3:30"},"nativeSrc":"1543:16:30","nodeType":"YulFunctionCall","src":"1543:16:30"},{"kind":"number","nativeSrc":"1561:4:30","nodeType":"YulLiteral","src":"1561:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1539:3:30","nodeType":"YulIdentifier","src":"1539:3:30"},"nativeSrc":"1539:27:30","nodeType":"YulFunctionCall","src":"1539:27:30"},{"kind":"number","nativeSrc":"1568:1:30","nodeType":"YulLiteral","src":"1568:1:30","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1532:6:30","nodeType":"YulIdentifier","src":"1532:6:30"},"nativeSrc":"1532:38:30","nodeType":"YulFunctionCall","src":"1532:38:30"},"nativeSrc":"1532:38:30","nodeType":"YulExpressionStatement","src":"1532:38:30"},{"nativeSrc":"1579:57:30","nodeType":"YulAssignment","src":"1579:57:30","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"1594:3:30","nodeType":"YulIdentifier","src":"1594:3:30"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1607:6:30","nodeType":"YulIdentifier","src":"1607:6:30"},{"kind":"number","nativeSrc":"1615:2:30","nodeType":"YulLiteral","src":"1615:2:30","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1603:3:30","nodeType":"YulIdentifier","src":"1603:3:30"},"nativeSrc":"1603:15:30","nodeType":"YulFunctionCall","src":"1603:15:30"},{"arguments":[{"kind":"number","nativeSrc":"1624:2:30","nodeType":"YulLiteral","src":"1624:2:30","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1620:3:30","nodeType":"YulIdentifier","src":"1620:3:30"},"nativeSrc":"1620:7:30","nodeType":"YulFunctionCall","src":"1620:7:30"}],"functionName":{"name":"and","nativeSrc":"1599:3:30","nodeType":"YulIdentifier","src":"1599:3:30"},"nativeSrc":"1599:29:30","nodeType":"YulFunctionCall","src":"1599:29:30"}],"functionName":{"name":"add","nativeSrc":"1590:3:30","nodeType":"YulIdentifier","src":"1590:3:30"},"nativeSrc":"1590:39:30","nodeType":"YulFunctionCall","src":"1590:39:30"},{"kind":"number","nativeSrc":"1631:4:30","nodeType":"YulLiteral","src":"1631:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1586:3:30","nodeType":"YulIdentifier","src":"1586:3:30"},"nativeSrc":"1586:50:30","nodeType":"YulFunctionCall","src":"1586:50:30"},"variableNames":[{"name":"end","nativeSrc":"1579:3:30","nodeType":"YulIdentifier","src":"1579:3:30"}]}]},"name":"abi_encode_string_memory_ptr","nativeSrc":"1342:300:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1380:5:30","nodeType":"YulTypedName","src":"1380:5:30","type":""},{"name":"pos","nativeSrc":"1387:3:30","nodeType":"YulTypedName","src":"1387:3:30","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1395:3:30","nodeType":"YulTypedName","src":"1395:3:30","type":""}],"src":"1342:300:30"},{"body":{"nativeSrc":"1768:110:30","nodeType":"YulBlock","src":"1768:110:30","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1785:9:30","nodeType":"YulIdentifier","src":"1785:9:30"},{"kind":"number","nativeSrc":"1796:2:30","nodeType":"YulLiteral","src":"1796:2:30","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1778:6:30","nodeType":"YulIdentifier","src":"1778:6:30"},"nativeSrc":"1778:21:30","nodeType":"YulFunctionCall","src":"1778:21:30"},"nativeSrc":"1778:21:30","nodeType":"YulExpressionStatement","src":"1778:21:30"},{"nativeSrc":"1808:64:30","nodeType":"YulAssignment","src":"1808:64:30","value":{"arguments":[{"name":"value0","nativeSrc":"1845:6:30","nodeType":"YulIdentifier","src":"1845:6:30"},{"arguments":[{"name":"headStart","nativeSrc":"1857:9:30","nodeType":"YulIdentifier","src":"1857:9:30"},{"kind":"number","nativeSrc":"1868:2:30","nodeType":"YulLiteral","src":"1868:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1853:3:30","nodeType":"YulIdentifier","src":"1853:3:30"},"nativeSrc":"1853:18:30","nodeType":"YulFunctionCall","src":"1853:18:30"}],"functionName":{"name":"abi_encode_string_memory_ptr","nativeSrc":"1816:28:30","nodeType":"YulIdentifier","src":"1816:28:30"},"nativeSrc":"1816:56:30","nodeType":"YulFunctionCall","src":"1816:56:30"},"variableNames":[{"name":"tail","nativeSrc":"1808:4:30","nodeType":"YulIdentifier","src":"1808:4:30"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1647:231:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1737:9:30","nodeType":"YulTypedName","src":"1737:9:30","type":""},{"name":"value0","nativeSrc":"1748:6:30","nodeType":"YulTypedName","src":"1748:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1759:4:30","nodeType":"YulTypedName","src":"1759:4:30","type":""}],"src":"1647:231:30"},{"body":{"nativeSrc":"1953:156:30","nodeType":"YulBlock","src":"1953:156:30","statements":[{"body":{"nativeSrc":"1999:16:30","nodeType":"YulBlock","src":"1999:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2008:1:30","nodeType":"YulLiteral","src":"2008:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"2011:1:30","nodeType":"YulLiteral","src":"2011:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2001:6:30","nodeType":"YulIdentifier","src":"2001:6:30"},"nativeSrc":"2001:12:30","nodeType":"YulFunctionCall","src":"2001:12:30"},"nativeSrc":"2001:12:30","nodeType":"YulExpressionStatement","src":"2001:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1974:7:30","nodeType":"YulIdentifier","src":"1974:7:30"},{"name":"headStart","nativeSrc":"1983:9:30","nodeType":"YulIdentifier","src":"1983:9:30"}],"functionName":{"name":"sub","nativeSrc":"1970:3:30","nodeType":"YulIdentifier","src":"1970:3:30"},"nativeSrc":"1970:23:30","nodeType":"YulFunctionCall","src":"1970:23:30"},{"kind":"number","nativeSrc":"1995:2:30","nodeType":"YulLiteral","src":"1995:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1966:3:30","nodeType":"YulIdentifier","src":"1966:3:30"},"nativeSrc":"1966:32:30","nodeType":"YulFunctionCall","src":"1966:32:30"},"nativeSrc":"1963:52:30","nodeType":"YulIf","src":"1963:52:30"},{"nativeSrc":"2024:14:30","nodeType":"YulVariableDeclaration","src":"2024:14:30","value":{"kind":"number","nativeSrc":"2037:1:30","nodeType":"YulLiteral","src":"2037:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2028:5:30","nodeType":"YulTypedName","src":"2028:5:30","type":""}]},{"nativeSrc":"2047:32:30","nodeType":"YulAssignment","src":"2047:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2069:9:30","nodeType":"YulIdentifier","src":"2069:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"2056:12:30","nodeType":"YulIdentifier","src":"2056:12:30"},"nativeSrc":"2056:23:30","nodeType":"YulFunctionCall","src":"2056:23:30"},"variableNames":[{"name":"value","nativeSrc":"2047:5:30","nodeType":"YulIdentifier","src":"2047:5:30"}]},{"nativeSrc":"2088:15:30","nodeType":"YulAssignment","src":"2088:15:30","value":{"name":"value","nativeSrc":"2098:5:30","nodeType":"YulIdentifier","src":"2098:5:30"},"variableNames":[{"name":"value0","nativeSrc":"2088:6:30","nodeType":"YulIdentifier","src":"2088:6:30"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1883:226:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1919:9:30","nodeType":"YulTypedName","src":"1919:9:30","type":""},{"name":"dataEnd","nativeSrc":"1930:7:30","nodeType":"YulTypedName","src":"1930:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1942:6:30","nodeType":"YulTypedName","src":"1942:6:30","type":""}],"src":"1883:226:30"},{"body":{"nativeSrc":"2215:102:30","nodeType":"YulBlock","src":"2215:102:30","statements":[{"nativeSrc":"2225:26:30","nodeType":"YulAssignment","src":"2225:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2237:9:30","nodeType":"YulIdentifier","src":"2237:9:30"},{"kind":"number","nativeSrc":"2248:2:30","nodeType":"YulLiteral","src":"2248:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2233:3:30","nodeType":"YulIdentifier","src":"2233:3:30"},"nativeSrc":"2233:18:30","nodeType":"YulFunctionCall","src":"2233:18:30"},"variableNames":[{"name":"tail","nativeSrc":"2225:4:30","nodeType":"YulIdentifier","src":"2225:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2267:9:30","nodeType":"YulIdentifier","src":"2267:9:30"},{"arguments":[{"name":"value0","nativeSrc":"2282:6:30","nodeType":"YulIdentifier","src":"2282:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2298:3:30","nodeType":"YulLiteral","src":"2298:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"2303:1:30","nodeType":"YulLiteral","src":"2303:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2294:3:30","nodeType":"YulIdentifier","src":"2294:3:30"},"nativeSrc":"2294:11:30","nodeType":"YulFunctionCall","src":"2294:11:30"},{"kind":"number","nativeSrc":"2307:1:30","nodeType":"YulLiteral","src":"2307:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2290:3:30","nodeType":"YulIdentifier","src":"2290:3:30"},"nativeSrc":"2290:19:30","nodeType":"YulFunctionCall","src":"2290:19:30"}],"functionName":{"name":"and","nativeSrc":"2278:3:30","nodeType":"YulIdentifier","src":"2278:3:30"},"nativeSrc":"2278:32:30","nodeType":"YulFunctionCall","src":"2278:32:30"}],"functionName":{"name":"mstore","nativeSrc":"2260:6:30","nodeType":"YulIdentifier","src":"2260:6:30"},"nativeSrc":"2260:51:30","nodeType":"YulFunctionCall","src":"2260:51:30"},"nativeSrc":"2260:51:30","nodeType":"YulExpressionStatement","src":"2260:51:30"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2114:203:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2184:9:30","nodeType":"YulTypedName","src":"2184:9:30","type":""},{"name":"value0","nativeSrc":"2195:6:30","nodeType":"YulTypedName","src":"2195:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2206:4:30","nodeType":"YulTypedName","src":"2206:4:30","type":""}],"src":"2114:203:30"},{"body":{"nativeSrc":"2409:213:30","nodeType":"YulBlock","src":"2409:213:30","statements":[{"body":{"nativeSrc":"2455:16:30","nodeType":"YulBlock","src":"2455:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2464:1:30","nodeType":"YulLiteral","src":"2464:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"2467:1:30","nodeType":"YulLiteral","src":"2467:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2457:6:30","nodeType":"YulIdentifier","src":"2457:6:30"},"nativeSrc":"2457:12:30","nodeType":"YulFunctionCall","src":"2457:12:30"},"nativeSrc":"2457:12:30","nodeType":"YulExpressionStatement","src":"2457:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2430:7:30","nodeType":"YulIdentifier","src":"2430:7:30"},{"name":"headStart","nativeSrc":"2439:9:30","nodeType":"YulIdentifier","src":"2439:9:30"}],"functionName":{"name":"sub","nativeSrc":"2426:3:30","nodeType":"YulIdentifier","src":"2426:3:30"},"nativeSrc":"2426:23:30","nodeType":"YulFunctionCall","src":"2426:23:30"},{"kind":"number","nativeSrc":"2451:2:30","nodeType":"YulLiteral","src":"2451:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2422:3:30","nodeType":"YulIdentifier","src":"2422:3:30"},"nativeSrc":"2422:32:30","nodeType":"YulFunctionCall","src":"2422:32:30"},"nativeSrc":"2419:52:30","nodeType":"YulIf","src":"2419:52:30"},{"nativeSrc":"2480:39:30","nodeType":"YulAssignment","src":"2480:39:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2509:9:30","nodeType":"YulIdentifier","src":"2509:9:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2490:18:30","nodeType":"YulIdentifier","src":"2490:18:30"},"nativeSrc":"2490:29:30","nodeType":"YulFunctionCall","src":"2490:29:30"},"variableNames":[{"name":"value0","nativeSrc":"2480:6:30","nodeType":"YulIdentifier","src":"2480:6:30"}]},{"nativeSrc":"2528:14:30","nodeType":"YulVariableDeclaration","src":"2528:14:30","value":{"kind":"number","nativeSrc":"2541:1:30","nodeType":"YulLiteral","src":"2541:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2532:5:30","nodeType":"YulTypedName","src":"2532:5:30","type":""}]},{"nativeSrc":"2551:41:30","nodeType":"YulAssignment","src":"2551:41:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2577:9:30","nodeType":"YulIdentifier","src":"2577:9:30"},{"kind":"number","nativeSrc":"2588:2:30","nodeType":"YulLiteral","src":"2588:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2573:3:30","nodeType":"YulIdentifier","src":"2573:3:30"},"nativeSrc":"2573:18:30","nodeType":"YulFunctionCall","src":"2573:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"2560:12:30","nodeType":"YulIdentifier","src":"2560:12:30"},"nativeSrc":"2560:32:30","nodeType":"YulFunctionCall","src":"2560:32:30"},"variableNames":[{"name":"value","nativeSrc":"2551:5:30","nodeType":"YulIdentifier","src":"2551:5:30"}]},{"nativeSrc":"2601:15:30","nodeType":"YulAssignment","src":"2601:15:30","value":{"name":"value","nativeSrc":"2611:5:30","nodeType":"YulIdentifier","src":"2611:5:30"},"variableNames":[{"name":"value1","nativeSrc":"2601:6:30","nodeType":"YulIdentifier","src":"2601:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"2322:300:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2367:9:30","nodeType":"YulTypedName","src":"2367:9:30","type":""},{"name":"dataEnd","nativeSrc":"2378:7:30","nodeType":"YulTypedName","src":"2378:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2390:6:30","nodeType":"YulTypedName","src":"2390:6:30","type":""},{"name":"value1","nativeSrc":"2398:6:30","nodeType":"YulTypedName","src":"2398:6:30","type":""}],"src":"2322:300:30"},{"body":{"nativeSrc":"2731:270:30","nodeType":"YulBlock","src":"2731:270:30","statements":[{"body":{"nativeSrc":"2777:16:30","nodeType":"YulBlock","src":"2777:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2786:1:30","nodeType":"YulLiteral","src":"2786:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"2789:1:30","nodeType":"YulLiteral","src":"2789:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2779:6:30","nodeType":"YulIdentifier","src":"2779:6:30"},"nativeSrc":"2779:12:30","nodeType":"YulFunctionCall","src":"2779:12:30"},"nativeSrc":"2779:12:30","nodeType":"YulExpressionStatement","src":"2779:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2752:7:30","nodeType":"YulIdentifier","src":"2752:7:30"},{"name":"headStart","nativeSrc":"2761:9:30","nodeType":"YulIdentifier","src":"2761:9:30"}],"functionName":{"name":"sub","nativeSrc":"2748:3:30","nodeType":"YulIdentifier","src":"2748:3:30"},"nativeSrc":"2748:23:30","nodeType":"YulFunctionCall","src":"2748:23:30"},{"kind":"number","nativeSrc":"2773:2:30","nodeType":"YulLiteral","src":"2773:2:30","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2744:3:30","nodeType":"YulIdentifier","src":"2744:3:30"},"nativeSrc":"2744:32:30","nodeType":"YulFunctionCall","src":"2744:32:30"},"nativeSrc":"2741:52:30","nodeType":"YulIf","src":"2741:52:30"},{"nativeSrc":"2802:39:30","nodeType":"YulAssignment","src":"2802:39:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2831:9:30","nodeType":"YulIdentifier","src":"2831:9:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2812:18:30","nodeType":"YulIdentifier","src":"2812:18:30"},"nativeSrc":"2812:29:30","nodeType":"YulFunctionCall","src":"2812:29:30"},"variableNames":[{"name":"value0","nativeSrc":"2802:6:30","nodeType":"YulIdentifier","src":"2802:6:30"}]},{"nativeSrc":"2850:48:30","nodeType":"YulAssignment","src":"2850:48:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2883:9:30","nodeType":"YulIdentifier","src":"2883:9:30"},{"kind":"number","nativeSrc":"2894:2:30","nodeType":"YulLiteral","src":"2894:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2879:3:30","nodeType":"YulIdentifier","src":"2879:3:30"},"nativeSrc":"2879:18:30","nodeType":"YulFunctionCall","src":"2879:18:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2860:18:30","nodeType":"YulIdentifier","src":"2860:18:30"},"nativeSrc":"2860:38:30","nodeType":"YulFunctionCall","src":"2860:38:30"},"variableNames":[{"name":"value1","nativeSrc":"2850:6:30","nodeType":"YulIdentifier","src":"2850:6:30"}]},{"nativeSrc":"2907:14:30","nodeType":"YulVariableDeclaration","src":"2907:14:30","value":{"kind":"number","nativeSrc":"2920:1:30","nodeType":"YulLiteral","src":"2920:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2911:5:30","nodeType":"YulTypedName","src":"2911:5:30","type":""}]},{"nativeSrc":"2930:41:30","nodeType":"YulAssignment","src":"2930:41:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2956:9:30","nodeType":"YulIdentifier","src":"2956:9:30"},{"kind":"number","nativeSrc":"2967:2:30","nodeType":"YulLiteral","src":"2967:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2952:3:30","nodeType":"YulIdentifier","src":"2952:3:30"},"nativeSrc":"2952:18:30","nodeType":"YulFunctionCall","src":"2952:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"2939:12:30","nodeType":"YulIdentifier","src":"2939:12:30"},"nativeSrc":"2939:32:30","nodeType":"YulFunctionCall","src":"2939:32:30"},"variableNames":[{"name":"value","nativeSrc":"2930:5:30","nodeType":"YulIdentifier","src":"2930:5:30"}]},{"nativeSrc":"2980:15:30","nodeType":"YulAssignment","src":"2980:15:30","value":{"name":"value","nativeSrc":"2990:5:30","nodeType":"YulIdentifier","src":"2990:5:30"},"variableNames":[{"name":"value2","nativeSrc":"2980:6:30","nodeType":"YulIdentifier","src":"2980:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"2627:374:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2681:9:30","nodeType":"YulTypedName","src":"2681:9:30","type":""},{"name":"dataEnd","nativeSrc":"2692:7:30","nodeType":"YulTypedName","src":"2692:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2704:6:30","nodeType":"YulTypedName","src":"2704:6:30","type":""},{"name":"value1","nativeSrc":"2712:6:30","nodeType":"YulTypedName","src":"2712:6:30","type":""},{"name":"value2","nativeSrc":"2720:6:30","nodeType":"YulTypedName","src":"2720:6:30","type":""}],"src":"2627:374:30"},{"body":{"nativeSrc":"3076:156:30","nodeType":"YulBlock","src":"3076:156:30","statements":[{"body":{"nativeSrc":"3122:16:30","nodeType":"YulBlock","src":"3122:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3131:1:30","nodeType":"YulLiteral","src":"3131:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"3134:1:30","nodeType":"YulLiteral","src":"3134:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3124:6:30","nodeType":"YulIdentifier","src":"3124:6:30"},"nativeSrc":"3124:12:30","nodeType":"YulFunctionCall","src":"3124:12:30"},"nativeSrc":"3124:12:30","nodeType":"YulExpressionStatement","src":"3124:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3097:7:30","nodeType":"YulIdentifier","src":"3097:7:30"},{"name":"headStart","nativeSrc":"3106:9:30","nodeType":"YulIdentifier","src":"3106:9:30"}],"functionName":{"name":"sub","nativeSrc":"3093:3:30","nodeType":"YulIdentifier","src":"3093:3:30"},"nativeSrc":"3093:23:30","nodeType":"YulFunctionCall","src":"3093:23:30"},{"kind":"number","nativeSrc":"3118:2:30","nodeType":"YulLiteral","src":"3118:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3089:3:30","nodeType":"YulIdentifier","src":"3089:3:30"},"nativeSrc":"3089:32:30","nodeType":"YulFunctionCall","src":"3089:32:30"},"nativeSrc":"3086:52:30","nodeType":"YulIf","src":"3086:52:30"},{"nativeSrc":"3147:14:30","nodeType":"YulVariableDeclaration","src":"3147:14:30","value":{"kind":"number","nativeSrc":"3160:1:30","nodeType":"YulLiteral","src":"3160:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3151:5:30","nodeType":"YulTypedName","src":"3151:5:30","type":""}]},{"nativeSrc":"3170:32:30","nodeType":"YulAssignment","src":"3170:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"3192:9:30","nodeType":"YulIdentifier","src":"3192:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"3179:12:30","nodeType":"YulIdentifier","src":"3179:12:30"},"nativeSrc":"3179:23:30","nodeType":"YulFunctionCall","src":"3179:23:30"},"variableNames":[{"name":"value","nativeSrc":"3170:5:30","nodeType":"YulIdentifier","src":"3170:5:30"}]},{"nativeSrc":"3211:15:30","nodeType":"YulAssignment","src":"3211:15:30","value":{"name":"value","nativeSrc":"3221:5:30","nodeType":"YulIdentifier","src":"3221:5:30"},"variableNames":[{"name":"value0","nativeSrc":"3211:6:30","nodeType":"YulIdentifier","src":"3211:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"3006:226:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3042:9:30","nodeType":"YulTypedName","src":"3042:9:30","type":""},{"name":"dataEnd","nativeSrc":"3053:7:30","nodeType":"YulTypedName","src":"3053:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3065:6:30","nodeType":"YulTypedName","src":"3065:6:30","type":""}],"src":"3006:226:30"},{"body":{"nativeSrc":"3338:76:30","nodeType":"YulBlock","src":"3338:76:30","statements":[{"nativeSrc":"3348:26:30","nodeType":"YulAssignment","src":"3348:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"3360:9:30","nodeType":"YulIdentifier","src":"3360:9:30"},{"kind":"number","nativeSrc":"3371:2:30","nodeType":"YulLiteral","src":"3371:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3356:3:30","nodeType":"YulIdentifier","src":"3356:3:30"},"nativeSrc":"3356:18:30","nodeType":"YulFunctionCall","src":"3356:18:30"},"variableNames":[{"name":"tail","nativeSrc":"3348:4:30","nodeType":"YulIdentifier","src":"3348:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3390:9:30","nodeType":"YulIdentifier","src":"3390:9:30"},{"name":"value0","nativeSrc":"3401:6:30","nodeType":"YulIdentifier","src":"3401:6:30"}],"functionName":{"name":"mstore","nativeSrc":"3383:6:30","nodeType":"YulIdentifier","src":"3383:6:30"},"nativeSrc":"3383:25:30","nodeType":"YulFunctionCall","src":"3383:25:30"},"nativeSrc":"3383:25:30","nodeType":"YulExpressionStatement","src":"3383:25:30"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"3237:177:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3307:9:30","nodeType":"YulTypedName","src":"3307:9:30","type":""},{"name":"value0","nativeSrc":"3318:6:30","nodeType":"YulTypedName","src":"3318:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3329:4:30","nodeType":"YulTypedName","src":"3329:4:30","type":""}],"src":"3237:177:30"},{"body":{"nativeSrc":"3506:259:30","nodeType":"YulBlock","src":"3506:259:30","statements":[{"body":{"nativeSrc":"3552:16:30","nodeType":"YulBlock","src":"3552:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3561:1:30","nodeType":"YulLiteral","src":"3561:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"3564:1:30","nodeType":"YulLiteral","src":"3564:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3554:6:30","nodeType":"YulIdentifier","src":"3554:6:30"},"nativeSrc":"3554:12:30","nodeType":"YulFunctionCall","src":"3554:12:30"},"nativeSrc":"3554:12:30","nodeType":"YulExpressionStatement","src":"3554:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3527:7:30","nodeType":"YulIdentifier","src":"3527:7:30"},{"name":"headStart","nativeSrc":"3536:9:30","nodeType":"YulIdentifier","src":"3536:9:30"}],"functionName":{"name":"sub","nativeSrc":"3523:3:30","nodeType":"YulIdentifier","src":"3523:3:30"},"nativeSrc":"3523:23:30","nodeType":"YulFunctionCall","src":"3523:23:30"},{"kind":"number","nativeSrc":"3548:2:30","nodeType":"YulLiteral","src":"3548:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3519:3:30","nodeType":"YulIdentifier","src":"3519:3:30"},"nativeSrc":"3519:32:30","nodeType":"YulFunctionCall","src":"3519:32:30"},"nativeSrc":"3516:52:30","nodeType":"YulIf","src":"3516:52:30"},{"nativeSrc":"3577:14:30","nodeType":"YulVariableDeclaration","src":"3577:14:30","value":{"kind":"number","nativeSrc":"3590:1:30","nodeType":"YulLiteral","src":"3590:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3581:5:30","nodeType":"YulTypedName","src":"3581:5:30","type":""}]},{"nativeSrc":"3600:32:30","nodeType":"YulAssignment","src":"3600:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"3622:9:30","nodeType":"YulIdentifier","src":"3622:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"3609:12:30","nodeType":"YulIdentifier","src":"3609:12:30"},"nativeSrc":"3609:23:30","nodeType":"YulFunctionCall","src":"3609:23:30"},"variableNames":[{"name":"value","nativeSrc":"3600:5:30","nodeType":"YulIdentifier","src":"3600:5:30"}]},{"nativeSrc":"3641:15:30","nodeType":"YulAssignment","src":"3641:15:30","value":{"name":"value","nativeSrc":"3651:5:30","nodeType":"YulIdentifier","src":"3651:5:30"},"variableNames":[{"name":"value0","nativeSrc":"3641:6:30","nodeType":"YulIdentifier","src":"3641:6:30"}]},{"nativeSrc":"3665:16:30","nodeType":"YulVariableDeclaration","src":"3665:16:30","value":{"kind":"number","nativeSrc":"3680:1:30","nodeType":"YulLiteral","src":"3680:1:30","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"3669:7:30","nodeType":"YulTypedName","src":"3669:7:30","type":""}]},{"nativeSrc":"3690:43:30","nodeType":"YulAssignment","src":"3690:43:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3718:9:30","nodeType":"YulIdentifier","src":"3718:9:30"},{"kind":"number","nativeSrc":"3729:2:30","nodeType":"YulLiteral","src":"3729:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3714:3:30","nodeType":"YulIdentifier","src":"3714:3:30"},"nativeSrc":"3714:18:30","nodeType":"YulFunctionCall","src":"3714:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"3701:12:30","nodeType":"YulIdentifier","src":"3701:12:30"},"nativeSrc":"3701:32:30","nodeType":"YulFunctionCall","src":"3701:32:30"},"variableNames":[{"name":"value_1","nativeSrc":"3690:7:30","nodeType":"YulIdentifier","src":"3690:7:30"}]},{"nativeSrc":"3742:17:30","nodeType":"YulAssignment","src":"3742:17:30","value":{"name":"value_1","nativeSrc":"3752:7:30","nodeType":"YulIdentifier","src":"3752:7:30"},"variableNames":[{"name":"value1","nativeSrc":"3742:6:30","nodeType":"YulIdentifier","src":"3742:6:30"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nativeSrc":"3419:346:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3464:9:30","nodeType":"YulTypedName","src":"3464:9:30","type":""},{"name":"dataEnd","nativeSrc":"3475:7:30","nodeType":"YulTypedName","src":"3475:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3487:6:30","nodeType":"YulTypedName","src":"3487:6:30","type":""},{"name":"value1","nativeSrc":"3495:6:30","nodeType":"YulTypedName","src":"3495:6:30","type":""}],"src":"3419:346:30"},{"body":{"nativeSrc":"3899:145:30","nodeType":"YulBlock","src":"3899:145:30","statements":[{"nativeSrc":"3909:26:30","nodeType":"YulAssignment","src":"3909:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"3921:9:30","nodeType":"YulIdentifier","src":"3921:9:30"},{"kind":"number","nativeSrc":"3932:2:30","nodeType":"YulLiteral","src":"3932:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3917:3:30","nodeType":"YulIdentifier","src":"3917:3:30"},"nativeSrc":"3917:18:30","nodeType":"YulFunctionCall","src":"3917:18:30"},"variableNames":[{"name":"tail","nativeSrc":"3909:4:30","nodeType":"YulIdentifier","src":"3909:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3951:9:30","nodeType":"YulIdentifier","src":"3951:9:30"},{"arguments":[{"name":"value0","nativeSrc":"3966:6:30","nodeType":"YulIdentifier","src":"3966:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3982:3:30","nodeType":"YulLiteral","src":"3982:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"3987:1:30","nodeType":"YulLiteral","src":"3987:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3978:3:30","nodeType":"YulIdentifier","src":"3978:3:30"},"nativeSrc":"3978:11:30","nodeType":"YulFunctionCall","src":"3978:11:30"},{"kind":"number","nativeSrc":"3991:1:30","nodeType":"YulLiteral","src":"3991:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3974:3:30","nodeType":"YulIdentifier","src":"3974:3:30"},"nativeSrc":"3974:19:30","nodeType":"YulFunctionCall","src":"3974:19:30"}],"functionName":{"name":"and","nativeSrc":"3962:3:30","nodeType":"YulIdentifier","src":"3962:3:30"},"nativeSrc":"3962:32:30","nodeType":"YulFunctionCall","src":"3962:32:30"}],"functionName":{"name":"mstore","nativeSrc":"3944:6:30","nodeType":"YulIdentifier","src":"3944:6:30"},"nativeSrc":"3944:51:30","nodeType":"YulFunctionCall","src":"3944:51:30"},"nativeSrc":"3944:51:30","nodeType":"YulExpressionStatement","src":"3944:51:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4015:9:30","nodeType":"YulIdentifier","src":"4015:9:30"},{"kind":"number","nativeSrc":"4026:2:30","nodeType":"YulLiteral","src":"4026:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4011:3:30","nodeType":"YulIdentifier","src":"4011:3:30"},"nativeSrc":"4011:18:30","nodeType":"YulFunctionCall","src":"4011:18:30"},{"name":"value1","nativeSrc":"4031:6:30","nodeType":"YulIdentifier","src":"4031:6:30"}],"functionName":{"name":"mstore","nativeSrc":"4004:6:30","nodeType":"YulIdentifier","src":"4004:6:30"},"nativeSrc":"4004:34:30","nodeType":"YulFunctionCall","src":"4004:34:30"},"nativeSrc":"4004:34:30","nodeType":"YulExpressionStatement","src":"4004:34:30"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"3770:274:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3860:9:30","nodeType":"YulTypedName","src":"3860:9:30","type":""},{"name":"value1","nativeSrc":"3871:6:30","nodeType":"YulTypedName","src":"3871:6:30","type":""},{"name":"value0","nativeSrc":"3879:6:30","nodeType":"YulTypedName","src":"3879:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3890:4:30","nodeType":"YulTypedName","src":"3890:4:30","type":""}],"src":"3770:274:30"},{"body":{"nativeSrc":"4136:213:30","nodeType":"YulBlock","src":"4136:213:30","statements":[{"body":{"nativeSrc":"4182:16:30","nodeType":"YulBlock","src":"4182:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4191:1:30","nodeType":"YulLiteral","src":"4191:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"4194:1:30","nodeType":"YulLiteral","src":"4194:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4184:6:30","nodeType":"YulIdentifier","src":"4184:6:30"},"nativeSrc":"4184:12:30","nodeType":"YulFunctionCall","src":"4184:12:30"},"nativeSrc":"4184:12:30","nodeType":"YulExpressionStatement","src":"4184:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4157:7:30","nodeType":"YulIdentifier","src":"4157:7:30"},{"name":"headStart","nativeSrc":"4166:9:30","nodeType":"YulIdentifier","src":"4166:9:30"}],"functionName":{"name":"sub","nativeSrc":"4153:3:30","nodeType":"YulIdentifier","src":"4153:3:30"},"nativeSrc":"4153:23:30","nodeType":"YulFunctionCall","src":"4153:23:30"},{"kind":"number","nativeSrc":"4178:2:30","nodeType":"YulLiteral","src":"4178:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4149:3:30","nodeType":"YulIdentifier","src":"4149:3:30"},"nativeSrc":"4149:32:30","nodeType":"YulFunctionCall","src":"4149:32:30"},"nativeSrc":"4146:52:30","nodeType":"YulIf","src":"4146:52:30"},{"nativeSrc":"4207:14:30","nodeType":"YulVariableDeclaration","src":"4207:14:30","value":{"kind":"number","nativeSrc":"4220:1:30","nodeType":"YulLiteral","src":"4220:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4211:5:30","nodeType":"YulTypedName","src":"4211:5:30","type":""}]},{"nativeSrc":"4230:32:30","nodeType":"YulAssignment","src":"4230:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"4252:9:30","nodeType":"YulIdentifier","src":"4252:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"4239:12:30","nodeType":"YulIdentifier","src":"4239:12:30"},"nativeSrc":"4239:23:30","nodeType":"YulFunctionCall","src":"4239:23:30"},"variableNames":[{"name":"value","nativeSrc":"4230:5:30","nodeType":"YulIdentifier","src":"4230:5:30"}]},{"nativeSrc":"4271:15:30","nodeType":"YulAssignment","src":"4271:15:30","value":{"name":"value","nativeSrc":"4281:5:30","nodeType":"YulIdentifier","src":"4281:5:30"},"variableNames":[{"name":"value0","nativeSrc":"4271:6:30","nodeType":"YulIdentifier","src":"4271:6:30"}]},{"nativeSrc":"4295:48:30","nodeType":"YulAssignment","src":"4295:48:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4328:9:30","nodeType":"YulIdentifier","src":"4328:9:30"},{"kind":"number","nativeSrc":"4339:2:30","nodeType":"YulLiteral","src":"4339:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4324:3:30","nodeType":"YulIdentifier","src":"4324:3:30"},"nativeSrc":"4324:18:30","nodeType":"YulFunctionCall","src":"4324:18:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4305:18:30","nodeType":"YulIdentifier","src":"4305:18:30"},"nativeSrc":"4305:38:30","nodeType":"YulFunctionCall","src":"4305:38:30"},"variableNames":[{"name":"value1","nativeSrc":"4295:6:30","nodeType":"YulIdentifier","src":"4295:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nativeSrc":"4049:300:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4094:9:30","nodeType":"YulTypedName","src":"4094:9:30","type":""},{"name":"dataEnd","nativeSrc":"4105:7:30","nodeType":"YulTypedName","src":"4105:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4117:6:30","nodeType":"YulTypedName","src":"4117:6:30","type":""},{"name":"value1","nativeSrc":"4125:6:30","nodeType":"YulTypedName","src":"4125:6:30","type":""}],"src":"4049:300:30"},{"body":{"nativeSrc":"4444:497:30","nodeType":"YulBlock","src":"4444:497:30","statements":[{"body":{"nativeSrc":"4490:16:30","nodeType":"YulBlock","src":"4490:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4499:1:30","nodeType":"YulLiteral","src":"4499:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"4502:1:30","nodeType":"YulLiteral","src":"4502:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4492:6:30","nodeType":"YulIdentifier","src":"4492:6:30"},"nativeSrc":"4492:12:30","nodeType":"YulFunctionCall","src":"4492:12:30"},"nativeSrc":"4492:12:30","nodeType":"YulExpressionStatement","src":"4492:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4465:7:30","nodeType":"YulIdentifier","src":"4465:7:30"},{"name":"headStart","nativeSrc":"4474:9:30","nodeType":"YulIdentifier","src":"4474:9:30"}],"functionName":{"name":"sub","nativeSrc":"4461:3:30","nodeType":"YulIdentifier","src":"4461:3:30"},"nativeSrc":"4461:23:30","nodeType":"YulFunctionCall","src":"4461:23:30"},{"kind":"number","nativeSrc":"4486:2:30","nodeType":"YulLiteral","src":"4486:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4457:3:30","nodeType":"YulIdentifier","src":"4457:3:30"},"nativeSrc":"4457:32:30","nodeType":"YulFunctionCall","src":"4457:32:30"},"nativeSrc":"4454:52:30","nodeType":"YulIf","src":"4454:52:30"},{"nativeSrc":"4515:37:30","nodeType":"YulVariableDeclaration","src":"4515:37:30","value":{"arguments":[{"name":"headStart","nativeSrc":"4542:9:30","nodeType":"YulIdentifier","src":"4542:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"4529:12:30","nodeType":"YulIdentifier","src":"4529:12:30"},"nativeSrc":"4529:23:30","nodeType":"YulFunctionCall","src":"4529:23:30"},"variables":[{"name":"offset","nativeSrc":"4519:6:30","nodeType":"YulTypedName","src":"4519:6:30","type":""}]},{"body":{"nativeSrc":"4595:16:30","nodeType":"YulBlock","src":"4595:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4604:1:30","nodeType":"YulLiteral","src":"4604:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"4607:1:30","nodeType":"YulLiteral","src":"4607:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4597:6:30","nodeType":"YulIdentifier","src":"4597:6:30"},"nativeSrc":"4597:12:30","nodeType":"YulFunctionCall","src":"4597:12:30"},"nativeSrc":"4597:12:30","nodeType":"YulExpressionStatement","src":"4597:12:30"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4567:6:30","nodeType":"YulIdentifier","src":"4567:6:30"},{"kind":"number","nativeSrc":"4575:18:30","nodeType":"YulLiteral","src":"4575:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4564:2:30","nodeType":"YulIdentifier","src":"4564:2:30"},"nativeSrc":"4564:30:30","nodeType":"YulFunctionCall","src":"4564:30:30"},"nativeSrc":"4561:50:30","nodeType":"YulIf","src":"4561:50:30"},{"nativeSrc":"4620:32:30","nodeType":"YulVariableDeclaration","src":"4620:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"4634:9:30","nodeType":"YulIdentifier","src":"4634:9:30"},{"name":"offset","nativeSrc":"4645:6:30","nodeType":"YulIdentifier","src":"4645:6:30"}],"functionName":{"name":"add","nativeSrc":"4630:3:30","nodeType":"YulIdentifier","src":"4630:3:30"},"nativeSrc":"4630:22:30","nodeType":"YulFunctionCall","src":"4630:22:30"},"variables":[{"name":"_1","nativeSrc":"4624:2:30","nodeType":"YulTypedName","src":"4624:2:30","type":""}]},{"body":{"nativeSrc":"4700:16:30","nodeType":"YulBlock","src":"4700:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4709:1:30","nodeType":"YulLiteral","src":"4709:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"4712:1:30","nodeType":"YulLiteral","src":"4712:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4702:6:30","nodeType":"YulIdentifier","src":"4702:6:30"},"nativeSrc":"4702:12:30","nodeType":"YulFunctionCall","src":"4702:12:30"},"nativeSrc":"4702:12:30","nodeType":"YulExpressionStatement","src":"4702:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"4679:2:30","nodeType":"YulIdentifier","src":"4679:2:30"},{"kind":"number","nativeSrc":"4683:4:30","nodeType":"YulLiteral","src":"4683:4:30","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"4675:3:30","nodeType":"YulIdentifier","src":"4675:3:30"},"nativeSrc":"4675:13:30","nodeType":"YulFunctionCall","src":"4675:13:30"},{"name":"dataEnd","nativeSrc":"4690:7:30","nodeType":"YulIdentifier","src":"4690:7:30"}],"functionName":{"name":"slt","nativeSrc":"4671:3:30","nodeType":"YulIdentifier","src":"4671:3:30"},"nativeSrc":"4671:27:30","nodeType":"YulFunctionCall","src":"4671:27:30"}],"functionName":{"name":"iszero","nativeSrc":"4664:6:30","nodeType":"YulIdentifier","src":"4664:6:30"},"nativeSrc":"4664:35:30","nodeType":"YulFunctionCall","src":"4664:35:30"},"nativeSrc":"4661:55:30","nodeType":"YulIf","src":"4661:55:30"},{"nativeSrc":"4725:30:30","nodeType":"YulVariableDeclaration","src":"4725:30:30","value":{"arguments":[{"name":"_1","nativeSrc":"4752:2:30","nodeType":"YulIdentifier","src":"4752:2:30"}],"functionName":{"name":"calldataload","nativeSrc":"4739:12:30","nodeType":"YulIdentifier","src":"4739:12:30"},"nativeSrc":"4739:16:30","nodeType":"YulFunctionCall","src":"4739:16:30"},"variables":[{"name":"length","nativeSrc":"4729:6:30","nodeType":"YulTypedName","src":"4729:6:30","type":""}]},{"body":{"nativeSrc":"4798:16:30","nodeType":"YulBlock","src":"4798:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4807:1:30","nodeType":"YulLiteral","src":"4807:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"4810:1:30","nodeType":"YulLiteral","src":"4810:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4800:6:30","nodeType":"YulIdentifier","src":"4800:6:30"},"nativeSrc":"4800:12:30","nodeType":"YulFunctionCall","src":"4800:12:30"},"nativeSrc":"4800:12:30","nodeType":"YulExpressionStatement","src":"4800:12:30"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"4770:6:30","nodeType":"YulIdentifier","src":"4770:6:30"},{"kind":"number","nativeSrc":"4778:18:30","nodeType":"YulLiteral","src":"4778:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4767:2:30","nodeType":"YulIdentifier","src":"4767:2:30"},"nativeSrc":"4767:30:30","nodeType":"YulFunctionCall","src":"4767:30:30"},"nativeSrc":"4764:50:30","nodeType":"YulIf","src":"4764:50:30"},{"body":{"nativeSrc":"4864:16:30","nodeType":"YulBlock","src":"4864:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4873:1:30","nodeType":"YulLiteral","src":"4873:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"4876:1:30","nodeType":"YulLiteral","src":"4876:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4866:6:30","nodeType":"YulIdentifier","src":"4866:6:30"},"nativeSrc":"4866:12:30","nodeType":"YulFunctionCall","src":"4866:12:30"},"nativeSrc":"4866:12:30","nodeType":"YulExpressionStatement","src":"4866:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"4837:2:30","nodeType":"YulIdentifier","src":"4837:2:30"},{"name":"length","nativeSrc":"4841:6:30","nodeType":"YulIdentifier","src":"4841:6:30"}],"functionName":{"name":"add","nativeSrc":"4833:3:30","nodeType":"YulIdentifier","src":"4833:3:30"},"nativeSrc":"4833:15:30","nodeType":"YulFunctionCall","src":"4833:15:30"},{"kind":"number","nativeSrc":"4850:2:30","nodeType":"YulLiteral","src":"4850:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4829:3:30","nodeType":"YulIdentifier","src":"4829:3:30"},"nativeSrc":"4829:24:30","nodeType":"YulFunctionCall","src":"4829:24:30"},{"name":"dataEnd","nativeSrc":"4855:7:30","nodeType":"YulIdentifier","src":"4855:7:30"}],"functionName":{"name":"gt","nativeSrc":"4826:2:30","nodeType":"YulIdentifier","src":"4826:2:30"},"nativeSrc":"4826:37:30","nodeType":"YulFunctionCall","src":"4826:37:30"},"nativeSrc":"4823:57:30","nodeType":"YulIf","src":"4823:57:30"},{"nativeSrc":"4889:21:30","nodeType":"YulAssignment","src":"4889:21:30","value":{"arguments":[{"name":"_1","nativeSrc":"4903:2:30","nodeType":"YulIdentifier","src":"4903:2:30"},{"kind":"number","nativeSrc":"4907:2:30","nodeType":"YulLiteral","src":"4907:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4899:3:30","nodeType":"YulIdentifier","src":"4899:3:30"},"nativeSrc":"4899:11:30","nodeType":"YulFunctionCall","src":"4899:11:30"},"variableNames":[{"name":"value0","nativeSrc":"4889:6:30","nodeType":"YulIdentifier","src":"4889:6:30"}]},{"nativeSrc":"4919:16:30","nodeType":"YulAssignment","src":"4919:16:30","value":{"name":"length","nativeSrc":"4929:6:30","nodeType":"YulIdentifier","src":"4929:6:30"},"variableNames":[{"name":"value1","nativeSrc":"4919:6:30","nodeType":"YulIdentifier","src":"4919:6:30"}]}]},"name":"abi_decode_tuple_t_string_calldata_ptr","nativeSrc":"4354:587:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4402:9:30","nodeType":"YulTypedName","src":"4402:9:30","type":""},{"name":"dataEnd","nativeSrc":"4413:7:30","nodeType":"YulTypedName","src":"4413:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4425:6:30","nodeType":"YulTypedName","src":"4425:6:30","type":""},{"name":"value1","nativeSrc":"4433:6:30","nodeType":"YulTypedName","src":"4433:6:30","type":""}],"src":"4354:587:30"},{"body":{"nativeSrc":"5016:116:30","nodeType":"YulBlock","src":"5016:116:30","statements":[{"body":{"nativeSrc":"5062:16:30","nodeType":"YulBlock","src":"5062:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5071:1:30","nodeType":"YulLiteral","src":"5071:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"5074:1:30","nodeType":"YulLiteral","src":"5074:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5064:6:30","nodeType":"YulIdentifier","src":"5064:6:30"},"nativeSrc":"5064:12:30","nodeType":"YulFunctionCall","src":"5064:12:30"},"nativeSrc":"5064:12:30","nodeType":"YulExpressionStatement","src":"5064:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5037:7:30","nodeType":"YulIdentifier","src":"5037:7:30"},{"name":"headStart","nativeSrc":"5046:9:30","nodeType":"YulIdentifier","src":"5046:9:30"}],"functionName":{"name":"sub","nativeSrc":"5033:3:30","nodeType":"YulIdentifier","src":"5033:3:30"},"nativeSrc":"5033:23:30","nodeType":"YulFunctionCall","src":"5033:23:30"},{"kind":"number","nativeSrc":"5058:2:30","nodeType":"YulLiteral","src":"5058:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5029:3:30","nodeType":"YulIdentifier","src":"5029:3:30"},"nativeSrc":"5029:32:30","nodeType":"YulFunctionCall","src":"5029:32:30"},"nativeSrc":"5026:52:30","nodeType":"YulIf","src":"5026:52:30"},{"nativeSrc":"5087:39:30","nodeType":"YulAssignment","src":"5087:39:30","value":{"arguments":[{"name":"headStart","nativeSrc":"5116:9:30","nodeType":"YulIdentifier","src":"5116:9:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5097:18:30","nodeType":"YulIdentifier","src":"5097:18:30"},"nativeSrc":"5097:29:30","nodeType":"YulFunctionCall","src":"5097:29:30"},"variableNames":[{"name":"value0","nativeSrc":"5087:6:30","nodeType":"YulIdentifier","src":"5087:6:30"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"4946:186:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4982:9:30","nodeType":"YulTypedName","src":"4982:9:30","type":""},{"name":"dataEnd","nativeSrc":"4993:7:30","nodeType":"YulTypedName","src":"4993:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5005:6:30","nodeType":"YulTypedName","src":"5005:6:30","type":""}],"src":"4946:186:30"},{"body":{"nativeSrc":"5206:211:30","nodeType":"YulBlock","src":"5206:211:30","statements":[{"body":{"nativeSrc":"5252:16:30","nodeType":"YulBlock","src":"5252:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5261:1:30","nodeType":"YulLiteral","src":"5261:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"5264:1:30","nodeType":"YulLiteral","src":"5264:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5254:6:30","nodeType":"YulIdentifier","src":"5254:6:30"},"nativeSrc":"5254:12:30","nodeType":"YulFunctionCall","src":"5254:12:30"},"nativeSrc":"5254:12:30","nodeType":"YulExpressionStatement","src":"5254:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5227:7:30","nodeType":"YulIdentifier","src":"5227:7:30"},{"name":"headStart","nativeSrc":"5236:9:30","nodeType":"YulIdentifier","src":"5236:9:30"}],"functionName":{"name":"sub","nativeSrc":"5223:3:30","nodeType":"YulIdentifier","src":"5223:3:30"},"nativeSrc":"5223:23:30","nodeType":"YulFunctionCall","src":"5223:23:30"},{"kind":"number","nativeSrc":"5248:2:30","nodeType":"YulLiteral","src":"5248:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5219:3:30","nodeType":"YulIdentifier","src":"5219:3:30"},"nativeSrc":"5219:32:30","nodeType":"YulFunctionCall","src":"5219:32:30"},"nativeSrc":"5216:52:30","nodeType":"YulIf","src":"5216:52:30"},{"nativeSrc":"5277:36:30","nodeType":"YulVariableDeclaration","src":"5277:36:30","value":{"arguments":[{"name":"headStart","nativeSrc":"5303:9:30","nodeType":"YulIdentifier","src":"5303:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"5290:12:30","nodeType":"YulIdentifier","src":"5290:12:30"},"nativeSrc":"5290:23:30","nodeType":"YulFunctionCall","src":"5290:23:30"},"variables":[{"name":"value","nativeSrc":"5281:5:30","nodeType":"YulTypedName","src":"5281:5:30","type":""}]},{"body":{"nativeSrc":"5371:16:30","nodeType":"YulBlock","src":"5371:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5380:1:30","nodeType":"YulLiteral","src":"5380:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"5383:1:30","nodeType":"YulLiteral","src":"5383:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5373:6:30","nodeType":"YulIdentifier","src":"5373:6:30"},"nativeSrc":"5373:12:30","nodeType":"YulFunctionCall","src":"5373:12:30"},"nativeSrc":"5373:12:30","nodeType":"YulExpressionStatement","src":"5373:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5335:5:30","nodeType":"YulIdentifier","src":"5335:5:30"},{"arguments":[{"name":"value","nativeSrc":"5346:5:30","nodeType":"YulIdentifier","src":"5346:5:30"},{"kind":"number","nativeSrc":"5353:14:30","nodeType":"YulLiteral","src":"5353:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5342:3:30","nodeType":"YulIdentifier","src":"5342:3:30"},"nativeSrc":"5342:26:30","nodeType":"YulFunctionCall","src":"5342:26:30"}],"functionName":{"name":"eq","nativeSrc":"5332:2:30","nodeType":"YulIdentifier","src":"5332:2:30"},"nativeSrc":"5332:37:30","nodeType":"YulFunctionCall","src":"5332:37:30"}],"functionName":{"name":"iszero","nativeSrc":"5325:6:30","nodeType":"YulIdentifier","src":"5325:6:30"},"nativeSrc":"5325:45:30","nodeType":"YulFunctionCall","src":"5325:45:30"},"nativeSrc":"5322:65:30","nodeType":"YulIf","src":"5322:65:30"},{"nativeSrc":"5396:15:30","nodeType":"YulAssignment","src":"5396:15:30","value":{"name":"value","nativeSrc":"5406:5:30","nodeType":"YulIdentifier","src":"5406:5:30"},"variableNames":[{"name":"value0","nativeSrc":"5396:6:30","nodeType":"YulIdentifier","src":"5396:6:30"}]}]},"name":"abi_decode_tuple_t_uint48","nativeSrc":"5137:280:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5172:9:30","nodeType":"YulTypedName","src":"5172:9:30","type":""},{"name":"dataEnd","nativeSrc":"5183:7:30","nodeType":"YulTypedName","src":"5183:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5195:6:30","nodeType":"YulTypedName","src":"5195:6:30","type":""}],"src":"5137:280:30"},{"body":{"nativeSrc":"5523:76:30","nodeType":"YulBlock","src":"5523:76:30","statements":[{"nativeSrc":"5533:26:30","nodeType":"YulAssignment","src":"5533:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"5545:9:30","nodeType":"YulIdentifier","src":"5545:9:30"},{"kind":"number","nativeSrc":"5556:2:30","nodeType":"YulLiteral","src":"5556:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5541:3:30","nodeType":"YulIdentifier","src":"5541:3:30"},"nativeSrc":"5541:18:30","nodeType":"YulFunctionCall","src":"5541:18:30"},"variableNames":[{"name":"tail","nativeSrc":"5533:4:30","nodeType":"YulIdentifier","src":"5533:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5575:9:30","nodeType":"YulIdentifier","src":"5575:9:30"},{"name":"value0","nativeSrc":"5586:6:30","nodeType":"YulIdentifier","src":"5586:6:30"}],"functionName":{"name":"mstore","nativeSrc":"5568:6:30","nodeType":"YulIdentifier","src":"5568:6:30"},"nativeSrc":"5568:25:30","nodeType":"YulFunctionCall","src":"5568:25:30"},"nativeSrc":"5568:25:30","nodeType":"YulExpressionStatement","src":"5568:25:30"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"5422:177:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5492:9:30","nodeType":"YulTypedName","src":"5492:9:30","type":""},{"name":"value0","nativeSrc":"5503:6:30","nodeType":"YulTypedName","src":"5503:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5514:4:30","nodeType":"YulTypedName","src":"5514:4:30","type":""}],"src":"5422:177:30"},{"body":{"nativeSrc":"5729:161:30","nodeType":"YulBlock","src":"5729:161:30","statements":[{"nativeSrc":"5739:26:30","nodeType":"YulAssignment","src":"5739:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"5751:9:30","nodeType":"YulIdentifier","src":"5751:9:30"},{"kind":"number","nativeSrc":"5762:2:30","nodeType":"YulLiteral","src":"5762:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5747:3:30","nodeType":"YulIdentifier","src":"5747:3:30"},"nativeSrc":"5747:18:30","nodeType":"YulFunctionCall","src":"5747:18:30"},"variableNames":[{"name":"tail","nativeSrc":"5739:4:30","nodeType":"YulIdentifier","src":"5739:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5781:9:30","nodeType":"YulIdentifier","src":"5781:9:30"},{"arguments":[{"name":"value0","nativeSrc":"5796:6:30","nodeType":"YulIdentifier","src":"5796:6:30"},{"kind":"number","nativeSrc":"5804:14:30","nodeType":"YulLiteral","src":"5804:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5792:3:30","nodeType":"YulIdentifier","src":"5792:3:30"},"nativeSrc":"5792:27:30","nodeType":"YulFunctionCall","src":"5792:27:30"}],"functionName":{"name":"mstore","nativeSrc":"5774:6:30","nodeType":"YulIdentifier","src":"5774:6:30"},"nativeSrc":"5774:46:30","nodeType":"YulFunctionCall","src":"5774:46:30"},"nativeSrc":"5774:46:30","nodeType":"YulExpressionStatement","src":"5774:46:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5840:9:30","nodeType":"YulIdentifier","src":"5840:9:30"},{"kind":"number","nativeSrc":"5851:2:30","nodeType":"YulLiteral","src":"5851:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5836:3:30","nodeType":"YulIdentifier","src":"5836:3:30"},"nativeSrc":"5836:18:30","nodeType":"YulFunctionCall","src":"5836:18:30"},{"arguments":[{"name":"value1","nativeSrc":"5860:6:30","nodeType":"YulIdentifier","src":"5860:6:30"},{"kind":"number","nativeSrc":"5868:14:30","nodeType":"YulLiteral","src":"5868:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5856:3:30","nodeType":"YulIdentifier","src":"5856:3:30"},"nativeSrc":"5856:27:30","nodeType":"YulFunctionCall","src":"5856:27:30"}],"functionName":{"name":"mstore","nativeSrc":"5829:6:30","nodeType":"YulIdentifier","src":"5829:6:30"},"nativeSrc":"5829:55:30","nodeType":"YulFunctionCall","src":"5829:55:30"},"nativeSrc":"5829:55:30","nodeType":"YulExpressionStatement","src":"5829:55:30"}]},"name":"abi_encode_tuple_t_uint48_t_uint48__to_t_uint48_t_uint48__fromStack_reversed","nativeSrc":"5604:286:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5690:9:30","nodeType":"YulTypedName","src":"5690:9:30","type":""},{"name":"value1","nativeSrc":"5701:6:30","nodeType":"YulTypedName","src":"5701:6:30","type":""},{"name":"value0","nativeSrc":"5709:6:30","nodeType":"YulTypedName","src":"5709:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5720:4:30","nodeType":"YulTypedName","src":"5720:4:30","type":""}],"src":"5604:286:30"},{"body":{"nativeSrc":"5979:263:30","nodeType":"YulBlock","src":"5979:263:30","statements":[{"body":{"nativeSrc":"6025:16:30","nodeType":"YulBlock","src":"6025:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6034:1:30","nodeType":"YulLiteral","src":"6034:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"6037:1:30","nodeType":"YulLiteral","src":"6037:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6027:6:30","nodeType":"YulIdentifier","src":"6027:6:30"},"nativeSrc":"6027:12:30","nodeType":"YulFunctionCall","src":"6027:12:30"},"nativeSrc":"6027:12:30","nodeType":"YulExpressionStatement","src":"6027:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6000:7:30","nodeType":"YulIdentifier","src":"6000:7:30"},{"name":"headStart","nativeSrc":"6009:9:30","nodeType":"YulIdentifier","src":"6009:9:30"}],"functionName":{"name":"sub","nativeSrc":"5996:3:30","nodeType":"YulIdentifier","src":"5996:3:30"},"nativeSrc":"5996:23:30","nodeType":"YulFunctionCall","src":"5996:23:30"},{"kind":"number","nativeSrc":"6021:2:30","nodeType":"YulLiteral","src":"6021:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5992:3:30","nodeType":"YulIdentifier","src":"5992:3:30"},"nativeSrc":"5992:32:30","nodeType":"YulFunctionCall","src":"5992:32:30"},"nativeSrc":"5989:52:30","nodeType":"YulIf","src":"5989:52:30"},{"nativeSrc":"6050:39:30","nodeType":"YulAssignment","src":"6050:39:30","value":{"arguments":[{"name":"headStart","nativeSrc":"6079:9:30","nodeType":"YulIdentifier","src":"6079:9:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"6060:18:30","nodeType":"YulIdentifier","src":"6060:18:30"},"nativeSrc":"6060:29:30","nodeType":"YulFunctionCall","src":"6060:29:30"},"variableNames":[{"name":"value0","nativeSrc":"6050:6:30","nodeType":"YulIdentifier","src":"6050:6:30"}]},{"nativeSrc":"6098:45:30","nodeType":"YulVariableDeclaration","src":"6098:45:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6128:9:30","nodeType":"YulIdentifier","src":"6128:9:30"},{"kind":"number","nativeSrc":"6139:2:30","nodeType":"YulLiteral","src":"6139:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6124:3:30","nodeType":"YulIdentifier","src":"6124:3:30"},"nativeSrc":"6124:18:30","nodeType":"YulFunctionCall","src":"6124:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"6111:12:30","nodeType":"YulIdentifier","src":"6111:12:30"},"nativeSrc":"6111:32:30","nodeType":"YulFunctionCall","src":"6111:32:30"},"variables":[{"name":"value","nativeSrc":"6102:5:30","nodeType":"YulTypedName","src":"6102:5:30","type":""}]},{"body":{"nativeSrc":"6196:16:30","nodeType":"YulBlock","src":"6196:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6205:1:30","nodeType":"YulLiteral","src":"6205:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"6208:1:30","nodeType":"YulLiteral","src":"6208:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6198:6:30","nodeType":"YulIdentifier","src":"6198:6:30"},"nativeSrc":"6198:12:30","nodeType":"YulFunctionCall","src":"6198:12:30"},"nativeSrc":"6198:12:30","nodeType":"YulExpressionStatement","src":"6198:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6165:5:30","nodeType":"YulIdentifier","src":"6165:5:30"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6186:5:30","nodeType":"YulIdentifier","src":"6186:5:30"}],"functionName":{"name":"iszero","nativeSrc":"6179:6:30","nodeType":"YulIdentifier","src":"6179:6:30"},"nativeSrc":"6179:13:30","nodeType":"YulFunctionCall","src":"6179:13:30"}],"functionName":{"name":"iszero","nativeSrc":"6172:6:30","nodeType":"YulIdentifier","src":"6172:6:30"},"nativeSrc":"6172:21:30","nodeType":"YulFunctionCall","src":"6172:21:30"}],"functionName":{"name":"eq","nativeSrc":"6162:2:30","nodeType":"YulIdentifier","src":"6162:2:30"},"nativeSrc":"6162:32:30","nodeType":"YulFunctionCall","src":"6162:32:30"}],"functionName":{"name":"iszero","nativeSrc":"6155:6:30","nodeType":"YulIdentifier","src":"6155:6:30"},"nativeSrc":"6155:40:30","nodeType":"YulFunctionCall","src":"6155:40:30"},"nativeSrc":"6152:60:30","nodeType":"YulIf","src":"6152:60:30"},{"nativeSrc":"6221:15:30","nodeType":"YulAssignment","src":"6221:15:30","value":{"name":"value","nativeSrc":"6231:5:30","nodeType":"YulIdentifier","src":"6231:5:30"},"variableNames":[{"name":"value1","nativeSrc":"6221:6:30","nodeType":"YulIdentifier","src":"6221:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nativeSrc":"5895:347:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5937:9:30","nodeType":"YulTypedName","src":"5937:9:30","type":""},{"name":"dataEnd","nativeSrc":"5948:7:30","nodeType":"YulTypedName","src":"5948:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5960:6:30","nodeType":"YulTypedName","src":"5960:6:30","type":""},{"name":"value1","nativeSrc":"5968:6:30","nodeType":"YulTypedName","src":"5968:6:30","type":""}],"src":"5895:347:30"},{"body":{"nativeSrc":"6279:95:30","nodeType":"YulBlock","src":"6279:95:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6296:1:30","nodeType":"YulLiteral","src":"6296:1:30","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"6303:3:30","nodeType":"YulLiteral","src":"6303:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"6308:10:30","nodeType":"YulLiteral","src":"6308:10:30","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"6299:3:30","nodeType":"YulIdentifier","src":"6299:3:30"},"nativeSrc":"6299:20:30","nodeType":"YulFunctionCall","src":"6299:20:30"}],"functionName":{"name":"mstore","nativeSrc":"6289:6:30","nodeType":"YulIdentifier","src":"6289:6:30"},"nativeSrc":"6289:31:30","nodeType":"YulFunctionCall","src":"6289:31:30"},"nativeSrc":"6289:31:30","nodeType":"YulExpressionStatement","src":"6289:31:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6336:1:30","nodeType":"YulLiteral","src":"6336:1:30","type":"","value":"4"},{"kind":"number","nativeSrc":"6339:4:30","nodeType":"YulLiteral","src":"6339:4:30","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"6329:6:30","nodeType":"YulIdentifier","src":"6329:6:30"},"nativeSrc":"6329:15:30","nodeType":"YulFunctionCall","src":"6329:15:30"},"nativeSrc":"6329:15:30","nodeType":"YulExpressionStatement","src":"6329:15:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6360:1:30","nodeType":"YulLiteral","src":"6360:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"6363:4:30","nodeType":"YulLiteral","src":"6363:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"6353:6:30","nodeType":"YulIdentifier","src":"6353:6:30"},"nativeSrc":"6353:15:30","nodeType":"YulFunctionCall","src":"6353:15:30"},"nativeSrc":"6353:15:30","nodeType":"YulExpressionStatement","src":"6353:15:30"}]},"name":"panic_error_0x41","nativeSrc":"6247:127:30","nodeType":"YulFunctionDefinition","src":"6247:127:30"},{"body":{"nativeSrc":"6509:1077:30","nodeType":"YulBlock","src":"6509:1077:30","statements":[{"body":{"nativeSrc":"6556:16:30","nodeType":"YulBlock","src":"6556:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6565:1:30","nodeType":"YulLiteral","src":"6565:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"6568:1:30","nodeType":"YulLiteral","src":"6568:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6558:6:30","nodeType":"YulIdentifier","src":"6558:6:30"},"nativeSrc":"6558:12:30","nodeType":"YulFunctionCall","src":"6558:12:30"},"nativeSrc":"6558:12:30","nodeType":"YulExpressionStatement","src":"6558:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6530:7:30","nodeType":"YulIdentifier","src":"6530:7:30"},{"name":"headStart","nativeSrc":"6539:9:30","nodeType":"YulIdentifier","src":"6539:9:30"}],"functionName":{"name":"sub","nativeSrc":"6526:3:30","nodeType":"YulIdentifier","src":"6526:3:30"},"nativeSrc":"6526:23:30","nodeType":"YulFunctionCall","src":"6526:23:30"},{"kind":"number","nativeSrc":"6551:3:30","nodeType":"YulLiteral","src":"6551:3:30","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"6522:3:30","nodeType":"YulIdentifier","src":"6522:3:30"},"nativeSrc":"6522:33:30","nodeType":"YulFunctionCall","src":"6522:33:30"},"nativeSrc":"6519:53:30","nodeType":"YulIf","src":"6519:53:30"},{"nativeSrc":"6581:39:30","nodeType":"YulAssignment","src":"6581:39:30","value":{"arguments":[{"name":"headStart","nativeSrc":"6610:9:30","nodeType":"YulIdentifier","src":"6610:9:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"6591:18:30","nodeType":"YulIdentifier","src":"6591:18:30"},"nativeSrc":"6591:29:30","nodeType":"YulFunctionCall","src":"6591:29:30"},"variableNames":[{"name":"value0","nativeSrc":"6581:6:30","nodeType":"YulIdentifier","src":"6581:6:30"}]},{"nativeSrc":"6629:48:30","nodeType":"YulAssignment","src":"6629:48:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6662:9:30","nodeType":"YulIdentifier","src":"6662:9:30"},{"kind":"number","nativeSrc":"6673:2:30","nodeType":"YulLiteral","src":"6673:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6658:3:30","nodeType":"YulIdentifier","src":"6658:3:30"},"nativeSrc":"6658:18:30","nodeType":"YulFunctionCall","src":"6658:18:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"6639:18:30","nodeType":"YulIdentifier","src":"6639:18:30"},"nativeSrc":"6639:38:30","nodeType":"YulFunctionCall","src":"6639:38:30"},"variableNames":[{"name":"value1","nativeSrc":"6629:6:30","nodeType":"YulIdentifier","src":"6629:6:30"}]},{"nativeSrc":"6686:14:30","nodeType":"YulVariableDeclaration","src":"6686:14:30","value":{"kind":"number","nativeSrc":"6699:1:30","nodeType":"YulLiteral","src":"6699:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6690:5:30","nodeType":"YulTypedName","src":"6690:5:30","type":""}]},{"nativeSrc":"6709:41:30","nodeType":"YulAssignment","src":"6709:41:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6735:9:30","nodeType":"YulIdentifier","src":"6735:9:30"},{"kind":"number","nativeSrc":"6746:2:30","nodeType":"YulLiteral","src":"6746:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6731:3:30","nodeType":"YulIdentifier","src":"6731:3:30"},"nativeSrc":"6731:18:30","nodeType":"YulFunctionCall","src":"6731:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"6718:12:30","nodeType":"YulIdentifier","src":"6718:12:30"},"nativeSrc":"6718:32:30","nodeType":"YulFunctionCall","src":"6718:32:30"},"variableNames":[{"name":"value","nativeSrc":"6709:5:30","nodeType":"YulIdentifier","src":"6709:5:30"}]},{"nativeSrc":"6759:15:30","nodeType":"YulAssignment","src":"6759:15:30","value":{"name":"value","nativeSrc":"6769:5:30","nodeType":"YulIdentifier","src":"6769:5:30"},"variableNames":[{"name":"value2","nativeSrc":"6759:6:30","nodeType":"YulIdentifier","src":"6759:6:30"}]},{"nativeSrc":"6783:46:30","nodeType":"YulVariableDeclaration","src":"6783:46:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6814:9:30","nodeType":"YulIdentifier","src":"6814:9:30"},{"kind":"number","nativeSrc":"6825:2:30","nodeType":"YulLiteral","src":"6825:2:30","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6810:3:30","nodeType":"YulIdentifier","src":"6810:3:30"},"nativeSrc":"6810:18:30","nodeType":"YulFunctionCall","src":"6810:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"6797:12:30","nodeType":"YulIdentifier","src":"6797:12:30"},"nativeSrc":"6797:32:30","nodeType":"YulFunctionCall","src":"6797:32:30"},"variables":[{"name":"offset","nativeSrc":"6787:6:30","nodeType":"YulTypedName","src":"6787:6:30","type":""}]},{"body":{"nativeSrc":"6872:16:30","nodeType":"YulBlock","src":"6872:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6881:1:30","nodeType":"YulLiteral","src":"6881:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"6884:1:30","nodeType":"YulLiteral","src":"6884:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6874:6:30","nodeType":"YulIdentifier","src":"6874:6:30"},"nativeSrc":"6874:12:30","nodeType":"YulFunctionCall","src":"6874:12:30"},"nativeSrc":"6874:12:30","nodeType":"YulExpressionStatement","src":"6874:12:30"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6844:6:30","nodeType":"YulIdentifier","src":"6844:6:30"},{"kind":"number","nativeSrc":"6852:18:30","nodeType":"YulLiteral","src":"6852:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6841:2:30","nodeType":"YulIdentifier","src":"6841:2:30"},"nativeSrc":"6841:30:30","nodeType":"YulFunctionCall","src":"6841:30:30"},"nativeSrc":"6838:50:30","nodeType":"YulIf","src":"6838:50:30"},{"nativeSrc":"6897:32:30","nodeType":"YulVariableDeclaration","src":"6897:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"6911:9:30","nodeType":"YulIdentifier","src":"6911:9:30"},{"name":"offset","nativeSrc":"6922:6:30","nodeType":"YulIdentifier","src":"6922:6:30"}],"functionName":{"name":"add","nativeSrc":"6907:3:30","nodeType":"YulIdentifier","src":"6907:3:30"},"nativeSrc":"6907:22:30","nodeType":"YulFunctionCall","src":"6907:22:30"},"variables":[{"name":"_1","nativeSrc":"6901:2:30","nodeType":"YulTypedName","src":"6901:2:30","type":""}]},{"body":{"nativeSrc":"6977:16:30","nodeType":"YulBlock","src":"6977:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6986:1:30","nodeType":"YulLiteral","src":"6986:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"6989:1:30","nodeType":"YulLiteral","src":"6989:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6979:6:30","nodeType":"YulIdentifier","src":"6979:6:30"},"nativeSrc":"6979:12:30","nodeType":"YulFunctionCall","src":"6979:12:30"},"nativeSrc":"6979:12:30","nodeType":"YulExpressionStatement","src":"6979:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"6956:2:30","nodeType":"YulIdentifier","src":"6956:2:30"},{"kind":"number","nativeSrc":"6960:4:30","nodeType":"YulLiteral","src":"6960:4:30","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"6952:3:30","nodeType":"YulIdentifier","src":"6952:3:30"},"nativeSrc":"6952:13:30","nodeType":"YulFunctionCall","src":"6952:13:30"},{"name":"dataEnd","nativeSrc":"6967:7:30","nodeType":"YulIdentifier","src":"6967:7:30"}],"functionName":{"name":"slt","nativeSrc":"6948:3:30","nodeType":"YulIdentifier","src":"6948:3:30"},"nativeSrc":"6948:27:30","nodeType":"YulFunctionCall","src":"6948:27:30"}],"functionName":{"name":"iszero","nativeSrc":"6941:6:30","nodeType":"YulIdentifier","src":"6941:6:30"},"nativeSrc":"6941:35:30","nodeType":"YulFunctionCall","src":"6941:35:30"},"nativeSrc":"6938:55:30","nodeType":"YulIf","src":"6938:55:30"},{"nativeSrc":"7002:30:30","nodeType":"YulVariableDeclaration","src":"7002:30:30","value":{"arguments":[{"name":"_1","nativeSrc":"7029:2:30","nodeType":"YulIdentifier","src":"7029:2:30"}],"functionName":{"name":"calldataload","nativeSrc":"7016:12:30","nodeType":"YulIdentifier","src":"7016:12:30"},"nativeSrc":"7016:16:30","nodeType":"YulFunctionCall","src":"7016:16:30"},"variables":[{"name":"length","nativeSrc":"7006:6:30","nodeType":"YulTypedName","src":"7006:6:30","type":""}]},{"body":{"nativeSrc":"7075:22:30","nodeType":"YulBlock","src":"7075:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"7077:16:30","nodeType":"YulIdentifier","src":"7077:16:30"},"nativeSrc":"7077:18:30","nodeType":"YulFunctionCall","src":"7077:18:30"},"nativeSrc":"7077:18:30","nodeType":"YulExpressionStatement","src":"7077:18:30"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"7047:6:30","nodeType":"YulIdentifier","src":"7047:6:30"},{"kind":"number","nativeSrc":"7055:18:30","nodeType":"YulLiteral","src":"7055:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7044:2:30","nodeType":"YulIdentifier","src":"7044:2:30"},"nativeSrc":"7044:30:30","nodeType":"YulFunctionCall","src":"7044:30:30"},"nativeSrc":"7041:56:30","nodeType":"YulIf","src":"7041:56:30"},{"nativeSrc":"7106:23:30","nodeType":"YulVariableDeclaration","src":"7106:23:30","value":{"arguments":[{"kind":"number","nativeSrc":"7126:2:30","nodeType":"YulLiteral","src":"7126:2:30","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"7120:5:30","nodeType":"YulIdentifier","src":"7120:5:30"},"nativeSrc":"7120:9:30","nodeType":"YulFunctionCall","src":"7120:9:30"},"variables":[{"name":"memPtr","nativeSrc":"7110:6:30","nodeType":"YulTypedName","src":"7110:6:30","type":""}]},{"nativeSrc":"7138:85:30","nodeType":"YulVariableDeclaration","src":"7138:85:30","value":{"arguments":[{"name":"memPtr","nativeSrc":"7160:6:30","nodeType":"YulIdentifier","src":"7160:6:30"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"7184:6:30","nodeType":"YulIdentifier","src":"7184:6:30"},{"kind":"number","nativeSrc":"7192:4:30","nodeType":"YulLiteral","src":"7192:4:30","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"7180:3:30","nodeType":"YulIdentifier","src":"7180:3:30"},"nativeSrc":"7180:17:30","nodeType":"YulFunctionCall","src":"7180:17:30"},{"arguments":[{"kind":"number","nativeSrc":"7203:2:30","nodeType":"YulLiteral","src":"7203:2:30","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"7199:3:30","nodeType":"YulIdentifier","src":"7199:3:30"},"nativeSrc":"7199:7:30","nodeType":"YulFunctionCall","src":"7199:7:30"}],"functionName":{"name":"and","nativeSrc":"7176:3:30","nodeType":"YulIdentifier","src":"7176:3:30"},"nativeSrc":"7176:31:30","nodeType":"YulFunctionCall","src":"7176:31:30"},{"kind":"number","nativeSrc":"7209:2:30","nodeType":"YulLiteral","src":"7209:2:30","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"7172:3:30","nodeType":"YulIdentifier","src":"7172:3:30"},"nativeSrc":"7172:40:30","nodeType":"YulFunctionCall","src":"7172:40:30"},{"arguments":[{"kind":"number","nativeSrc":"7218:2:30","nodeType":"YulLiteral","src":"7218:2:30","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"7214:3:30","nodeType":"YulIdentifier","src":"7214:3:30"},"nativeSrc":"7214:7:30","nodeType":"YulFunctionCall","src":"7214:7:30"}],"functionName":{"name":"and","nativeSrc":"7168:3:30","nodeType":"YulIdentifier","src":"7168:3:30"},"nativeSrc":"7168:54:30","nodeType":"YulFunctionCall","src":"7168:54:30"}],"functionName":{"name":"add","nativeSrc":"7156:3:30","nodeType":"YulIdentifier","src":"7156:3:30"},"nativeSrc":"7156:67:30","nodeType":"YulFunctionCall","src":"7156:67:30"},"variables":[{"name":"newFreePtr","nativeSrc":"7142:10:30","nodeType":"YulTypedName","src":"7142:10:30","type":""}]},{"body":{"nativeSrc":"7298:22:30","nodeType":"YulBlock","src":"7298:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"7300:16:30","nodeType":"YulIdentifier","src":"7300:16:30"},"nativeSrc":"7300:18:30","nodeType":"YulFunctionCall","src":"7300:18:30"},"nativeSrc":"7300:18:30","nodeType":"YulExpressionStatement","src":"7300:18:30"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"7241:10:30","nodeType":"YulIdentifier","src":"7241:10:30"},{"kind":"number","nativeSrc":"7253:18:30","nodeType":"YulLiteral","src":"7253:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7238:2:30","nodeType":"YulIdentifier","src":"7238:2:30"},"nativeSrc":"7238:34:30","nodeType":"YulFunctionCall","src":"7238:34:30"},{"arguments":[{"name":"newFreePtr","nativeSrc":"7277:10:30","nodeType":"YulIdentifier","src":"7277:10:30"},{"name":"memPtr","nativeSrc":"7289:6:30","nodeType":"YulIdentifier","src":"7289:6:30"}],"functionName":{"name":"lt","nativeSrc":"7274:2:30","nodeType":"YulIdentifier","src":"7274:2:30"},"nativeSrc":"7274:22:30","nodeType":"YulFunctionCall","src":"7274:22:30"}],"functionName":{"name":"or","nativeSrc":"7235:2:30","nodeType":"YulIdentifier","src":"7235:2:30"},"nativeSrc":"7235:62:30","nodeType":"YulFunctionCall","src":"7235:62:30"},"nativeSrc":"7232:88:30","nodeType":"YulIf","src":"7232:88:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7336:2:30","nodeType":"YulLiteral","src":"7336:2:30","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"7340:10:30","nodeType":"YulIdentifier","src":"7340:10:30"}],"functionName":{"name":"mstore","nativeSrc":"7329:6:30","nodeType":"YulIdentifier","src":"7329:6:30"},"nativeSrc":"7329:22:30","nodeType":"YulFunctionCall","src":"7329:22:30"},"nativeSrc":"7329:22:30","nodeType":"YulExpressionStatement","src":"7329:22:30"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"7367:6:30","nodeType":"YulIdentifier","src":"7367:6:30"},{"name":"length","nativeSrc":"7375:6:30","nodeType":"YulIdentifier","src":"7375:6:30"}],"functionName":{"name":"mstore","nativeSrc":"7360:6:30","nodeType":"YulIdentifier","src":"7360:6:30"},"nativeSrc":"7360:22:30","nodeType":"YulFunctionCall","src":"7360:22:30"},"nativeSrc":"7360:22:30","nodeType":"YulExpressionStatement","src":"7360:22:30"},{"body":{"nativeSrc":"7432:16:30","nodeType":"YulBlock","src":"7432:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7441:1:30","nodeType":"YulLiteral","src":"7441:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"7444:1:30","nodeType":"YulLiteral","src":"7444:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7434:6:30","nodeType":"YulIdentifier","src":"7434:6:30"},"nativeSrc":"7434:12:30","nodeType":"YulFunctionCall","src":"7434:12:30"},"nativeSrc":"7434:12:30","nodeType":"YulExpressionStatement","src":"7434:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7405:2:30","nodeType":"YulIdentifier","src":"7405:2:30"},{"name":"length","nativeSrc":"7409:6:30","nodeType":"YulIdentifier","src":"7409:6:30"}],"functionName":{"name":"add","nativeSrc":"7401:3:30","nodeType":"YulIdentifier","src":"7401:3:30"},"nativeSrc":"7401:15:30","nodeType":"YulFunctionCall","src":"7401:15:30"},{"kind":"number","nativeSrc":"7418:2:30","nodeType":"YulLiteral","src":"7418:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7397:3:30","nodeType":"YulIdentifier","src":"7397:3:30"},"nativeSrc":"7397:24:30","nodeType":"YulFunctionCall","src":"7397:24:30"},{"name":"dataEnd","nativeSrc":"7423:7:30","nodeType":"YulIdentifier","src":"7423:7:30"}],"functionName":{"name":"gt","nativeSrc":"7394:2:30","nodeType":"YulIdentifier","src":"7394:2:30"},"nativeSrc":"7394:37:30","nodeType":"YulFunctionCall","src":"7394:37:30"},"nativeSrc":"7391:57:30","nodeType":"YulIf","src":"7391:57:30"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"7474:6:30","nodeType":"YulIdentifier","src":"7474:6:30"},{"kind":"number","nativeSrc":"7482:2:30","nodeType":"YulLiteral","src":"7482:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7470:3:30","nodeType":"YulIdentifier","src":"7470:3:30"},"nativeSrc":"7470:15:30","nodeType":"YulFunctionCall","src":"7470:15:30"},{"arguments":[{"name":"_1","nativeSrc":"7491:2:30","nodeType":"YulIdentifier","src":"7491:2:30"},{"kind":"number","nativeSrc":"7495:2:30","nodeType":"YulLiteral","src":"7495:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7487:3:30","nodeType":"YulIdentifier","src":"7487:3:30"},"nativeSrc":"7487:11:30","nodeType":"YulFunctionCall","src":"7487:11:30"},{"name":"length","nativeSrc":"7500:6:30","nodeType":"YulIdentifier","src":"7500:6:30"}],"functionName":{"name":"calldatacopy","nativeSrc":"7457:12:30","nodeType":"YulIdentifier","src":"7457:12:30"},"nativeSrc":"7457:50:30","nodeType":"YulFunctionCall","src":"7457:50:30"},"nativeSrc":"7457:50:30","nodeType":"YulExpressionStatement","src":"7457:50:30"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"7531:6:30","nodeType":"YulIdentifier","src":"7531:6:30"},{"name":"length","nativeSrc":"7539:6:30","nodeType":"YulIdentifier","src":"7539:6:30"}],"functionName":{"name":"add","nativeSrc":"7527:3:30","nodeType":"YulIdentifier","src":"7527:3:30"},"nativeSrc":"7527:19:30","nodeType":"YulFunctionCall","src":"7527:19:30"},{"kind":"number","nativeSrc":"7548:2:30","nodeType":"YulLiteral","src":"7548:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7523:3:30","nodeType":"YulIdentifier","src":"7523:3:30"},"nativeSrc":"7523:28:30","nodeType":"YulFunctionCall","src":"7523:28:30"},{"kind":"number","nativeSrc":"7553:1:30","nodeType":"YulLiteral","src":"7553:1:30","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"7516:6:30","nodeType":"YulIdentifier","src":"7516:6:30"},"nativeSrc":"7516:39:30","nodeType":"YulFunctionCall","src":"7516:39:30"},"nativeSrc":"7516:39:30","nodeType":"YulExpressionStatement","src":"7516:39:30"},{"nativeSrc":"7564:16:30","nodeType":"YulAssignment","src":"7564:16:30","value":{"name":"memPtr","nativeSrc":"7574:6:30","nodeType":"YulIdentifier","src":"7574:6:30"},"variableNames":[{"name":"value3","nativeSrc":"7564:6:30","nodeType":"YulIdentifier","src":"7564:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nativeSrc":"6379:1207:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6451:9:30","nodeType":"YulTypedName","src":"6451:9:30","type":""},{"name":"dataEnd","nativeSrc":"6462:7:30","nodeType":"YulTypedName","src":"6462:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6474:6:30","nodeType":"YulTypedName","src":"6474:6:30","type":""},{"name":"value1","nativeSrc":"6482:6:30","nodeType":"YulTypedName","src":"6482:6:30","type":""},{"name":"value2","nativeSrc":"6490:6:30","nodeType":"YulTypedName","src":"6490:6:30","type":""},{"name":"value3","nativeSrc":"6498:6:30","nodeType":"YulTypedName","src":"6498:6:30","type":""}],"src":"6379:1207:30"},{"body":{"nativeSrc":"7718:166:30","nodeType":"YulBlock","src":"7718:166:30","statements":[{"nativeSrc":"7728:26:30","nodeType":"YulAssignment","src":"7728:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"7740:9:30","nodeType":"YulIdentifier","src":"7740:9:30"},{"kind":"number","nativeSrc":"7751:2:30","nodeType":"YulLiteral","src":"7751:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7736:3:30","nodeType":"YulIdentifier","src":"7736:3:30"},"nativeSrc":"7736:18:30","nodeType":"YulFunctionCall","src":"7736:18:30"},"variableNames":[{"name":"tail","nativeSrc":"7728:4:30","nodeType":"YulIdentifier","src":"7728:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7770:9:30","nodeType":"YulIdentifier","src":"7770:9:30"},{"arguments":[{"name":"value0","nativeSrc":"7785:6:30","nodeType":"YulIdentifier","src":"7785:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7801:3:30","nodeType":"YulLiteral","src":"7801:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"7806:1:30","nodeType":"YulLiteral","src":"7806:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7797:3:30","nodeType":"YulIdentifier","src":"7797:3:30"},"nativeSrc":"7797:11:30","nodeType":"YulFunctionCall","src":"7797:11:30"},{"kind":"number","nativeSrc":"7810:1:30","nodeType":"YulLiteral","src":"7810:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7793:3:30","nodeType":"YulIdentifier","src":"7793:3:30"},"nativeSrc":"7793:19:30","nodeType":"YulFunctionCall","src":"7793:19:30"}],"functionName":{"name":"and","nativeSrc":"7781:3:30","nodeType":"YulIdentifier","src":"7781:3:30"},"nativeSrc":"7781:32:30","nodeType":"YulFunctionCall","src":"7781:32:30"}],"functionName":{"name":"mstore","nativeSrc":"7763:6:30","nodeType":"YulIdentifier","src":"7763:6:30"},"nativeSrc":"7763:51:30","nodeType":"YulFunctionCall","src":"7763:51:30"},"nativeSrc":"7763:51:30","nodeType":"YulExpressionStatement","src":"7763:51:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7834:9:30","nodeType":"YulIdentifier","src":"7834:9:30"},{"kind":"number","nativeSrc":"7845:2:30","nodeType":"YulLiteral","src":"7845:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7830:3:30","nodeType":"YulIdentifier","src":"7830:3:30"},"nativeSrc":"7830:18:30","nodeType":"YulFunctionCall","src":"7830:18:30"},{"arguments":[{"name":"value1","nativeSrc":"7854:6:30","nodeType":"YulIdentifier","src":"7854:6:30"},{"kind":"number","nativeSrc":"7862:14:30","nodeType":"YulLiteral","src":"7862:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"7850:3:30","nodeType":"YulIdentifier","src":"7850:3:30"},"nativeSrc":"7850:27:30","nodeType":"YulFunctionCall","src":"7850:27:30"}],"functionName":{"name":"mstore","nativeSrc":"7823:6:30","nodeType":"YulIdentifier","src":"7823:6:30"},"nativeSrc":"7823:55:30","nodeType":"YulFunctionCall","src":"7823:55:30"},"nativeSrc":"7823:55:30","nodeType":"YulExpressionStatement","src":"7823:55:30"}]},"name":"abi_encode_tuple_t_address_t_uint48__to_t_address_t_uint48__fromStack_reversed","nativeSrc":"7591:293:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7679:9:30","nodeType":"YulTypedName","src":"7679:9:30","type":""},{"name":"value1","nativeSrc":"7690:6:30","nodeType":"YulTypedName","src":"7690:6:30","type":""},{"name":"value0","nativeSrc":"7698:6:30","nodeType":"YulTypedName","src":"7698:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7709:4:30","nodeType":"YulTypedName","src":"7709:4:30","type":""}],"src":"7591:293:30"},{"body":{"nativeSrc":"7976:173:30","nodeType":"YulBlock","src":"7976:173:30","statements":[{"body":{"nativeSrc":"8022:16:30","nodeType":"YulBlock","src":"8022:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8031:1:30","nodeType":"YulLiteral","src":"8031:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"8034:1:30","nodeType":"YulLiteral","src":"8034:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8024:6:30","nodeType":"YulIdentifier","src":"8024:6:30"},"nativeSrc":"8024:12:30","nodeType":"YulFunctionCall","src":"8024:12:30"},"nativeSrc":"8024:12:30","nodeType":"YulExpressionStatement","src":"8024:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7997:7:30","nodeType":"YulIdentifier","src":"7997:7:30"},{"name":"headStart","nativeSrc":"8006:9:30","nodeType":"YulIdentifier","src":"8006:9:30"}],"functionName":{"name":"sub","nativeSrc":"7993:3:30","nodeType":"YulIdentifier","src":"7993:3:30"},"nativeSrc":"7993:23:30","nodeType":"YulFunctionCall","src":"7993:23:30"},{"kind":"number","nativeSrc":"8018:2:30","nodeType":"YulLiteral","src":"8018:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7989:3:30","nodeType":"YulIdentifier","src":"7989:3:30"},"nativeSrc":"7989:32:30","nodeType":"YulFunctionCall","src":"7989:32:30"},"nativeSrc":"7986:52:30","nodeType":"YulIf","src":"7986:52:30"},{"nativeSrc":"8047:39:30","nodeType":"YulAssignment","src":"8047:39:30","value":{"arguments":[{"name":"headStart","nativeSrc":"8076:9:30","nodeType":"YulIdentifier","src":"8076:9:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"8057:18:30","nodeType":"YulIdentifier","src":"8057:18:30"},"nativeSrc":"8057:29:30","nodeType":"YulFunctionCall","src":"8057:29:30"},"variableNames":[{"name":"value0","nativeSrc":"8047:6:30","nodeType":"YulIdentifier","src":"8047:6:30"}]},{"nativeSrc":"8095:48:30","nodeType":"YulAssignment","src":"8095:48:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8128:9:30","nodeType":"YulIdentifier","src":"8128:9:30"},{"kind":"number","nativeSrc":"8139:2:30","nodeType":"YulLiteral","src":"8139:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8124:3:30","nodeType":"YulIdentifier","src":"8124:3:30"},"nativeSrc":"8124:18:30","nodeType":"YulFunctionCall","src":"8124:18:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"8105:18:30","nodeType":"YulIdentifier","src":"8105:18:30"},"nativeSrc":"8105:38:30","nodeType":"YulFunctionCall","src":"8105:38:30"},"variableNames":[{"name":"value1","nativeSrc":"8095:6:30","nodeType":"YulIdentifier","src":"8095:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"7889:260:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7934:9:30","nodeType":"YulTypedName","src":"7934:9:30","type":""},{"name":"dataEnd","nativeSrc":"7945:7:30","nodeType":"YulTypedName","src":"7945:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7957:6:30","nodeType":"YulTypedName","src":"7957:6:30","type":""},{"name":"value1","nativeSrc":"7965:6:30","nodeType":"YulTypedName","src":"7965:6:30","type":""}],"src":"7889:260:30"},{"body":{"nativeSrc":"8253:109:30","nodeType":"YulBlock","src":"8253:109:30","statements":[{"nativeSrc":"8263:26:30","nodeType":"YulAssignment","src":"8263:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"8275:9:30","nodeType":"YulIdentifier","src":"8275:9:30"},{"kind":"number","nativeSrc":"8286:2:30","nodeType":"YulLiteral","src":"8286:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8271:3:30","nodeType":"YulIdentifier","src":"8271:3:30"},"nativeSrc":"8271:18:30","nodeType":"YulFunctionCall","src":"8271:18:30"},"variableNames":[{"name":"tail","nativeSrc":"8263:4:30","nodeType":"YulIdentifier","src":"8263:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8305:9:30","nodeType":"YulIdentifier","src":"8305:9:30"},{"arguments":[{"name":"value0","nativeSrc":"8320:6:30","nodeType":"YulIdentifier","src":"8320:6:30"},{"kind":"number","nativeSrc":"8328:26:30","nodeType":"YulLiteral","src":"8328:26:30","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"8316:3:30","nodeType":"YulIdentifier","src":"8316:3:30"},"nativeSrc":"8316:39:30","nodeType":"YulFunctionCall","src":"8316:39:30"}],"functionName":{"name":"mstore","nativeSrc":"8298:6:30","nodeType":"YulIdentifier","src":"8298:6:30"},"nativeSrc":"8298:58:30","nodeType":"YulFunctionCall","src":"8298:58:30"},"nativeSrc":"8298:58:30","nodeType":"YulExpressionStatement","src":"8298:58:30"}]},"name":"abi_encode_tuple_t_uint96__to_t_uint96__fromStack_reversed","nativeSrc":"8154:208:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8222:9:30","nodeType":"YulTypedName","src":"8222:9:30","type":""},{"name":"value0","nativeSrc":"8233:6:30","nodeType":"YulTypedName","src":"8233:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8244:4:30","nodeType":"YulTypedName","src":"8244:4:30","type":""}],"src":"8154:208:30"},{"body":{"nativeSrc":"8422:325:30","nodeType":"YulBlock","src":"8422:325:30","statements":[{"nativeSrc":"8432:22:30","nodeType":"YulAssignment","src":"8432:22:30","value":{"arguments":[{"kind":"number","nativeSrc":"8446:1:30","nodeType":"YulLiteral","src":"8446:1:30","type":"","value":"1"},{"name":"data","nativeSrc":"8449:4:30","nodeType":"YulIdentifier","src":"8449:4:30"}],"functionName":{"name":"shr","nativeSrc":"8442:3:30","nodeType":"YulIdentifier","src":"8442:3:30"},"nativeSrc":"8442:12:30","nodeType":"YulFunctionCall","src":"8442:12:30"},"variableNames":[{"name":"length","nativeSrc":"8432:6:30","nodeType":"YulIdentifier","src":"8432:6:30"}]},{"nativeSrc":"8463:38:30","nodeType":"YulVariableDeclaration","src":"8463:38:30","value":{"arguments":[{"name":"data","nativeSrc":"8493:4:30","nodeType":"YulIdentifier","src":"8493:4:30"},{"kind":"number","nativeSrc":"8499:1:30","nodeType":"YulLiteral","src":"8499:1:30","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"8489:3:30","nodeType":"YulIdentifier","src":"8489:3:30"},"nativeSrc":"8489:12:30","nodeType":"YulFunctionCall","src":"8489:12:30"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"8467:18:30","nodeType":"YulTypedName","src":"8467:18:30","type":""}]},{"body":{"nativeSrc":"8540:31:30","nodeType":"YulBlock","src":"8540:31:30","statements":[{"nativeSrc":"8542:27:30","nodeType":"YulAssignment","src":"8542:27:30","value":{"arguments":[{"name":"length","nativeSrc":"8556:6:30","nodeType":"YulIdentifier","src":"8556:6:30"},{"kind":"number","nativeSrc":"8564:4:30","nodeType":"YulLiteral","src":"8564:4:30","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"8552:3:30","nodeType":"YulIdentifier","src":"8552:3:30"},"nativeSrc":"8552:17:30","nodeType":"YulFunctionCall","src":"8552:17:30"},"variableNames":[{"name":"length","nativeSrc":"8542:6:30","nodeType":"YulIdentifier","src":"8542:6:30"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8520:18:30","nodeType":"YulIdentifier","src":"8520:18:30"}],"functionName":{"name":"iszero","nativeSrc":"8513:6:30","nodeType":"YulIdentifier","src":"8513:6:30"},"nativeSrc":"8513:26:30","nodeType":"YulFunctionCall","src":"8513:26:30"},"nativeSrc":"8510:61:30","nodeType":"YulIf","src":"8510:61:30"},{"body":{"nativeSrc":"8630:111:30","nodeType":"YulBlock","src":"8630:111:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8651:1:30","nodeType":"YulLiteral","src":"8651:1:30","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8658:3:30","nodeType":"YulLiteral","src":"8658:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"8663:10:30","nodeType":"YulLiteral","src":"8663:10:30","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8654:3:30","nodeType":"YulIdentifier","src":"8654:3:30"},"nativeSrc":"8654:20:30","nodeType":"YulFunctionCall","src":"8654:20:30"}],"functionName":{"name":"mstore","nativeSrc":"8644:6:30","nodeType":"YulIdentifier","src":"8644:6:30"},"nativeSrc":"8644:31:30","nodeType":"YulFunctionCall","src":"8644:31:30"},"nativeSrc":"8644:31:30","nodeType":"YulExpressionStatement","src":"8644:31:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8695:1:30","nodeType":"YulLiteral","src":"8695:1:30","type":"","value":"4"},{"kind":"number","nativeSrc":"8698:4:30","nodeType":"YulLiteral","src":"8698:4:30","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8688:6:30","nodeType":"YulIdentifier","src":"8688:6:30"},"nativeSrc":"8688:15:30","nodeType":"YulFunctionCall","src":"8688:15:30"},"nativeSrc":"8688:15:30","nodeType":"YulExpressionStatement","src":"8688:15:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8723:1:30","nodeType":"YulLiteral","src":"8723:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"8726:4:30","nodeType":"YulLiteral","src":"8726:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8716:6:30","nodeType":"YulIdentifier","src":"8716:6:30"},"nativeSrc":"8716:15:30","nodeType":"YulFunctionCall","src":"8716:15:30"},"nativeSrc":"8716:15:30","nodeType":"YulExpressionStatement","src":"8716:15:30"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8586:18:30","nodeType":"YulIdentifier","src":"8586:18:30"},{"arguments":[{"name":"length","nativeSrc":"8609:6:30","nodeType":"YulIdentifier","src":"8609:6:30"},{"kind":"number","nativeSrc":"8617:2:30","nodeType":"YulLiteral","src":"8617:2:30","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8606:2:30","nodeType":"YulIdentifier","src":"8606:2:30"},"nativeSrc":"8606:14:30","nodeType":"YulFunctionCall","src":"8606:14:30"}],"functionName":{"name":"eq","nativeSrc":"8583:2:30","nodeType":"YulIdentifier","src":"8583:2:30"},"nativeSrc":"8583:38:30","nodeType":"YulFunctionCall","src":"8583:38:30"},"nativeSrc":"8580:161:30","nodeType":"YulIf","src":"8580:161:30"}]},"name":"extract_byte_array_length","nativeSrc":"8367:380:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"8402:4:30","nodeType":"YulTypedName","src":"8402:4:30","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8411:6:30","nodeType":"YulTypedName","src":"8411:6:30","type":""}],"src":"8367:380:30"},{"body":{"nativeSrc":"8909:214:30","nodeType":"YulBlock","src":"8909:214:30","statements":[{"nativeSrc":"8919:26:30","nodeType":"YulAssignment","src":"8919:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"8931:9:30","nodeType":"YulIdentifier","src":"8931:9:30"},{"kind":"number","nativeSrc":"8942:2:30","nodeType":"YulLiteral","src":"8942:2:30","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8927:3:30","nodeType":"YulIdentifier","src":"8927:3:30"},"nativeSrc":"8927:18:30","nodeType":"YulFunctionCall","src":"8927:18:30"},"variableNames":[{"name":"tail","nativeSrc":"8919:4:30","nodeType":"YulIdentifier","src":"8919:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8961:9:30","nodeType":"YulIdentifier","src":"8961:9:30"},{"arguments":[{"name":"value0","nativeSrc":"8976:6:30","nodeType":"YulIdentifier","src":"8976:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8992:3:30","nodeType":"YulLiteral","src":"8992:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"8997:1:30","nodeType":"YulLiteral","src":"8997:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8988:3:30","nodeType":"YulIdentifier","src":"8988:3:30"},"nativeSrc":"8988:11:30","nodeType":"YulFunctionCall","src":"8988:11:30"},{"kind":"number","nativeSrc":"9001:1:30","nodeType":"YulLiteral","src":"9001:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8984:3:30","nodeType":"YulIdentifier","src":"8984:3:30"},"nativeSrc":"8984:19:30","nodeType":"YulFunctionCall","src":"8984:19:30"}],"functionName":{"name":"and","nativeSrc":"8972:3:30","nodeType":"YulIdentifier","src":"8972:3:30"},"nativeSrc":"8972:32:30","nodeType":"YulFunctionCall","src":"8972:32:30"}],"functionName":{"name":"mstore","nativeSrc":"8954:6:30","nodeType":"YulIdentifier","src":"8954:6:30"},"nativeSrc":"8954:51:30","nodeType":"YulFunctionCall","src":"8954:51:30"},"nativeSrc":"8954:51:30","nodeType":"YulExpressionStatement","src":"8954:51:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9025:9:30","nodeType":"YulIdentifier","src":"9025:9:30"},{"kind":"number","nativeSrc":"9036:2:30","nodeType":"YulLiteral","src":"9036:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9021:3:30","nodeType":"YulIdentifier","src":"9021:3:30"},"nativeSrc":"9021:18:30","nodeType":"YulFunctionCall","src":"9021:18:30"},{"name":"value1","nativeSrc":"9041:6:30","nodeType":"YulIdentifier","src":"9041:6:30"}],"functionName":{"name":"mstore","nativeSrc":"9014:6:30","nodeType":"YulIdentifier","src":"9014:6:30"},"nativeSrc":"9014:34:30","nodeType":"YulFunctionCall","src":"9014:34:30"},"nativeSrc":"9014:34:30","nodeType":"YulExpressionStatement","src":"9014:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9068:9:30","nodeType":"YulIdentifier","src":"9068:9:30"},{"kind":"number","nativeSrc":"9079:2:30","nodeType":"YulLiteral","src":"9079:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9064:3:30","nodeType":"YulIdentifier","src":"9064:3:30"},"nativeSrc":"9064:18:30","nodeType":"YulFunctionCall","src":"9064:18:30"},{"arguments":[{"name":"value2","nativeSrc":"9088:6:30","nodeType":"YulIdentifier","src":"9088:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9104:3:30","nodeType":"YulLiteral","src":"9104:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"9109:1:30","nodeType":"YulLiteral","src":"9109:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9100:3:30","nodeType":"YulIdentifier","src":"9100:3:30"},"nativeSrc":"9100:11:30","nodeType":"YulFunctionCall","src":"9100:11:30"},{"kind":"number","nativeSrc":"9113:1:30","nodeType":"YulLiteral","src":"9113:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9096:3:30","nodeType":"YulIdentifier","src":"9096:3:30"},"nativeSrc":"9096:19:30","nodeType":"YulFunctionCall","src":"9096:19:30"}],"functionName":{"name":"and","nativeSrc":"9084:3:30","nodeType":"YulIdentifier","src":"9084:3:30"},"nativeSrc":"9084:32:30","nodeType":"YulFunctionCall","src":"9084:32:30"}],"functionName":{"name":"mstore","nativeSrc":"9057:6:30","nodeType":"YulIdentifier","src":"9057:6:30"},"nativeSrc":"9057:60:30","nodeType":"YulFunctionCall","src":"9057:60:30"},"nativeSrc":"9057:60:30","nodeType":"YulExpressionStatement","src":"9057:60:30"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed","nativeSrc":"8752:371:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8862:9:30","nodeType":"YulTypedName","src":"8862:9:30","type":""},{"name":"value2","nativeSrc":"8873:6:30","nodeType":"YulTypedName","src":"8873:6:30","type":""},{"name":"value1","nativeSrc":"8881:6:30","nodeType":"YulTypedName","src":"8881:6:30","type":""},{"name":"value0","nativeSrc":"8889:6:30","nodeType":"YulTypedName","src":"8889:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8900:4:30","nodeType":"YulTypedName","src":"8900:4:30","type":""}],"src":"8752:371:30"},{"body":{"nativeSrc":"9160:95:30","nodeType":"YulBlock","src":"9160:95:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9177:1:30","nodeType":"YulLiteral","src":"9177:1:30","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9184:3:30","nodeType":"YulLiteral","src":"9184:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"9189:10:30","nodeType":"YulLiteral","src":"9189:10:30","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9180:3:30","nodeType":"YulIdentifier","src":"9180:3:30"},"nativeSrc":"9180:20:30","nodeType":"YulFunctionCall","src":"9180:20:30"}],"functionName":{"name":"mstore","nativeSrc":"9170:6:30","nodeType":"YulIdentifier","src":"9170:6:30"},"nativeSrc":"9170:31:30","nodeType":"YulFunctionCall","src":"9170:31:30"},"nativeSrc":"9170:31:30","nodeType":"YulExpressionStatement","src":"9170:31:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9217:1:30","nodeType":"YulLiteral","src":"9217:1:30","type":"","value":"4"},{"kind":"number","nativeSrc":"9220:4:30","nodeType":"YulLiteral","src":"9220:4:30","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"9210:6:30","nodeType":"YulIdentifier","src":"9210:6:30"},"nativeSrc":"9210:15:30","nodeType":"YulFunctionCall","src":"9210:15:30"},"nativeSrc":"9210:15:30","nodeType":"YulExpressionStatement","src":"9210:15:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9241:1:30","nodeType":"YulLiteral","src":"9241:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"9244:4:30","nodeType":"YulLiteral","src":"9244:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9234:6:30","nodeType":"YulIdentifier","src":"9234:6:30"},"nativeSrc":"9234:15:30","nodeType":"YulFunctionCall","src":"9234:15:30"},"nativeSrc":"9234:15:30","nodeType":"YulExpressionStatement","src":"9234:15:30"}]},"name":"panic_error_0x11","nativeSrc":"9128:127:30","nodeType":"YulFunctionDefinition","src":"9128:127:30"},{"body":{"nativeSrc":"9312:116:30","nodeType":"YulBlock","src":"9312:116:30","statements":[{"nativeSrc":"9322:20:30","nodeType":"YulAssignment","src":"9322:20:30","value":{"arguments":[{"name":"x","nativeSrc":"9337:1:30","nodeType":"YulIdentifier","src":"9337:1:30"},{"name":"y","nativeSrc":"9340:1:30","nodeType":"YulIdentifier","src":"9340:1:30"}],"functionName":{"name":"mul","nativeSrc":"9333:3:30","nodeType":"YulIdentifier","src":"9333:3:30"},"nativeSrc":"9333:9:30","nodeType":"YulFunctionCall","src":"9333:9:30"},"variableNames":[{"name":"product","nativeSrc":"9322:7:30","nodeType":"YulIdentifier","src":"9322:7:30"}]},{"body":{"nativeSrc":"9400:22:30","nodeType":"YulBlock","src":"9400:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"9402:16:30","nodeType":"YulIdentifier","src":"9402:16:30"},"nativeSrc":"9402:18:30","nodeType":"YulFunctionCall","src":"9402:18:30"},"nativeSrc":"9402:18:30","nodeType":"YulExpressionStatement","src":"9402:18:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"9371:1:30","nodeType":"YulIdentifier","src":"9371:1:30"}],"functionName":{"name":"iszero","nativeSrc":"9364:6:30","nodeType":"YulIdentifier","src":"9364:6:30"},"nativeSrc":"9364:9:30","nodeType":"YulFunctionCall","src":"9364:9:30"},{"arguments":[{"name":"y","nativeSrc":"9378:1:30","nodeType":"YulIdentifier","src":"9378:1:30"},{"arguments":[{"name":"product","nativeSrc":"9385:7:30","nodeType":"YulIdentifier","src":"9385:7:30"},{"name":"x","nativeSrc":"9394:1:30","nodeType":"YulIdentifier","src":"9394:1:30"}],"functionName":{"name":"div","nativeSrc":"9381:3:30","nodeType":"YulIdentifier","src":"9381:3:30"},"nativeSrc":"9381:15:30","nodeType":"YulFunctionCall","src":"9381:15:30"}],"functionName":{"name":"eq","nativeSrc":"9375:2:30","nodeType":"YulIdentifier","src":"9375:2:30"},"nativeSrc":"9375:22:30","nodeType":"YulFunctionCall","src":"9375:22:30"}],"functionName":{"name":"or","nativeSrc":"9361:2:30","nodeType":"YulIdentifier","src":"9361:2:30"},"nativeSrc":"9361:37:30","nodeType":"YulFunctionCall","src":"9361:37:30"}],"functionName":{"name":"iszero","nativeSrc":"9354:6:30","nodeType":"YulIdentifier","src":"9354:6:30"},"nativeSrc":"9354:45:30","nodeType":"YulFunctionCall","src":"9354:45:30"},"nativeSrc":"9351:71:30","nodeType":"YulIf","src":"9351:71:30"}]},"name":"checked_mul_t_uint256","nativeSrc":"9260:168:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9291:1:30","nodeType":"YulTypedName","src":"9291:1:30","type":""},{"name":"y","nativeSrc":"9294:1:30","nodeType":"YulTypedName","src":"9294:1:30","type":""}],"returnVariables":[{"name":"product","nativeSrc":"9300:7:30","nodeType":"YulTypedName","src":"9300:7:30","type":""}],"src":"9260:168:30"},{"body":{"nativeSrc":"9465:95:30","nodeType":"YulBlock","src":"9465:95:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9482:1:30","nodeType":"YulLiteral","src":"9482:1:30","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9489:3:30","nodeType":"YulLiteral","src":"9489:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"9494:10:30","nodeType":"YulLiteral","src":"9494:10:30","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9485:3:30","nodeType":"YulIdentifier","src":"9485:3:30"},"nativeSrc":"9485:20:30","nodeType":"YulFunctionCall","src":"9485:20:30"}],"functionName":{"name":"mstore","nativeSrc":"9475:6:30","nodeType":"YulIdentifier","src":"9475:6:30"},"nativeSrc":"9475:31:30","nodeType":"YulFunctionCall","src":"9475:31:30"},"nativeSrc":"9475:31:30","nodeType":"YulExpressionStatement","src":"9475:31:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9522:1:30","nodeType":"YulLiteral","src":"9522:1:30","type":"","value":"4"},{"kind":"number","nativeSrc":"9525:4:30","nodeType":"YulLiteral","src":"9525:4:30","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"9515:6:30","nodeType":"YulIdentifier","src":"9515:6:30"},"nativeSrc":"9515:15:30","nodeType":"YulFunctionCall","src":"9515:15:30"},"nativeSrc":"9515:15:30","nodeType":"YulExpressionStatement","src":"9515:15:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9546:1:30","nodeType":"YulLiteral","src":"9546:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"9549:4:30","nodeType":"YulLiteral","src":"9549:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9539:6:30","nodeType":"YulIdentifier","src":"9539:6:30"},"nativeSrc":"9539:15:30","nodeType":"YulFunctionCall","src":"9539:15:30"},"nativeSrc":"9539:15:30","nodeType":"YulExpressionStatement","src":"9539:15:30"}]},"name":"panic_error_0x12","nativeSrc":"9433:127:30","nodeType":"YulFunctionDefinition","src":"9433:127:30"},{"body":{"nativeSrc":"9611:171:30","nodeType":"YulBlock","src":"9611:171:30","statements":[{"body":{"nativeSrc":"9642:111:30","nodeType":"YulBlock","src":"9642:111:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9663:1:30","nodeType":"YulLiteral","src":"9663:1:30","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9670:3:30","nodeType":"YulLiteral","src":"9670:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"9675:10:30","nodeType":"YulLiteral","src":"9675:10:30","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9666:3:30","nodeType":"YulIdentifier","src":"9666:3:30"},"nativeSrc":"9666:20:30","nodeType":"YulFunctionCall","src":"9666:20:30"}],"functionName":{"name":"mstore","nativeSrc":"9656:6:30","nodeType":"YulIdentifier","src":"9656:6:30"},"nativeSrc":"9656:31:30","nodeType":"YulFunctionCall","src":"9656:31:30"},"nativeSrc":"9656:31:30","nodeType":"YulExpressionStatement","src":"9656:31:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9707:1:30","nodeType":"YulLiteral","src":"9707:1:30","type":"","value":"4"},{"kind":"number","nativeSrc":"9710:4:30","nodeType":"YulLiteral","src":"9710:4:30","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"9700:6:30","nodeType":"YulIdentifier","src":"9700:6:30"},"nativeSrc":"9700:15:30","nodeType":"YulFunctionCall","src":"9700:15:30"},"nativeSrc":"9700:15:30","nodeType":"YulExpressionStatement","src":"9700:15:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9735:1:30","nodeType":"YulLiteral","src":"9735:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"9738:4:30","nodeType":"YulLiteral","src":"9738:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9728:6:30","nodeType":"YulIdentifier","src":"9728:6:30"},"nativeSrc":"9728:15:30","nodeType":"YulFunctionCall","src":"9728:15:30"},"nativeSrc":"9728:15:30","nodeType":"YulExpressionStatement","src":"9728:15:30"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"9631:1:30","nodeType":"YulIdentifier","src":"9631:1:30"}],"functionName":{"name":"iszero","nativeSrc":"9624:6:30","nodeType":"YulIdentifier","src":"9624:6:30"},"nativeSrc":"9624:9:30","nodeType":"YulFunctionCall","src":"9624:9:30"},"nativeSrc":"9621:132:30","nodeType":"YulIf","src":"9621:132:30"},{"nativeSrc":"9762:14:30","nodeType":"YulAssignment","src":"9762:14:30","value":{"arguments":[{"name":"x","nativeSrc":"9771:1:30","nodeType":"YulIdentifier","src":"9771:1:30"},{"name":"y","nativeSrc":"9774:1:30","nodeType":"YulIdentifier","src":"9774:1:30"}],"functionName":{"name":"div","nativeSrc":"9767:3:30","nodeType":"YulIdentifier","src":"9767:3:30"},"nativeSrc":"9767:9:30","nodeType":"YulFunctionCall","src":"9767:9:30"},"variableNames":[{"name":"r","nativeSrc":"9762:1:30","nodeType":"YulIdentifier","src":"9762:1:30"}]}]},"name":"checked_div_t_uint256","nativeSrc":"9565:217:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9596:1:30","nodeType":"YulTypedName","src":"9596:1:30","type":""},{"name":"y","nativeSrc":"9599:1:30","nodeType":"YulTypedName","src":"9599:1:30","type":""}],"returnVariables":[{"name":"r","nativeSrc":"9605:1:30","nodeType":"YulTypedName","src":"9605:1:30","type":""}],"src":"9565:217:30"},{"body":{"nativeSrc":"9843:65:30","nodeType":"YulBlock","src":"9843:65:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9860:1:30","nodeType":"YulLiteral","src":"9860:1:30","type":"","value":"0"},{"name":"ptr","nativeSrc":"9863:3:30","nodeType":"YulIdentifier","src":"9863:3:30"}],"functionName":{"name":"mstore","nativeSrc":"9853:6:30","nodeType":"YulIdentifier","src":"9853:6:30"},"nativeSrc":"9853:14:30","nodeType":"YulFunctionCall","src":"9853:14:30"},"nativeSrc":"9853:14:30","nodeType":"YulExpressionStatement","src":"9853:14:30"},{"nativeSrc":"9876:26:30","nodeType":"YulAssignment","src":"9876:26:30","value":{"arguments":[{"kind":"number","nativeSrc":"9894:1:30","nodeType":"YulLiteral","src":"9894:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"9897:4:30","nodeType":"YulLiteral","src":"9897:4:30","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"9884:9:30","nodeType":"YulIdentifier","src":"9884:9:30"},"nativeSrc":"9884:18:30","nodeType":"YulFunctionCall","src":"9884:18:30"},"variableNames":[{"name":"data","nativeSrc":"9876:4:30","nodeType":"YulIdentifier","src":"9876:4:30"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"9787:121:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"9826:3:30","nodeType":"YulTypedName","src":"9826:3:30","type":""}],"returnVariables":[{"name":"data","nativeSrc":"9834:4:30","nodeType":"YulTypedName","src":"9834:4:30","type":""}],"src":"9787:121:30"},{"body":{"nativeSrc":"9994:437:30","nodeType":"YulBlock","src":"9994:437:30","statements":[{"body":{"nativeSrc":"10027:398:30","nodeType":"YulBlock","src":"10027:398:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10048:1:30","nodeType":"YulLiteral","src":"10048:1:30","type":"","value":"0"},{"name":"array","nativeSrc":"10051:5:30","nodeType":"YulIdentifier","src":"10051:5:30"}],"functionName":{"name":"mstore","nativeSrc":"10041:6:30","nodeType":"YulIdentifier","src":"10041:6:30"},"nativeSrc":"10041:16:30","nodeType":"YulFunctionCall","src":"10041:16:30"},"nativeSrc":"10041:16:30","nodeType":"YulExpressionStatement","src":"10041:16:30"},{"nativeSrc":"10070:30:30","nodeType":"YulVariableDeclaration","src":"10070:30:30","value":{"arguments":[{"kind":"number","nativeSrc":"10092:1:30","nodeType":"YulLiteral","src":"10092:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"10095:4:30","nodeType":"YulLiteral","src":"10095:4:30","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"10082:9:30","nodeType":"YulIdentifier","src":"10082:9:30"},"nativeSrc":"10082:18:30","nodeType":"YulFunctionCall","src":"10082:18:30"},"variables":[{"name":"data","nativeSrc":"10074:4:30","nodeType":"YulTypedName","src":"10074:4:30","type":""}]},{"nativeSrc":"10113:57:30","nodeType":"YulVariableDeclaration","src":"10113:57:30","value":{"arguments":[{"name":"data","nativeSrc":"10136:4:30","nodeType":"YulIdentifier","src":"10136:4:30"},{"arguments":[{"kind":"number","nativeSrc":"10146:1:30","nodeType":"YulLiteral","src":"10146:1:30","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"10153:10:30","nodeType":"YulIdentifier","src":"10153:10:30"},{"kind":"number","nativeSrc":"10165:2:30","nodeType":"YulLiteral","src":"10165:2:30","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"10149:3:30","nodeType":"YulIdentifier","src":"10149:3:30"},"nativeSrc":"10149:19:30","nodeType":"YulFunctionCall","src":"10149:19:30"}],"functionName":{"name":"shr","nativeSrc":"10142:3:30","nodeType":"YulIdentifier","src":"10142:3:30"},"nativeSrc":"10142:27:30","nodeType":"YulFunctionCall","src":"10142:27:30"}],"functionName":{"name":"add","nativeSrc":"10132:3:30","nodeType":"YulIdentifier","src":"10132:3:30"},"nativeSrc":"10132:38:30","nodeType":"YulFunctionCall","src":"10132:38:30"},"variables":[{"name":"deleteStart","nativeSrc":"10117:11:30","nodeType":"YulTypedName","src":"10117:11:30","type":""}]},{"body":{"nativeSrc":"10207:23:30","nodeType":"YulBlock","src":"10207:23:30","statements":[{"nativeSrc":"10209:19:30","nodeType":"YulAssignment","src":"10209:19:30","value":{"name":"data","nativeSrc":"10224:4:30","nodeType":"YulIdentifier","src":"10224:4:30"},"variableNames":[{"name":"deleteStart","nativeSrc":"10209:11:30","nodeType":"YulIdentifier","src":"10209:11:30"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"10189:10:30","nodeType":"YulIdentifier","src":"10189:10:30"},{"kind":"number","nativeSrc":"10201:4:30","nodeType":"YulLiteral","src":"10201:4:30","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"10186:2:30","nodeType":"YulIdentifier","src":"10186:2:30"},"nativeSrc":"10186:20:30","nodeType":"YulFunctionCall","src":"10186:20:30"},"nativeSrc":"10183:47:30","nodeType":"YulIf","src":"10183:47:30"},{"nativeSrc":"10243:41:30","nodeType":"YulVariableDeclaration","src":"10243:41:30","value":{"arguments":[{"name":"data","nativeSrc":"10257:4:30","nodeType":"YulIdentifier","src":"10257:4:30"},{"arguments":[{"kind":"number","nativeSrc":"10267:1:30","nodeType":"YulLiteral","src":"10267:1:30","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"10274:3:30","nodeType":"YulIdentifier","src":"10274:3:30"},{"kind":"number","nativeSrc":"10279:2:30","nodeType":"YulLiteral","src":"10279:2:30","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"10270:3:30","nodeType":"YulIdentifier","src":"10270:3:30"},"nativeSrc":"10270:12:30","nodeType":"YulFunctionCall","src":"10270:12:30"}],"functionName":{"name":"shr","nativeSrc":"10263:3:30","nodeType":"YulIdentifier","src":"10263:3:30"},"nativeSrc":"10263:20:30","nodeType":"YulFunctionCall","src":"10263:20:30"}],"functionName":{"name":"add","nativeSrc":"10253:3:30","nodeType":"YulIdentifier","src":"10253:3:30"},"nativeSrc":"10253:31:30","nodeType":"YulFunctionCall","src":"10253:31:30"},"variables":[{"name":"_1","nativeSrc":"10247:2:30","nodeType":"YulTypedName","src":"10247:2:30","type":""}]},{"nativeSrc":"10297:24:30","nodeType":"YulVariableDeclaration","src":"10297:24:30","value":{"name":"deleteStart","nativeSrc":"10310:11:30","nodeType":"YulIdentifier","src":"10310:11:30"},"variables":[{"name":"start","nativeSrc":"10301:5:30","nodeType":"YulTypedName","src":"10301:5:30","type":""}]},{"body":{"nativeSrc":"10395:20:30","nodeType":"YulBlock","src":"10395:20:30","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"10404:5:30","nodeType":"YulIdentifier","src":"10404:5:30"},{"kind":"number","nativeSrc":"10411:1:30","nodeType":"YulLiteral","src":"10411:1:30","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"10397:6:30","nodeType":"YulIdentifier","src":"10397:6:30"},"nativeSrc":"10397:16:30","nodeType":"YulFunctionCall","src":"10397:16:30"},"nativeSrc":"10397:16:30","nodeType":"YulExpressionStatement","src":"10397:16:30"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"10345:5:30","nodeType":"YulIdentifier","src":"10345:5:30"},{"name":"_1","nativeSrc":"10352:2:30","nodeType":"YulIdentifier","src":"10352:2:30"}],"functionName":{"name":"lt","nativeSrc":"10342:2:30","nodeType":"YulIdentifier","src":"10342:2:30"},"nativeSrc":"10342:13:30","nodeType":"YulFunctionCall","src":"10342:13:30"},"nativeSrc":"10334:81:30","nodeType":"YulForLoop","post":{"nativeSrc":"10356:26:30","nodeType":"YulBlock","src":"10356:26:30","statements":[{"nativeSrc":"10358:22:30","nodeType":"YulAssignment","src":"10358:22:30","value":{"arguments":[{"name":"start","nativeSrc":"10371:5:30","nodeType":"YulIdentifier","src":"10371:5:30"},{"kind":"number","nativeSrc":"10378:1:30","nodeType":"YulLiteral","src":"10378:1:30","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10367:3:30","nodeType":"YulIdentifier","src":"10367:3:30"},"nativeSrc":"10367:13:30","nodeType":"YulFunctionCall","src":"10367:13:30"},"variableNames":[{"name":"start","nativeSrc":"10358:5:30","nodeType":"YulIdentifier","src":"10358:5:30"}]}]},"pre":{"nativeSrc":"10338:3:30","nodeType":"YulBlock","src":"10338:3:30","statements":[]},"src":"10334:81:30"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"10010:3:30","nodeType":"YulIdentifier","src":"10010:3:30"},{"kind":"number","nativeSrc":"10015:2:30","nodeType":"YulLiteral","src":"10015:2:30","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"10007:2:30","nodeType":"YulIdentifier","src":"10007:2:30"},"nativeSrc":"10007:11:30","nodeType":"YulFunctionCall","src":"10007:11:30"},"nativeSrc":"10004:421:30","nodeType":"YulIf","src":"10004:421:30"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"9913:518:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"9966:5:30","nodeType":"YulTypedName","src":"9966:5:30","type":""},{"name":"len","nativeSrc":"9973:3:30","nodeType":"YulTypedName","src":"9973:3:30","type":""},{"name":"startIndex","nativeSrc":"9978:10:30","nodeType":"YulTypedName","src":"9978:10:30","type":""}],"src":"9913:518:30"},{"body":{"nativeSrc":"10521:81:30","nodeType":"YulBlock","src":"10521:81:30","statements":[{"nativeSrc":"10531:65:30","nodeType":"YulAssignment","src":"10531:65:30","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"10546:4:30","nodeType":"YulIdentifier","src":"10546:4:30"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10564:1:30","nodeType":"YulLiteral","src":"10564:1:30","type":"","value":"3"},{"name":"len","nativeSrc":"10567:3:30","nodeType":"YulIdentifier","src":"10567:3:30"}],"functionName":{"name":"shl","nativeSrc":"10560:3:30","nodeType":"YulIdentifier","src":"10560:3:30"},"nativeSrc":"10560:11:30","nodeType":"YulFunctionCall","src":"10560:11:30"},{"arguments":[{"kind":"number","nativeSrc":"10577:1:30","nodeType":"YulLiteral","src":"10577:1:30","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10573:3:30","nodeType":"YulIdentifier","src":"10573:3:30"},"nativeSrc":"10573:6:30","nodeType":"YulFunctionCall","src":"10573:6:30"}],"functionName":{"name":"shr","nativeSrc":"10556:3:30","nodeType":"YulIdentifier","src":"10556:3:30"},"nativeSrc":"10556:24:30","nodeType":"YulFunctionCall","src":"10556:24:30"}],"functionName":{"name":"not","nativeSrc":"10552:3:30","nodeType":"YulIdentifier","src":"10552:3:30"},"nativeSrc":"10552:29:30","nodeType":"YulFunctionCall","src":"10552:29:30"}],"functionName":{"name":"and","nativeSrc":"10542:3:30","nodeType":"YulIdentifier","src":"10542:3:30"},"nativeSrc":"10542:40:30","nodeType":"YulFunctionCall","src":"10542:40:30"},{"arguments":[{"kind":"number","nativeSrc":"10588:1:30","nodeType":"YulLiteral","src":"10588:1:30","type":"","value":"1"},{"name":"len","nativeSrc":"10591:3:30","nodeType":"YulIdentifier","src":"10591:3:30"}],"functionName":{"name":"shl","nativeSrc":"10584:3:30","nodeType":"YulIdentifier","src":"10584:3:30"},"nativeSrc":"10584:11:30","nodeType":"YulFunctionCall","src":"10584:11:30"}],"functionName":{"name":"or","nativeSrc":"10539:2:30","nodeType":"YulIdentifier","src":"10539:2:30"},"nativeSrc":"10539:57:30","nodeType":"YulFunctionCall","src":"10539:57:30"},"variableNames":[{"name":"used","nativeSrc":"10531:4:30","nodeType":"YulIdentifier","src":"10531:4:30"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"10436:166:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"10498:4:30","nodeType":"YulTypedName","src":"10498:4:30","type":""},{"name":"len","nativeSrc":"10504:3:30","nodeType":"YulTypedName","src":"10504:3:30","type":""}],"returnVariables":[{"name":"used","nativeSrc":"10512:4:30","nodeType":"YulTypedName","src":"10512:4:30","type":""}],"src":"10436:166:30"},{"body":{"nativeSrc":"10710:1095:30","nodeType":"YulBlock","src":"10710:1095:30","statements":[{"body":{"nativeSrc":"10751:22:30","nodeType":"YulBlock","src":"10751:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"10753:16:30","nodeType":"YulIdentifier","src":"10753:16:30"},"nativeSrc":"10753:18:30","nodeType":"YulFunctionCall","src":"10753:18:30"},"nativeSrc":"10753:18:30","nodeType":"YulExpressionStatement","src":"10753:18:30"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"10726:3:30","nodeType":"YulIdentifier","src":"10726:3:30"},{"kind":"number","nativeSrc":"10731:18:30","nodeType":"YulLiteral","src":"10731:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10723:2:30","nodeType":"YulIdentifier","src":"10723:2:30"},"nativeSrc":"10723:27:30","nodeType":"YulFunctionCall","src":"10723:27:30"},"nativeSrc":"10720:53:30","nodeType":"YulIf","src":"10720:53:30"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10826:4:30","nodeType":"YulIdentifier","src":"10826:4:30"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"10864:4:30","nodeType":"YulIdentifier","src":"10864:4:30"}],"functionName":{"name":"sload","nativeSrc":"10858:5:30","nodeType":"YulIdentifier","src":"10858:5:30"},"nativeSrc":"10858:11:30","nodeType":"YulFunctionCall","src":"10858:11:30"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"10832:25:30","nodeType":"YulIdentifier","src":"10832:25:30"},"nativeSrc":"10832:38:30","nodeType":"YulFunctionCall","src":"10832:38:30"},{"name":"len","nativeSrc":"10872:3:30","nodeType":"YulIdentifier","src":"10872:3:30"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"10782:43:30","nodeType":"YulIdentifier","src":"10782:43:30"},"nativeSrc":"10782:94:30","nodeType":"YulFunctionCall","src":"10782:94:30"},"nativeSrc":"10782:94:30","nodeType":"YulExpressionStatement","src":"10782:94:30"},{"nativeSrc":"10885:18:30","nodeType":"YulVariableDeclaration","src":"10885:18:30","value":{"kind":"number","nativeSrc":"10902:1:30","nodeType":"YulLiteral","src":"10902:1:30","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"10889:9:30","nodeType":"YulTypedName","src":"10889:9:30","type":""}]},{"cases":[{"body":{"nativeSrc":"10946:601:30","nodeType":"YulBlock","src":"10946:601:30","statements":[{"nativeSrc":"10960:32:30","nodeType":"YulVariableDeclaration","src":"10960:32:30","value":{"arguments":[{"name":"len","nativeSrc":"10979:3:30","nodeType":"YulIdentifier","src":"10979:3:30"},{"arguments":[{"kind":"number","nativeSrc":"10988:2:30","nodeType":"YulLiteral","src":"10988:2:30","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"10984:3:30","nodeType":"YulIdentifier","src":"10984:3:30"},"nativeSrc":"10984:7:30","nodeType":"YulFunctionCall","src":"10984:7:30"}],"functionName":{"name":"and","nativeSrc":"10975:3:30","nodeType":"YulIdentifier","src":"10975:3:30"},"nativeSrc":"10975:17:30","nodeType":"YulFunctionCall","src":"10975:17:30"},"variables":[{"name":"loopEnd","nativeSrc":"10964:7:30","nodeType":"YulTypedName","src":"10964:7:30","type":""}]},{"nativeSrc":"11005:49:30","nodeType":"YulVariableDeclaration","src":"11005:49:30","value":{"arguments":[{"name":"slot","nativeSrc":"11049:4:30","nodeType":"YulIdentifier","src":"11049:4:30"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"11019:29:30","nodeType":"YulIdentifier","src":"11019:29:30"},"nativeSrc":"11019:35:30","nodeType":"YulFunctionCall","src":"11019:35:30"},"variables":[{"name":"dstPtr","nativeSrc":"11009:6:30","nodeType":"YulTypedName","src":"11009:6:30","type":""}]},{"nativeSrc":"11067:10:30","nodeType":"YulVariableDeclaration","src":"11067:10:30","value":{"kind":"number","nativeSrc":"11076:1:30","nodeType":"YulLiteral","src":"11076:1:30","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"11071:1:30","nodeType":"YulTypedName","src":"11071:1:30","type":""}]},{"body":{"nativeSrc":"11147:172:30","nodeType":"YulBlock","src":"11147:172:30","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"11172:6:30","nodeType":"YulIdentifier","src":"11172:6:30"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"11197:3:30","nodeType":"YulIdentifier","src":"11197:3:30"},{"name":"srcOffset","nativeSrc":"11202:9:30","nodeType":"YulIdentifier","src":"11202:9:30"}],"functionName":{"name":"add","nativeSrc":"11193:3:30","nodeType":"YulIdentifier","src":"11193:3:30"},"nativeSrc":"11193:19:30","nodeType":"YulFunctionCall","src":"11193:19:30"}],"functionName":{"name":"calldataload","nativeSrc":"11180:12:30","nodeType":"YulIdentifier","src":"11180:12:30"},"nativeSrc":"11180:33:30","nodeType":"YulFunctionCall","src":"11180:33:30"}],"functionName":{"name":"sstore","nativeSrc":"11165:6:30","nodeType":"YulIdentifier","src":"11165:6:30"},"nativeSrc":"11165:49:30","nodeType":"YulFunctionCall","src":"11165:49:30"},"nativeSrc":"11165:49:30","nodeType":"YulExpressionStatement","src":"11165:49:30"},{"nativeSrc":"11231:24:30","nodeType":"YulAssignment","src":"11231:24:30","value":{"arguments":[{"name":"dstPtr","nativeSrc":"11245:6:30","nodeType":"YulIdentifier","src":"11245:6:30"},{"kind":"number","nativeSrc":"11253:1:30","nodeType":"YulLiteral","src":"11253:1:30","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"11241:3:30","nodeType":"YulIdentifier","src":"11241:3:30"},"nativeSrc":"11241:14:30","nodeType":"YulFunctionCall","src":"11241:14:30"},"variableNames":[{"name":"dstPtr","nativeSrc":"11231:6:30","nodeType":"YulIdentifier","src":"11231:6:30"}]},{"nativeSrc":"11272:33:30","nodeType":"YulAssignment","src":"11272:33:30","value":{"arguments":[{"name":"srcOffset","nativeSrc":"11289:9:30","nodeType":"YulIdentifier","src":"11289:9:30"},{"kind":"number","nativeSrc":"11300:4:30","nodeType":"YulLiteral","src":"11300:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11285:3:30","nodeType":"YulIdentifier","src":"11285:3:30"},"nativeSrc":"11285:20:30","nodeType":"YulFunctionCall","src":"11285:20:30"},"variableNames":[{"name":"srcOffset","nativeSrc":"11272:9:30","nodeType":"YulIdentifier","src":"11272:9:30"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"11101:1:30","nodeType":"YulIdentifier","src":"11101:1:30"},{"name":"loopEnd","nativeSrc":"11104:7:30","nodeType":"YulIdentifier","src":"11104:7:30"}],"functionName":{"name":"lt","nativeSrc":"11098:2:30","nodeType":"YulIdentifier","src":"11098:2:30"},"nativeSrc":"11098:14:30","nodeType":"YulFunctionCall","src":"11098:14:30"},"nativeSrc":"11090:229:30","nodeType":"YulForLoop","post":{"nativeSrc":"11113:21:30","nodeType":"YulBlock","src":"11113:21:30","statements":[{"nativeSrc":"11115:17:30","nodeType":"YulAssignment","src":"11115:17:30","value":{"arguments":[{"name":"i","nativeSrc":"11124:1:30","nodeType":"YulIdentifier","src":"11124:1:30"},{"kind":"number","nativeSrc":"11127:4:30","nodeType":"YulLiteral","src":"11127:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11120:3:30","nodeType":"YulIdentifier","src":"11120:3:30"},"nativeSrc":"11120:12:30","nodeType":"YulFunctionCall","src":"11120:12:30"},"variableNames":[{"name":"i","nativeSrc":"11115:1:30","nodeType":"YulIdentifier","src":"11115:1:30"}]}]},"pre":{"nativeSrc":"11094:3:30","nodeType":"YulBlock","src":"11094:3:30","statements":[]},"src":"11090:229:30"},{"body":{"nativeSrc":"11364:127:30","nodeType":"YulBlock","src":"11364:127:30","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"11389:6:30","nodeType":"YulIdentifier","src":"11389:6:30"},{"arguments":[{"arguments":[{"arguments":[{"name":"src","nativeSrc":"11418:3:30","nodeType":"YulIdentifier","src":"11418:3:30"},{"name":"srcOffset","nativeSrc":"11423:9:30","nodeType":"YulIdentifier","src":"11423:9:30"}],"functionName":{"name":"add","nativeSrc":"11414:3:30","nodeType":"YulIdentifier","src":"11414:3:30"},"nativeSrc":"11414:19:30","nodeType":"YulFunctionCall","src":"11414:19:30"}],"functionName":{"name":"calldataload","nativeSrc":"11401:12:30","nodeType":"YulIdentifier","src":"11401:12:30"},"nativeSrc":"11401:33:30","nodeType":"YulFunctionCall","src":"11401:33:30"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11452:1:30","nodeType":"YulLiteral","src":"11452:1:30","type":"","value":"3"},{"name":"len","nativeSrc":"11455:3:30","nodeType":"YulIdentifier","src":"11455:3:30"}],"functionName":{"name":"shl","nativeSrc":"11448:3:30","nodeType":"YulIdentifier","src":"11448:3:30"},"nativeSrc":"11448:11:30","nodeType":"YulFunctionCall","src":"11448:11:30"},{"kind":"number","nativeSrc":"11461:3:30","nodeType":"YulLiteral","src":"11461:3:30","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"11444:3:30","nodeType":"YulIdentifier","src":"11444:3:30"},"nativeSrc":"11444:21:30","nodeType":"YulFunctionCall","src":"11444:21:30"},{"arguments":[{"kind":"number","nativeSrc":"11471:1:30","nodeType":"YulLiteral","src":"11471:1:30","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"11467:3:30","nodeType":"YulIdentifier","src":"11467:3:30"},"nativeSrc":"11467:6:30","nodeType":"YulFunctionCall","src":"11467:6:30"}],"functionName":{"name":"shr","nativeSrc":"11440:3:30","nodeType":"YulIdentifier","src":"11440:3:30"},"nativeSrc":"11440:34:30","nodeType":"YulFunctionCall","src":"11440:34:30"}],"functionName":{"name":"not","nativeSrc":"11436:3:30","nodeType":"YulIdentifier","src":"11436:3:30"},"nativeSrc":"11436:39:30","nodeType":"YulFunctionCall","src":"11436:39:30"}],"functionName":{"name":"and","nativeSrc":"11397:3:30","nodeType":"YulIdentifier","src":"11397:3:30"},"nativeSrc":"11397:79:30","nodeType":"YulFunctionCall","src":"11397:79:30"}],"functionName":{"name":"sstore","nativeSrc":"11382:6:30","nodeType":"YulIdentifier","src":"11382:6:30"},"nativeSrc":"11382:95:30","nodeType":"YulFunctionCall","src":"11382:95:30"},"nativeSrc":"11382:95:30","nodeType":"YulExpressionStatement","src":"11382:95:30"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"11338:7:30","nodeType":"YulIdentifier","src":"11338:7:30"},{"name":"len","nativeSrc":"11347:3:30","nodeType":"YulIdentifier","src":"11347:3:30"}],"functionName":{"name":"lt","nativeSrc":"11335:2:30","nodeType":"YulIdentifier","src":"11335:2:30"},"nativeSrc":"11335:16:30","nodeType":"YulFunctionCall","src":"11335:16:30"},"nativeSrc":"11332:159:30","nodeType":"YulIf","src":"11332:159:30"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"11511:4:30","nodeType":"YulIdentifier","src":"11511:4:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11525:1:30","nodeType":"YulLiteral","src":"11525:1:30","type":"","value":"1"},{"name":"len","nativeSrc":"11528:3:30","nodeType":"YulIdentifier","src":"11528:3:30"}],"functionName":{"name":"shl","nativeSrc":"11521:3:30","nodeType":"YulIdentifier","src":"11521:3:30"},"nativeSrc":"11521:11:30","nodeType":"YulFunctionCall","src":"11521:11:30"},{"kind":"number","nativeSrc":"11534:1:30","nodeType":"YulLiteral","src":"11534:1:30","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"11517:3:30","nodeType":"YulIdentifier","src":"11517:3:30"},"nativeSrc":"11517:19:30","nodeType":"YulFunctionCall","src":"11517:19:30"}],"functionName":{"name":"sstore","nativeSrc":"11504:6:30","nodeType":"YulIdentifier","src":"11504:6:30"},"nativeSrc":"11504:33:30","nodeType":"YulFunctionCall","src":"11504:33:30"},"nativeSrc":"11504:33:30","nodeType":"YulExpressionStatement","src":"11504:33:30"}]},"nativeSrc":"10939:608:30","nodeType":"YulCase","src":"10939:608:30","value":{"kind":"number","nativeSrc":"10944:1:30","nodeType":"YulLiteral","src":"10944:1:30","type":"","value":"1"}},{"body":{"nativeSrc":"11564:235:30","nodeType":"YulBlock","src":"11564:235:30","statements":[{"nativeSrc":"11578:14:30","nodeType":"YulVariableDeclaration","src":"11578:14:30","value":{"kind":"number","nativeSrc":"11591:1:30","nodeType":"YulLiteral","src":"11591:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"11582:5:30","nodeType":"YulTypedName","src":"11582:5:30","type":""}]},{"body":{"nativeSrc":"11624:74:30","nodeType":"YulBlock","src":"11624:74:30","statements":[{"nativeSrc":"11642:42:30","nodeType":"YulAssignment","src":"11642:42:30","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"11668:3:30","nodeType":"YulIdentifier","src":"11668:3:30"},{"name":"srcOffset","nativeSrc":"11673:9:30","nodeType":"YulIdentifier","src":"11673:9:30"}],"functionName":{"name":"add","nativeSrc":"11664:3:30","nodeType":"YulIdentifier","src":"11664:3:30"},"nativeSrc":"11664:19:30","nodeType":"YulFunctionCall","src":"11664:19:30"}],"functionName":{"name":"calldataload","nativeSrc":"11651:12:30","nodeType":"YulIdentifier","src":"11651:12:30"},"nativeSrc":"11651:33:30","nodeType":"YulFunctionCall","src":"11651:33:30"},"variableNames":[{"name":"value","nativeSrc":"11642:5:30","nodeType":"YulIdentifier","src":"11642:5:30"}]}]},"condition":{"name":"len","nativeSrc":"11608:3:30","nodeType":"YulIdentifier","src":"11608:3:30"},"nativeSrc":"11605:93:30","nodeType":"YulIf","src":"11605:93:30"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"11718:4:30","nodeType":"YulIdentifier","src":"11718:4:30"},{"arguments":[{"name":"value","nativeSrc":"11777:5:30","nodeType":"YulIdentifier","src":"11777:5:30"},{"name":"len","nativeSrc":"11784:3:30","nodeType":"YulIdentifier","src":"11784:3:30"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"11724:52:30","nodeType":"YulIdentifier","src":"11724:52:30"},"nativeSrc":"11724:64:30","nodeType":"YulFunctionCall","src":"11724:64:30"}],"functionName":{"name":"sstore","nativeSrc":"11711:6:30","nodeType":"YulIdentifier","src":"11711:6:30"},"nativeSrc":"11711:78:30","nodeType":"YulFunctionCall","src":"11711:78:30"},"nativeSrc":"11711:78:30","nodeType":"YulExpressionStatement","src":"11711:78:30"}]},"nativeSrc":"11556:243:30","nodeType":"YulCase","src":"11556:243:30","value":"default"}],"expression":{"arguments":[{"name":"len","nativeSrc":"10922:3:30","nodeType":"YulIdentifier","src":"10922:3:30"},{"kind":"number","nativeSrc":"10927:2:30","nodeType":"YulLiteral","src":"10927:2:30","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"10919:2:30","nodeType":"YulIdentifier","src":"10919:2:30"},"nativeSrc":"10919:11:30","nodeType":"YulFunctionCall","src":"10919:11:30"},"nativeSrc":"10912:887:30","nodeType":"YulSwitch","src":"10912:887:30"}]},"name":"copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage","nativeSrc":"10607:1198:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"10690:4:30","nodeType":"YulTypedName","src":"10690:4:30","type":""},{"name":"src","nativeSrc":"10696:3:30","nodeType":"YulTypedName","src":"10696:3:30","type":""},{"name":"len","nativeSrc":"10701:3:30","nodeType":"YulTypedName","src":"10701:3:30","type":""}],"src":"10607:1198:30"},{"body":{"nativeSrc":"11989:376:30","nodeType":"YulBlock","src":"11989:376:30","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12006:9:30","nodeType":"YulIdentifier","src":"12006:9:30"},{"kind":"number","nativeSrc":"12017:2:30","nodeType":"YulLiteral","src":"12017:2:30","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"11999:6:30","nodeType":"YulIdentifier","src":"11999:6:30"},"nativeSrc":"11999:21:30","nodeType":"YulFunctionCall","src":"11999:21:30"},"nativeSrc":"11999:21:30","nodeType":"YulExpressionStatement","src":"11999:21:30"},{"nativeSrc":"12029:70:30","nodeType":"YulVariableDeclaration","src":"12029:70:30","value":{"arguments":[{"name":"value0","nativeSrc":"12072:6:30","nodeType":"YulIdentifier","src":"12072:6:30"},{"arguments":[{"name":"headStart","nativeSrc":"12084:9:30","nodeType":"YulIdentifier","src":"12084:9:30"},{"kind":"number","nativeSrc":"12095:2:30","nodeType":"YulLiteral","src":"12095:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12080:3:30","nodeType":"YulIdentifier","src":"12080:3:30"},"nativeSrc":"12080:18:30","nodeType":"YulFunctionCall","src":"12080:18:30"}],"functionName":{"name":"abi_encode_string_memory_ptr","nativeSrc":"12043:28:30","nodeType":"YulIdentifier","src":"12043:28:30"},"nativeSrc":"12043:56:30","nodeType":"YulFunctionCall","src":"12043:56:30"},"variables":[{"name":"tail_1","nativeSrc":"12033:6:30","nodeType":"YulTypedName","src":"12033:6:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12119:9:30","nodeType":"YulIdentifier","src":"12119:9:30"},{"kind":"number","nativeSrc":"12130:2:30","nodeType":"YulLiteral","src":"12130:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12115:3:30","nodeType":"YulIdentifier","src":"12115:3:30"},"nativeSrc":"12115:18:30","nodeType":"YulFunctionCall","src":"12115:18:30"},{"arguments":[{"name":"tail_1","nativeSrc":"12139:6:30","nodeType":"YulIdentifier","src":"12139:6:30"},{"name":"headStart","nativeSrc":"12147:9:30","nodeType":"YulIdentifier","src":"12147:9:30"}],"functionName":{"name":"sub","nativeSrc":"12135:3:30","nodeType":"YulIdentifier","src":"12135:3:30"},"nativeSrc":"12135:22:30","nodeType":"YulFunctionCall","src":"12135:22:30"}],"functionName":{"name":"mstore","nativeSrc":"12108:6:30","nodeType":"YulIdentifier","src":"12108:6:30"},"nativeSrc":"12108:50:30","nodeType":"YulFunctionCall","src":"12108:50:30"},"nativeSrc":"12108:50:30","nodeType":"YulExpressionStatement","src":"12108:50:30"},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"12174:6:30","nodeType":"YulIdentifier","src":"12174:6:30"},{"name":"value2","nativeSrc":"12182:6:30","nodeType":"YulIdentifier","src":"12182:6:30"}],"functionName":{"name":"mstore","nativeSrc":"12167:6:30","nodeType":"YulIdentifier","src":"12167:6:30"},"nativeSrc":"12167:22:30","nodeType":"YulFunctionCall","src":"12167:22:30"},"nativeSrc":"12167:22:30","nodeType":"YulExpressionStatement","src":"12167:22:30"},{"expression":{"arguments":[{"arguments":[{"name":"tail_1","nativeSrc":"12215:6:30","nodeType":"YulIdentifier","src":"12215:6:30"},{"kind":"number","nativeSrc":"12223:2:30","nodeType":"YulLiteral","src":"12223:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12211:3:30","nodeType":"YulIdentifier","src":"12211:3:30"},"nativeSrc":"12211:15:30","nodeType":"YulFunctionCall","src":"12211:15:30"},{"name":"value1","nativeSrc":"12228:6:30","nodeType":"YulIdentifier","src":"12228:6:30"},{"name":"value2","nativeSrc":"12236:6:30","nodeType":"YulIdentifier","src":"12236:6:30"}],"functionName":{"name":"calldatacopy","nativeSrc":"12198:12:30","nodeType":"YulIdentifier","src":"12198:12:30"},"nativeSrc":"12198:45:30","nodeType":"YulFunctionCall","src":"12198:45:30"},"nativeSrc":"12198:45:30","nodeType":"YulExpressionStatement","src":"12198:45:30"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"tail_1","nativeSrc":"12267:6:30","nodeType":"YulIdentifier","src":"12267:6:30"},{"name":"value2","nativeSrc":"12275:6:30","nodeType":"YulIdentifier","src":"12275:6:30"}],"functionName":{"name":"add","nativeSrc":"12263:3:30","nodeType":"YulIdentifier","src":"12263:3:30"},"nativeSrc":"12263:19:30","nodeType":"YulFunctionCall","src":"12263:19:30"},{"kind":"number","nativeSrc":"12284:2:30","nodeType":"YulLiteral","src":"12284:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12259:3:30","nodeType":"YulIdentifier","src":"12259:3:30"},"nativeSrc":"12259:28:30","nodeType":"YulFunctionCall","src":"12259:28:30"},{"kind":"number","nativeSrc":"12289:1:30","nodeType":"YulLiteral","src":"12289:1:30","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12252:6:30","nodeType":"YulIdentifier","src":"12252:6:30"},"nativeSrc":"12252:39:30","nodeType":"YulFunctionCall","src":"12252:39:30"},"nativeSrc":"12252:39:30","nodeType":"YulExpressionStatement","src":"12252:39:30"},{"nativeSrc":"12300:59:30","nodeType":"YulAssignment","src":"12300:59:30","value":{"arguments":[{"arguments":[{"name":"tail_1","nativeSrc":"12316:6:30","nodeType":"YulIdentifier","src":"12316:6:30"},{"arguments":[{"arguments":[{"name":"value2","nativeSrc":"12332:6:30","nodeType":"YulIdentifier","src":"12332:6:30"},{"kind":"number","nativeSrc":"12340:2:30","nodeType":"YulLiteral","src":"12340:2:30","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"12328:3:30","nodeType":"YulIdentifier","src":"12328:3:30"},"nativeSrc":"12328:15:30","nodeType":"YulFunctionCall","src":"12328:15:30"},{"arguments":[{"kind":"number","nativeSrc":"12349:2:30","nodeType":"YulLiteral","src":"12349:2:30","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"12345:3:30","nodeType":"YulIdentifier","src":"12345:3:30"},"nativeSrc":"12345:7:30","nodeType":"YulFunctionCall","src":"12345:7:30"}],"functionName":{"name":"and","nativeSrc":"12324:3:30","nodeType":"YulIdentifier","src":"12324:3:30"},"nativeSrc":"12324:29:30","nodeType":"YulFunctionCall","src":"12324:29:30"}],"functionName":{"name":"add","nativeSrc":"12312:3:30","nodeType":"YulIdentifier","src":"12312:3:30"},"nativeSrc":"12312:42:30","nodeType":"YulFunctionCall","src":"12312:42:30"},{"kind":"number","nativeSrc":"12356:2:30","nodeType":"YulLiteral","src":"12356:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12308:3:30","nodeType":"YulIdentifier","src":"12308:3:30"},"nativeSrc":"12308:51:30","nodeType":"YulFunctionCall","src":"12308:51:30"},"variableNames":[{"name":"tail","nativeSrc":"12300:4:30","nodeType":"YulIdentifier","src":"12300:4:30"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nativeSrc":"11810:555:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11942:9:30","nodeType":"YulTypedName","src":"11942:9:30","type":""},{"name":"value2","nativeSrc":"11953:6:30","nodeType":"YulTypedName","src":"11953:6:30","type":""},{"name":"value1","nativeSrc":"11961:6:30","nodeType":"YulTypedName","src":"11961:6:30","type":""},{"name":"value0","nativeSrc":"11969:6:30","nodeType":"YulTypedName","src":"11969:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11980:4:30","nodeType":"YulTypedName","src":"11980:4:30","type":""}],"src":"11810:555:30"},{"body":{"nativeSrc":"12420:162:30","nodeType":"YulBlock","src":"12420:162:30","statements":[{"nativeSrc":"12430:26:30","nodeType":"YulVariableDeclaration","src":"12430:26:30","value":{"arguments":[{"name":"value","nativeSrc":"12450:5:30","nodeType":"YulIdentifier","src":"12450:5:30"}],"functionName":{"name":"mload","nativeSrc":"12444:5:30","nodeType":"YulIdentifier","src":"12444:5:30"},"nativeSrc":"12444:12:30","nodeType":"YulFunctionCall","src":"12444:12:30"},"variables":[{"name":"length","nativeSrc":"12434:6:30","nodeType":"YulTypedName","src":"12434:6:30","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"12471:3:30","nodeType":"YulIdentifier","src":"12471:3:30"},{"arguments":[{"name":"value","nativeSrc":"12480:5:30","nodeType":"YulIdentifier","src":"12480:5:30"},{"kind":"number","nativeSrc":"12487:4:30","nodeType":"YulLiteral","src":"12487:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12476:3:30","nodeType":"YulIdentifier","src":"12476:3:30"},"nativeSrc":"12476:16:30","nodeType":"YulFunctionCall","src":"12476:16:30"},{"name":"length","nativeSrc":"12494:6:30","nodeType":"YulIdentifier","src":"12494:6:30"}],"functionName":{"name":"mcopy","nativeSrc":"12465:5:30","nodeType":"YulIdentifier","src":"12465:5:30"},"nativeSrc":"12465:36:30","nodeType":"YulFunctionCall","src":"12465:36:30"},"nativeSrc":"12465:36:30","nodeType":"YulExpressionStatement","src":"12465:36:30"},{"nativeSrc":"12510:26:30","nodeType":"YulVariableDeclaration","src":"12510:26:30","value":{"arguments":[{"name":"pos","nativeSrc":"12524:3:30","nodeType":"YulIdentifier","src":"12524:3:30"},{"name":"length","nativeSrc":"12529:6:30","nodeType":"YulIdentifier","src":"12529:6:30"}],"functionName":{"name":"add","nativeSrc":"12520:3:30","nodeType":"YulIdentifier","src":"12520:3:30"},"nativeSrc":"12520:16:30","nodeType":"YulFunctionCall","src":"12520:16:30"},"variables":[{"name":"_1","nativeSrc":"12514:2:30","nodeType":"YulTypedName","src":"12514:2:30","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"12552:2:30","nodeType":"YulIdentifier","src":"12552:2:30"},{"kind":"number","nativeSrc":"12556:1:30","nodeType":"YulLiteral","src":"12556:1:30","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12545:6:30","nodeType":"YulIdentifier","src":"12545:6:30"},"nativeSrc":"12545:13:30","nodeType":"YulFunctionCall","src":"12545:13:30"},"nativeSrc":"12545:13:30","nodeType":"YulExpressionStatement","src":"12545:13:30"},{"nativeSrc":"12567:9:30","nodeType":"YulAssignment","src":"12567:9:30","value":{"name":"_1","nativeSrc":"12574:2:30","nodeType":"YulIdentifier","src":"12574:2:30"},"variableNames":[{"name":"end","nativeSrc":"12567:3:30","nodeType":"YulIdentifier","src":"12567:3:30"}]}]},"name":"abi_encode_string","nativeSrc":"12370:212:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"12397:5:30","nodeType":"YulTypedName","src":"12397:5:30","type":""},{"name":"pos","nativeSrc":"12404:3:30","nodeType":"YulTypedName","src":"12404:3:30","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12412:3:30","nodeType":"YulTypedName","src":"12412:3:30","type":""}],"src":"12370:212:30"},{"body":{"nativeSrc":"12774:80:30","nodeType":"YulBlock","src":"12774:80:30","statements":[{"nativeSrc":"12784:64:30","nodeType":"YulAssignment","src":"12784:64:30","value":{"arguments":[{"name":"value1","nativeSrc":"12809:6:30","nodeType":"YulIdentifier","src":"12809:6:30"},{"arguments":[{"name":"value0","nativeSrc":"12835:6:30","nodeType":"YulIdentifier","src":"12835:6:30"},{"name":"pos","nativeSrc":"12843:3:30","nodeType":"YulIdentifier","src":"12843:3:30"}],"functionName":{"name":"abi_encode_string","nativeSrc":"12817:17:30","nodeType":"YulIdentifier","src":"12817:17:30"},"nativeSrc":"12817:30:30","nodeType":"YulFunctionCall","src":"12817:30:30"}],"functionName":{"name":"abi_encode_string","nativeSrc":"12791:17:30","nodeType":"YulIdentifier","src":"12791:17:30"},"nativeSrc":"12791:57:30","nodeType":"YulFunctionCall","src":"12791:57:30"},"variableNames":[{"name":"end","nativeSrc":"12784:3:30","nodeType":"YulIdentifier","src":"12784:3:30"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"12587:267:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"12742:3:30","nodeType":"YulTypedName","src":"12742:3:30","type":""},{"name":"value1","nativeSrc":"12747:6:30","nodeType":"YulTypedName","src":"12747:6:30","type":""},{"name":"value0","nativeSrc":"12755:6:30","nodeType":"YulTypedName","src":"12755:6:30","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12766:3:30","nodeType":"YulTypedName","src":"12766:3:30","type":""}],"src":"12587:267:30"},{"body":{"nativeSrc":"12987:152:30","nodeType":"YulBlock","src":"12987:152:30","statements":[{"nativeSrc":"12997:26:30","nodeType":"YulAssignment","src":"12997:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"13009:9:30","nodeType":"YulIdentifier","src":"13009:9:30"},{"kind":"number","nativeSrc":"13020:2:30","nodeType":"YulLiteral","src":"13020:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13005:3:30","nodeType":"YulIdentifier","src":"13005:3:30"},"nativeSrc":"13005:18:30","nodeType":"YulFunctionCall","src":"13005:18:30"},"variableNames":[{"name":"tail","nativeSrc":"12997:4:30","nodeType":"YulIdentifier","src":"12997:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13039:9:30","nodeType":"YulIdentifier","src":"13039:9:30"},{"arguments":[{"name":"value0","nativeSrc":"13054:6:30","nodeType":"YulIdentifier","src":"13054:6:30"},{"kind":"number","nativeSrc":"13062:26:30","nodeType":"YulLiteral","src":"13062:26:30","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13050:3:30","nodeType":"YulIdentifier","src":"13050:3:30"},"nativeSrc":"13050:39:30","nodeType":"YulFunctionCall","src":"13050:39:30"}],"functionName":{"name":"mstore","nativeSrc":"13032:6:30","nodeType":"YulIdentifier","src":"13032:6:30"},"nativeSrc":"13032:58:30","nodeType":"YulFunctionCall","src":"13032:58:30"},"nativeSrc":"13032:58:30","nodeType":"YulExpressionStatement","src":"13032:58:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13110:9:30","nodeType":"YulIdentifier","src":"13110:9:30"},{"kind":"number","nativeSrc":"13121:2:30","nodeType":"YulLiteral","src":"13121:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13106:3:30","nodeType":"YulIdentifier","src":"13106:3:30"},"nativeSrc":"13106:18:30","nodeType":"YulFunctionCall","src":"13106:18:30"},{"name":"value1","nativeSrc":"13126:6:30","nodeType":"YulIdentifier","src":"13126:6:30"}],"functionName":{"name":"mstore","nativeSrc":"13099:6:30","nodeType":"YulIdentifier","src":"13099:6:30"},"nativeSrc":"13099:34:30","nodeType":"YulFunctionCall","src":"13099:34:30"},"nativeSrc":"13099:34:30","nodeType":"YulExpressionStatement","src":"13099:34:30"}]},"name":"abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"12859:280:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12948:9:30","nodeType":"YulTypedName","src":"12948:9:30","type":""},{"name":"value1","nativeSrc":"12959:6:30","nodeType":"YulTypedName","src":"12959:6:30","type":""},{"name":"value0","nativeSrc":"12967:6:30","nodeType":"YulTypedName","src":"12967:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12978:4:30","nodeType":"YulTypedName","src":"12978:4:30","type":""}],"src":"12859:280:30"},{"body":{"nativeSrc":"13191:132:30","nodeType":"YulBlock","src":"13191:132:30","statements":[{"nativeSrc":"13201:58:30","nodeType":"YulAssignment","src":"13201:58:30","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"13216:1:30","nodeType":"YulIdentifier","src":"13216:1:30"},{"kind":"number","nativeSrc":"13219:14:30","nodeType":"YulLiteral","src":"13219:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13212:3:30","nodeType":"YulIdentifier","src":"13212:3:30"},"nativeSrc":"13212:22:30","nodeType":"YulFunctionCall","src":"13212:22:30"},{"arguments":[{"name":"y","nativeSrc":"13240:1:30","nodeType":"YulIdentifier","src":"13240:1:30"},{"kind":"number","nativeSrc":"13243:14:30","nodeType":"YulLiteral","src":"13243:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13236:3:30","nodeType":"YulIdentifier","src":"13236:3:30"},"nativeSrc":"13236:22:30","nodeType":"YulFunctionCall","src":"13236:22:30"}],"functionName":{"name":"add","nativeSrc":"13208:3:30","nodeType":"YulIdentifier","src":"13208:3:30"},"nativeSrc":"13208:51:30","nodeType":"YulFunctionCall","src":"13208:51:30"},"variableNames":[{"name":"sum","nativeSrc":"13201:3:30","nodeType":"YulIdentifier","src":"13201:3:30"}]},{"body":{"nativeSrc":"13295:22:30","nodeType":"YulBlock","src":"13295:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13297:16:30","nodeType":"YulIdentifier","src":"13297:16:30"},"nativeSrc":"13297:18:30","nodeType":"YulFunctionCall","src":"13297:18:30"},"nativeSrc":"13297:18:30","nodeType":"YulExpressionStatement","src":"13297:18:30"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"13274:3:30","nodeType":"YulIdentifier","src":"13274:3:30"},{"kind":"number","nativeSrc":"13279:14:30","nodeType":"YulLiteral","src":"13279:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13271:2:30","nodeType":"YulIdentifier","src":"13271:2:30"},"nativeSrc":"13271:23:30","nodeType":"YulFunctionCall","src":"13271:23:30"},"nativeSrc":"13268:49:30","nodeType":"YulIf","src":"13268:49:30"}]},"name":"checked_add_t_uint48","nativeSrc":"13144:179:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"13174:1:30","nodeType":"YulTypedName","src":"13174:1:30","type":""},{"name":"y","nativeSrc":"13177:1:30","nodeType":"YulTypedName","src":"13177:1:30","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"13183:3:30","nodeType":"YulTypedName","src":"13183:3:30","type":""}],"src":"13144:179:30"},{"body":{"nativeSrc":"13531:293:30","nodeType":"YulBlock","src":"13531:293:30","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13548:9:30","nodeType":"YulIdentifier","src":"13548:9:30"},{"arguments":[{"name":"value0","nativeSrc":"13563:6:30","nodeType":"YulIdentifier","src":"13563:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13579:3:30","nodeType":"YulLiteral","src":"13579:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"13584:1:30","nodeType":"YulLiteral","src":"13584:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13575:3:30","nodeType":"YulIdentifier","src":"13575:3:30"},"nativeSrc":"13575:11:30","nodeType":"YulFunctionCall","src":"13575:11:30"},{"kind":"number","nativeSrc":"13588:1:30","nodeType":"YulLiteral","src":"13588:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13571:3:30","nodeType":"YulIdentifier","src":"13571:3:30"},"nativeSrc":"13571:19:30","nodeType":"YulFunctionCall","src":"13571:19:30"}],"functionName":{"name":"and","nativeSrc":"13559:3:30","nodeType":"YulIdentifier","src":"13559:3:30"},"nativeSrc":"13559:32:30","nodeType":"YulFunctionCall","src":"13559:32:30"}],"functionName":{"name":"mstore","nativeSrc":"13541:6:30","nodeType":"YulIdentifier","src":"13541:6:30"},"nativeSrc":"13541:51:30","nodeType":"YulFunctionCall","src":"13541:51:30"},"nativeSrc":"13541:51:30","nodeType":"YulExpressionStatement","src":"13541:51:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13612:9:30","nodeType":"YulIdentifier","src":"13612:9:30"},{"kind":"number","nativeSrc":"13623:2:30","nodeType":"YulLiteral","src":"13623:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13608:3:30","nodeType":"YulIdentifier","src":"13608:3:30"},"nativeSrc":"13608:18:30","nodeType":"YulFunctionCall","src":"13608:18:30"},{"arguments":[{"name":"value1","nativeSrc":"13632:6:30","nodeType":"YulIdentifier","src":"13632:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13648:3:30","nodeType":"YulLiteral","src":"13648:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"13653:1:30","nodeType":"YulLiteral","src":"13653:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13644:3:30","nodeType":"YulIdentifier","src":"13644:3:30"},"nativeSrc":"13644:11:30","nodeType":"YulFunctionCall","src":"13644:11:30"},{"kind":"number","nativeSrc":"13657:1:30","nodeType":"YulLiteral","src":"13657:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13640:3:30","nodeType":"YulIdentifier","src":"13640:3:30"},"nativeSrc":"13640:19:30","nodeType":"YulFunctionCall","src":"13640:19:30"}],"functionName":{"name":"and","nativeSrc":"13628:3:30","nodeType":"YulIdentifier","src":"13628:3:30"},"nativeSrc":"13628:32:30","nodeType":"YulFunctionCall","src":"13628:32:30"}],"functionName":{"name":"mstore","nativeSrc":"13601:6:30","nodeType":"YulIdentifier","src":"13601:6:30"},"nativeSrc":"13601:60:30","nodeType":"YulFunctionCall","src":"13601:60:30"},"nativeSrc":"13601:60:30","nodeType":"YulExpressionStatement","src":"13601:60:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13681:9:30","nodeType":"YulIdentifier","src":"13681:9:30"},{"kind":"number","nativeSrc":"13692:2:30","nodeType":"YulLiteral","src":"13692:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13677:3:30","nodeType":"YulIdentifier","src":"13677:3:30"},"nativeSrc":"13677:18:30","nodeType":"YulFunctionCall","src":"13677:18:30"},{"name":"value2","nativeSrc":"13697:6:30","nodeType":"YulIdentifier","src":"13697:6:30"}],"functionName":{"name":"mstore","nativeSrc":"13670:6:30","nodeType":"YulIdentifier","src":"13670:6:30"},"nativeSrc":"13670:34:30","nodeType":"YulFunctionCall","src":"13670:34:30"},"nativeSrc":"13670:34:30","nodeType":"YulExpressionStatement","src":"13670:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13724:9:30","nodeType":"YulIdentifier","src":"13724:9:30"},{"kind":"number","nativeSrc":"13735:2:30","nodeType":"YulLiteral","src":"13735:2:30","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"13720:3:30","nodeType":"YulIdentifier","src":"13720:3:30"},"nativeSrc":"13720:18:30","nodeType":"YulFunctionCall","src":"13720:18:30"},{"kind":"number","nativeSrc":"13740:3:30","nodeType":"YulLiteral","src":"13740:3:30","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"13713:6:30","nodeType":"YulIdentifier","src":"13713:6:30"},"nativeSrc":"13713:31:30","nodeType":"YulFunctionCall","src":"13713:31:30"},"nativeSrc":"13713:31:30","nodeType":"YulExpressionStatement","src":"13713:31:30"},{"nativeSrc":"13753:65:30","nodeType":"YulAssignment","src":"13753:65:30","value":{"arguments":[{"name":"value3","nativeSrc":"13790:6:30","nodeType":"YulIdentifier","src":"13790:6:30"},{"arguments":[{"name":"headStart","nativeSrc":"13802:9:30","nodeType":"YulIdentifier","src":"13802:9:30"},{"kind":"number","nativeSrc":"13813:3:30","nodeType":"YulLiteral","src":"13813:3:30","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"13798:3:30","nodeType":"YulIdentifier","src":"13798:3:30"},"nativeSrc":"13798:19:30","nodeType":"YulFunctionCall","src":"13798:19:30"}],"functionName":{"name":"abi_encode_string_memory_ptr","nativeSrc":"13761:28:30","nodeType":"YulIdentifier","src":"13761:28:30"},"nativeSrc":"13761:57:30","nodeType":"YulFunctionCall","src":"13761:57:30"},"variableNames":[{"name":"tail","nativeSrc":"13753:4:30","nodeType":"YulIdentifier","src":"13753:4:30"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"13328:496:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13476:9:30","nodeType":"YulTypedName","src":"13476:9:30","type":""},{"name":"value3","nativeSrc":"13487:6:30","nodeType":"YulTypedName","src":"13487:6:30","type":""},{"name":"value2","nativeSrc":"13495:6:30","nodeType":"YulTypedName","src":"13495:6:30","type":""},{"name":"value1","nativeSrc":"13503:6:30","nodeType":"YulTypedName","src":"13503:6:30","type":""},{"name":"value0","nativeSrc":"13511:6:30","nodeType":"YulTypedName","src":"13511:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13522:4:30","nodeType":"YulTypedName","src":"13522:4:30","type":""}],"src":"13328:496:30"},{"body":{"nativeSrc":"13909:169:30","nodeType":"YulBlock","src":"13909:169:30","statements":[{"body":{"nativeSrc":"13955:16:30","nodeType":"YulBlock","src":"13955:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13964:1:30","nodeType":"YulLiteral","src":"13964:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"13967:1:30","nodeType":"YulLiteral","src":"13967:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13957:6:30","nodeType":"YulIdentifier","src":"13957:6:30"},"nativeSrc":"13957:12:30","nodeType":"YulFunctionCall","src":"13957:12:30"},"nativeSrc":"13957:12:30","nodeType":"YulExpressionStatement","src":"13957:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13930:7:30","nodeType":"YulIdentifier","src":"13930:7:30"},{"name":"headStart","nativeSrc":"13939:9:30","nodeType":"YulIdentifier","src":"13939:9:30"}],"functionName":{"name":"sub","nativeSrc":"13926:3:30","nodeType":"YulIdentifier","src":"13926:3:30"},"nativeSrc":"13926:23:30","nodeType":"YulFunctionCall","src":"13926:23:30"},{"kind":"number","nativeSrc":"13951:2:30","nodeType":"YulLiteral","src":"13951:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"13922:3:30","nodeType":"YulIdentifier","src":"13922:3:30"},"nativeSrc":"13922:32:30","nodeType":"YulFunctionCall","src":"13922:32:30"},"nativeSrc":"13919:52:30","nodeType":"YulIf","src":"13919:52:30"},{"nativeSrc":"13980:29:30","nodeType":"YulVariableDeclaration","src":"13980:29:30","value":{"arguments":[{"name":"headStart","nativeSrc":"13999:9:30","nodeType":"YulIdentifier","src":"13999:9:30"}],"functionName":{"name":"mload","nativeSrc":"13993:5:30","nodeType":"YulIdentifier","src":"13993:5:30"},"nativeSrc":"13993:16:30","nodeType":"YulFunctionCall","src":"13993:16:30"},"variables":[{"name":"value","nativeSrc":"13984:5:30","nodeType":"YulTypedName","src":"13984:5:30","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14042:5:30","nodeType":"YulIdentifier","src":"14042:5:30"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"14018:23:30","nodeType":"YulIdentifier","src":"14018:23:30"},"nativeSrc":"14018:30:30","nodeType":"YulFunctionCall","src":"14018:30:30"},"nativeSrc":"14018:30:30","nodeType":"YulExpressionStatement","src":"14018:30:30"},{"nativeSrc":"14057:15:30","nodeType":"YulAssignment","src":"14057:15:30","value":{"name":"value","nativeSrc":"14067:5:30","nodeType":"YulIdentifier","src":"14067:5:30"},"variableNames":[{"name":"value0","nativeSrc":"14057:6:30","nodeType":"YulIdentifier","src":"14057:6:30"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nativeSrc":"13829:249:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13875:9:30","nodeType":"YulTypedName","src":"13875:9:30","type":""},{"name":"dataEnd","nativeSrc":"13886:7:30","nodeType":"YulTypedName","src":"13886:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13898:6:30","nodeType":"YulTypedName","src":"13898:6:30","type":""}],"src":"13829:249:30"},{"body":{"nativeSrc":"14212:145:30","nodeType":"YulBlock","src":"14212:145:30","statements":[{"nativeSrc":"14222:26:30","nodeType":"YulAssignment","src":"14222:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"14234:9:30","nodeType":"YulIdentifier","src":"14234:9:30"},{"kind":"number","nativeSrc":"14245:2:30","nodeType":"YulLiteral","src":"14245:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14230:3:30","nodeType":"YulIdentifier","src":"14230:3:30"},"nativeSrc":"14230:18:30","nodeType":"YulFunctionCall","src":"14230:18:30"},"variableNames":[{"name":"tail","nativeSrc":"14222:4:30","nodeType":"YulIdentifier","src":"14222:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"14264:9:30","nodeType":"YulIdentifier","src":"14264:9:30"},{"arguments":[{"name":"value0","nativeSrc":"14279:6:30","nodeType":"YulIdentifier","src":"14279:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14295:3:30","nodeType":"YulLiteral","src":"14295:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"14300:1:30","nodeType":"YulLiteral","src":"14300:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"14291:3:30","nodeType":"YulIdentifier","src":"14291:3:30"},"nativeSrc":"14291:11:30","nodeType":"YulFunctionCall","src":"14291:11:30"},{"kind":"number","nativeSrc":"14304:1:30","nodeType":"YulLiteral","src":"14304:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"14287:3:30","nodeType":"YulIdentifier","src":"14287:3:30"},"nativeSrc":"14287:19:30","nodeType":"YulFunctionCall","src":"14287:19:30"}],"functionName":{"name":"and","nativeSrc":"14275:3:30","nodeType":"YulIdentifier","src":"14275:3:30"},"nativeSrc":"14275:32:30","nodeType":"YulFunctionCall","src":"14275:32:30"}],"functionName":{"name":"mstore","nativeSrc":"14257:6:30","nodeType":"YulIdentifier","src":"14257:6:30"},"nativeSrc":"14257:51:30","nodeType":"YulFunctionCall","src":"14257:51:30"},"nativeSrc":"14257:51:30","nodeType":"YulExpressionStatement","src":"14257:51:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14328:9:30","nodeType":"YulIdentifier","src":"14328:9:30"},{"kind":"number","nativeSrc":"14339:2:30","nodeType":"YulLiteral","src":"14339:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14324:3:30","nodeType":"YulIdentifier","src":"14324:3:30"},"nativeSrc":"14324:18:30","nodeType":"YulFunctionCall","src":"14324:18:30"},{"name":"value1","nativeSrc":"14344:6:30","nodeType":"YulIdentifier","src":"14344:6:30"}],"functionName":{"name":"mstore","nativeSrc":"14317:6:30","nodeType":"YulIdentifier","src":"14317:6:30"},"nativeSrc":"14317:34:30","nodeType":"YulFunctionCall","src":"14317:34:30"},"nativeSrc":"14317:34:30","nodeType":"YulExpressionStatement","src":"14317:34:30"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nativeSrc":"14083:274:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14173:9:30","nodeType":"YulTypedName","src":"14173:9:30","type":""},{"name":"value1","nativeSrc":"14184:6:30","nodeType":"YulTypedName","src":"14184:6:30","type":""},{"name":"value0","nativeSrc":"14192:6:30","nodeType":"YulTypedName","src":"14192:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"14203:4:30","nodeType":"YulTypedName","src":"14203:4:30","type":""}],"src":"14083:274:30"},{"body":{"nativeSrc":"14498:130:30","nodeType":"YulBlock","src":"14498:130:30","statements":[{"nativeSrc":"14508:26:30","nodeType":"YulAssignment","src":"14508:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"14520:9:30","nodeType":"YulIdentifier","src":"14520:9:30"},{"kind":"number","nativeSrc":"14531:2:30","nodeType":"YulLiteral","src":"14531:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14516:3:30","nodeType":"YulIdentifier","src":"14516:3:30"},"nativeSrc":"14516:18:30","nodeType":"YulFunctionCall","src":"14516:18:30"},"variableNames":[{"name":"tail","nativeSrc":"14508:4:30","nodeType":"YulIdentifier","src":"14508:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"14550:9:30","nodeType":"YulIdentifier","src":"14550:9:30"},{"arguments":[{"name":"value0","nativeSrc":"14565:6:30","nodeType":"YulIdentifier","src":"14565:6:30"},{"kind":"number","nativeSrc":"14573:4:30","nodeType":"YulLiteral","src":"14573:4:30","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"14561:3:30","nodeType":"YulIdentifier","src":"14561:3:30"},"nativeSrc":"14561:17:30","nodeType":"YulFunctionCall","src":"14561:17:30"}],"functionName":{"name":"mstore","nativeSrc":"14543:6:30","nodeType":"YulIdentifier","src":"14543:6:30"},"nativeSrc":"14543:36:30","nodeType":"YulFunctionCall","src":"14543:36:30"},"nativeSrc":"14543:36:30","nodeType":"YulExpressionStatement","src":"14543:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14599:9:30","nodeType":"YulIdentifier","src":"14599:9:30"},{"kind":"number","nativeSrc":"14610:2:30","nodeType":"YulLiteral","src":"14610:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14595:3:30","nodeType":"YulIdentifier","src":"14595:3:30"},"nativeSrc":"14595:18:30","nodeType":"YulFunctionCall","src":"14595:18:30"},{"name":"value1","nativeSrc":"14615:6:30","nodeType":"YulIdentifier","src":"14615:6:30"}],"functionName":{"name":"mstore","nativeSrc":"14588:6:30","nodeType":"YulIdentifier","src":"14588:6:30"},"nativeSrc":"14588:34:30","nodeType":"YulFunctionCall","src":"14588:34:30"},"nativeSrc":"14588:34:30","nodeType":"YulExpressionStatement","src":"14588:34:30"}]},"name":"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed","nativeSrc":"14362:266:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14459:9:30","nodeType":"YulTypedName","src":"14459:9:30","type":""},{"name":"value1","nativeSrc":"14470:6:30","nodeType":"YulTypedName","src":"14470:6:30","type":""},{"name":"value0","nativeSrc":"14478:6:30","nodeType":"YulTypedName","src":"14478:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"14489:4:30","nodeType":"YulTypedName","src":"14489:4:30","type":""}],"src":"14362:266:30"},{"body":{"nativeSrc":"14681:134:30","nodeType":"YulBlock","src":"14681:134:30","statements":[{"nativeSrc":"14691:59:30","nodeType":"YulAssignment","src":"14691:59:30","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"14707:1:30","nodeType":"YulIdentifier","src":"14707:1:30"},{"kind":"number","nativeSrc":"14710:14:30","nodeType":"YulLiteral","src":"14710:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"14703:3:30","nodeType":"YulIdentifier","src":"14703:3:30"},"nativeSrc":"14703:22:30","nodeType":"YulFunctionCall","src":"14703:22:30"},{"arguments":[{"name":"y","nativeSrc":"14731:1:30","nodeType":"YulIdentifier","src":"14731:1:30"},{"kind":"number","nativeSrc":"14734:14:30","nodeType":"YulLiteral","src":"14734:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"14727:3:30","nodeType":"YulIdentifier","src":"14727:3:30"},"nativeSrc":"14727:22:30","nodeType":"YulFunctionCall","src":"14727:22:30"}],"functionName":{"name":"sub","nativeSrc":"14699:3:30","nodeType":"YulIdentifier","src":"14699:3:30"},"nativeSrc":"14699:51:30","nodeType":"YulFunctionCall","src":"14699:51:30"},"variableNames":[{"name":"diff","nativeSrc":"14691:4:30","nodeType":"YulIdentifier","src":"14691:4:30"}]},{"body":{"nativeSrc":"14787:22:30","nodeType":"YulBlock","src":"14787:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14789:16:30","nodeType":"YulIdentifier","src":"14789:16:30"},"nativeSrc":"14789:18:30","nodeType":"YulFunctionCall","src":"14789:18:30"},"nativeSrc":"14789:18:30","nodeType":"YulExpressionStatement","src":"14789:18:30"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"14765:4:30","nodeType":"YulIdentifier","src":"14765:4:30"},{"kind":"number","nativeSrc":"14771:14:30","nodeType":"YulLiteral","src":"14771:14:30","type":"","value":"0xffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14762:2:30","nodeType":"YulIdentifier","src":"14762:2:30"},"nativeSrc":"14762:24:30","nodeType":"YulFunctionCall","src":"14762:24:30"},"nativeSrc":"14759:50:30","nodeType":"YulIf","src":"14759:50:30"}]},"name":"checked_sub_t_uint48","nativeSrc":"14633:182:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"14663:1:30","nodeType":"YulTypedName","src":"14663:1:30","type":""},{"name":"y","nativeSrc":"14666:1:30","nodeType":"YulTypedName","src":"14666:1:30","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"14672:4:30","nodeType":"YulTypedName","src":"14672:4:30","type":""}],"src":"14633:182:30"}]},"contents":"{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint48__to_t_uint48__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint96(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffff))) { revert(0, 0) }\n value1 := value\n }\n function abi_encode_string_memory_ptr(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n mcopy(add(pos, 0x20), add(value, 0x20), length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string_memory_ptr(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := 0\n value := calldataload(add(headStart, 32))\n value1 := value\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let value := 0\n value := calldataload(add(headStart, 64))\n value2 := value\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n let value_1 := 0\n value_1 := calldataload(add(headStart, 32))\n value1 := value_1\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_string_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n value0 := add(_1, 32)\n value1 := length\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_uint48(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint48_t_uint48__to_t_uint48_t_uint48__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffff))\n mstore(add(headStart, 32), and(value1, 0xffffffffffff))\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let value := 0\n value := calldataload(add(headStart, 64))\n value2 := value\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_1)\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, length)\n if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_1, 32), length)\n mstore(add(add(memPtr, length), 32), 0)\n value3 := memPtr\n }\n function abi_encode_tuple_t_address_t_uint48__to_t_address_t_uint48__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), and(value1, 0xffffffffffff))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint96__to_t_uint96__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffff))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _1 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _1) { start := add(start, 1) }\n { sstore(start, 0) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(slot, src, len)\n {\n if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n let srcOffset := 0\n switch gt(len, 31)\n case 1 {\n let loopEnd := and(len, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) }\n {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 0x20)\n }\n if lt(loopEnd, len)\n {\n sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), not(0)))))\n }\n sstore(slot, add(shl(1, len), 1))\n }\n default {\n let value := 0\n if len\n {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n }\n }\n function abi_encode_tuple_t_string_memory_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_string_memory_ptr(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n mstore(tail_1, value2)\n calldatacopy(add(tail_1, 32), value1, value2)\n mstore(add(add(tail_1, value2), 32), 0)\n tail := add(add(tail_1, and(add(value2, 31), not(31))), 32)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mcopy(pos, add(value, 0x20), length)\n let _1 := add(pos, length)\n mstore(_1, 0)\n end := _1\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n end := abi_encode_string(value1, abi_encode_string(value0, pos))\n }\n function abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function checked_add_t_uint48(x, y) -> sum\n {\n sum := add(and(x, 0xffffffffffff), and(y, 0xffffffffffff))\n if gt(sum, 0xffffffffffff) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string_memory_ptr(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xff))\n mstore(add(headStart, 32), value1)\n }\n function checked_sub_t_uint48(x, y) -> diff\n {\n diff := sub(and(x, 0xffffffffffff), and(y, 0xffffffffffff))\n if gt(diff, 0xffffffffffff) { panic_error_0x11() }\n }\n}","id":30,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561000f575f80fd5b506004361061024a575f3560e01c806370a0823111610140578063a22cb465116100bf578063cf6eefb711610084578063cf6eefb714610503578063d539139314610531578063d547741f14610558578063d602b9fd1461056b578063e8a3d48514610573578063e985e9c51461057b575f80fd5b8063a22cb465146104ba578063b88d4fde146104cd578063c87b56dd146104e0578063cc8463c8146104f3578063cefc1429146104fb575f80fd5b8063938e3d7b11610105578063938e3d7b1461045e57806395d89b4114610471578063a144819414610479578063a1eda53c1461048c578063a217fddf146104b3575f80fd5b806370a08231146104175780638456cb591461042a57806384ef8ffc146104325780638da5cb5b1461044357806391d148541461044b575f80fd5b80632f2ff15d116101cc5780635c975abb116101915780635c975abb146103cb578063634e93da146103d65780636352211e146103e9578063649a5ec7146103fc5780636c0360eb1461040f575f80fd5b80632f2ff15d1461037757806336568abe1461038a5780633f4ba83a1461039d57806342842e0e146103a557806355f804b3146103b8575f80fd5b8063095ea7b311610212578063095ea7b3146102e75780630aa6220b146102fa57806323b872dd14610302578063248a9ca3146103155780632a55205a14610345575f80fd5b806301ffc9a71461024e578063022d63fb1461027657806302fa7c471461029257806306fdde03146102a7578063081812fc146102bc575b5f80fd5b61026161025c366004611ce7565b61058e565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff909116815260200161026d565b6102a56102a0366004611d1d565b61059e565b005b6102af610625565b60405161026d9190611d8b565b6102cf6102ca366004611d9d565b6106b4565b6040516001600160a01b03909116815260200161026d565b6102a56102f5366004611db4565b6106db565b6102a56106ea565b6102a5610310366004611ddc565b6106ff565b610337610323366004611d9d565b5f9081526008602052604090206001015490565b60405190815260200161026d565b610358610353366004611e16565b61078d565b604080516001600160a01b03909316835260208301919091520161026d565b6102a5610385366004611e36565b610810565b6102a5610398366004611e36565b610838565b6102a56108de565b6102a56103b3366004611ddc565b6108f0565b6102a56103c6366004611e60565b61090f565b600b5460ff16610261565b6102a56103e4366004611ece565b6109f8565b6102cf6103f7366004611d9d565b610a0b565b6102a561040a366004611ee7565b610a15565b6102af610a28565b610337610425366004611ece565b610a37565b6102a5610a7c565b600a546001600160a01b03166102cf565b6102cf610a8e565b610261610459366004611e36565b610aa6565b6102a561046c366004611e60565b610ad0565b6102af610bab565b6102a5610487366004611db4565b610bba565b610494610bf6565b6040805165ffffffffffff93841681529290911660208301520161026d565b6103375f81565b6102a56104c8366004611f0c565b610c48565b6102a56104db366004611f4e565b610c53565b6102af6104ee366004611d9d565b610c6b565b61027b610cd0565b6102a5610d2e565b61050b610d6d565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161026d565b6103377f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102a5610566366004611e36565b610d8e565b6102a5610db6565b6102af610dc8565b61026161058936600461202b565b610dd7565b5f61059882610e04565b92915050565b5f6105a881610e28565b6001600160a01b0383166105cf5760405163d92e233d60e01b815260040160405180910390fd5b6105d98383610e32565b6040516001600160601b03831681526001600160a01b038416907fe12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf49060200160405180910390a2505050565b60605f805461063390612053565b80601f016020809104026020016040519081016040528092919081815260200182805461065f90612053565b80156106aa5780601f10610681576101008083540402835291602001916106aa565b820191905f5260205f20905b81548152906001019060200180831161068d57829003601f168201915b5050505050905090565b5f6106be82610ed4565b505f828152600460205260409020546001600160a01b0316610598565b6106e6828233610f0c565b5050565b5f6106f481610e28565b6106fc610f19565b50565b6001600160a01b03821661072d57604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610739838333610f25565b9050836001600160a01b0316816001600160a01b031614610787576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610724565b50505050565b5f82815260076020526040812080548291906001600160a01b03811690600160a01b90046001600160601b0316816107e05750506006546001600160a01b03811690600160a01b90046001600160601b03165b5f6127106107f76001600160601b0384168961209f565b61080191906120b6565b92989297509195505050505050565b8161082e57604051631fe1e13d60e11b815260040160405180910390fd5b6106e68282611017565b811580156108535750600a546001600160a01b038281169116145b156108d4575f80610862610d6d565b90925090506001600160a01b038216151580610884575065ffffffffffff8116155b8061089757504265ffffffffffff821610155b156108bf576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610724565b50506009805465ffffffffffff60a01b191690555b6106e6828261103b565b5f6108e881610e28565b6106fc61106e565b61090a83838360405180602001604052805f815250610c53565b505050565b5f61091981610e28565b5f600c805461092790612053565b80601f016020809104026020016040519081016040528092919081815260200182805461095390612053565b801561099e5780601f106109755761010080835404028352916020019161099e565b820191905f5260205f20905b81548152906001019060200180831161098157829003601f168201915b505050505090508383600c91826109b6929190612119565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc18185856040516109ea939291906121d3565b60405180910390a150505050565b5f610a0281610e28565b6106e6826110c0565b5f61059882610ed4565b5f610a1f81610e28565b6106e682611132565b6060600c805461063390612053565b5f6001600160a01b038216610a61576040516322718ad960e21b81525f6004820152602401610724565b506001600160a01b03165f9081526003602052604090205490565b5f610a8681610e28565b6106fc6111a1565b5f610aa1600a546001600160a01b031690565b905090565b5f9182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610ada81610e28565b5f600d8054610ae890612053565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1490612053565b8015610b5f5780601f10610b3657610100808354040283529160200191610b5f565b820191905f5260205f20905b815481529060010190602001808311610b4257829003601f168201915b505050505090508383600d9182610b77929190612119565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168185856040516109ea939291906121d3565b60606001805461063390612053565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610be481610e28565b610bec6111de565b61090a8383611202565b600a545f90600160d01b900465ffffffffffff168015158015610c2157504265ffffffffffff821610155b610c2c575f80610c40565b600a54600160a01b900465ffffffffffff16815b915091509091565b6106e633838361121b565b610c5e8484846106ff565b61078733858585856112e2565b6060610c7682610ed4565b505f610c80610a28565b90505f815111610c9e5760405180602001604052805f815250610cc9565b80610ca88461140a565b604051602001610cb992919061222e565b6040516020818303038152906040525b9392505050565b600a545f90600160d01b900465ffffffffffff168015158015610cfa57504265ffffffffffff8216105b610d1557600954600160d01b900465ffffffffffff16610d28565b600a54600160a01b900465ffffffffffff165b91505090565b5f610d37610d6d565b509050336001600160a01b03821614610d6557604051636116401160e11b8152336004820152602401610724565b6106fc61149a565b6009546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610dac57604051631fe1e13d60e11b815260040160405180910390fd5b6106e68282611530565b5f610dc081610e28565b6106fc611554565b6060600d805461063390612053565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166318a4c3c360e11b148061059857506105988261155e565b6106fc8133611582565b6127106001600160601b038216811015610e7157604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610724565b6001600160a01b038316610e9a57604051635b6cc80560e11b81525f6004820152602401610724565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b5f818152600260205260408120546001600160a01b03168061059857604051637e27328960e01b815260048101849052602401610724565b61090a83838360016115bb565b610f235f806116bf565b565b5f828152600260205260408120546001600160a01b0390811690831615610f5157610f5181848661177e565b6001600160a01b03811615610f8b57610f6c5f855f806115bb565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615610fb9576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f8281526008602052604090206001015461103181610e28565b61078783836117e2565b6001600160a01b03811633146110645760405163334bd91960e11b815260040160405180910390fd5b61090a8282611848565b611076611884565b600b805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f6110c9610cd0565b6110d2426118a7565b6110dc9190612242565b90506110e882826118dd565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f61113c8261195a565b611145426118a7565b61114f9190612242565b905061115b82826116bf565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6111a96111de565b600b805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110a33390565b600b5460ff1615610f235760405163d93c066560e01b815260040160405180910390fd5b6106e6828260405180602001604052805f8152506119a1565b6001600160a01b0383166112445760405163a9fbf51f60e01b81525f6004820152602401610724565b6001600160a01b03821661127657604051630b61174360e31b81526001600160a01b0383166004820152602401610724565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561140357604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611324908890889087908790600401612260565b6020604051808303815f875af192505050801561135e575060408051601f3d908101601f1916820190925261135b9181019061229c565b60015b6113c5573d80801561138b576040519150601f19603f3d011682016040523d82523d5f602084013e611390565b606091505b5080515f036113bd57604051633250574960e11b81526001600160a01b0385166004820152602401610724565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461140157604051633250574960e11b81526001600160a01b0385166004820152602401610724565b505b5050505050565b60605f611416836119b8565b60010190505f8167ffffffffffffffff81111561143557611435611f3a565b6040519080825280601f01601f19166020018201604052801561145f576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461146957509392505050565b5f806114a4610d6d565b915091506114b98165ffffffffffff16151590565b15806114cd57504265ffffffffffff821610155b156114f5576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610724565b6115105f61150b600a546001600160a01b031690565b611848565b5061151b5f836117e2565b5050600980546001600160d01b031916905550565b5f8281526008602052604090206001015461154a81610e28565b6107878383611848565b610f235f806118dd565b5f6001600160e01b03198216637965db0b60e01b1480610598575061059882611a8f565b61158c8282610aa6565b6106e65760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610724565b80806115cf57506001600160a01b03821615155b15611690575f6115de84610ed4565b90506001600160a01b0383161580159061160a5750826001600160a01b0316816001600160a01b031614155b801561161d575061161b8184610dd7565b155b156116465760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610724565b811561168e5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600a54600160d01b900465ffffffffffff168015611741574265ffffffffffff8216101561171857600a54600980546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611741565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600a80546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b611789838383611ab3565b61090a576001600160a01b0383166117b757604051637e27328960e01b815260048101829052602401610724565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610724565b5f8261183e575f6117fb600a546001600160a01b031690565b6001600160a01b03161461182257604051631fe1e13d60e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0384161790555b610cc98383611b17565b5f821580156118645750600a546001600160a01b038381169116145b1561187a57600a80546001600160a01b03191690555b610cc98383611ba8565b600b5460ff16610f2357604051638dfc202b60e01b815260040160405180910390fd5b5f65ffffffffffff8211156118d9576040516306dfcc6560e41b81526030600482015260248101839052604401610724565b5090565b5f6118e6610d6d565b6009805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b03881617179055915061192890508165ffffffffffff16151590565b1561090a576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a1505050565b5f80611964610cd0565b90508065ffffffffffff168365ffffffffffff161161198c5761198783826122b7565b610cc9565b610cc965ffffffffffff841662069780611c13565b6119ab8383611c22565b61090a335f8585856112e2565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106119f65772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611a22576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611a4057662386f26fc10000830492506010015b6305f5e1008310611a58576305f5e100830492506008015b6127108310611a6c57612710830492506004015b60648310611a7e576064830492506002015b600a83106105985760010192915050565b5f6001600160e01b0319821663152a902d60e11b1480610598575061059882611c83565b5f6001600160a01b03831615801590611b0f5750826001600160a01b0316846001600160a01b03161480611aec5750611aec8484610dd7565b80611b0f57505f828152600460205260409020546001600160a01b038481169116145b949350505050565b5f611b228383610aa6565b611ba1575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611b593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610598565b505f610598565b5f611bb38383610aa6565b15611ba1575f8381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610598565b5f828218828410028218610cc9565b6001600160a01b038216611c4b57604051633250574960e11b81525f6004820152602401610724565b5f611c5783835f610f25565b90506001600160a01b0381161561090a576040516339e3563760e11b81525f6004820152602401610724565b5f6001600160e01b031982166380ac58cd60e01b1480611cb357506001600160e01b03198216635b5e139f60e01b145b8061059857506301ffc9a760e01b6001600160e01b0319831614610598565b6001600160e01b0319811681146106fc575f80fd5b5f60208284031215611cf7575f80fd5b8135610cc981611cd2565b80356001600160a01b0381168114611d18575f80fd5b919050565b5f8060408385031215611d2e575f80fd5b611d3783611d02565b915060208301356001600160601b0381168114611d52575f80fd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cc96020830184611d5d565b5f60208284031215611dad575f80fd5b5035919050565b5f8060408385031215611dc5575f80fd5b611dce83611d02565b946020939093013593505050565b5f805f60608486031215611dee575f80fd5b611df784611d02565b9250611e0560208501611d02565b929592945050506040919091013590565b5f8060408385031215611e27575f80fd5b50508035926020909101359150565b5f8060408385031215611e47575f80fd5b82359150611e5760208401611d02565b90509250929050565b5f8060208385031215611e71575f80fd5b823567ffffffffffffffff811115611e87575f80fd5b8301601f81018513611e97575f80fd5b803567ffffffffffffffff811115611ead575f80fd5b856020828401011115611ebe575f80fd5b6020919091019590945092505050565b5f60208284031215611ede575f80fd5b610cc982611d02565b5f60208284031215611ef7575f80fd5b813565ffffffffffff81168114610cc9575f80fd5b5f8060408385031215611f1d575f80fd5b611f2683611d02565b915060208301358015158114611d52575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215611f61575f80fd5b611f6a85611d02565b9350611f7860208601611d02565b925060408501359150606085013567ffffffffffffffff811115611f9a575f80fd5b8501601f81018713611faa575f80fd5b803567ffffffffffffffff811115611fc457611fc4611f3a565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611ff357611ff3611f3a565b60405281815282820160200189101561200a575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f806040838503121561203c575f80fd5b61204583611d02565b9150611e5760208401611d02565b600181811c9082168061206757607f821691505b60208210810361208557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105985761059861208b565b5f826120d057634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561090a57805f5260205f20601f840160051c810160208510156120fa5750805b601f840160051c820191505b81811015611403575f8155600101612106565b67ffffffffffffffff83111561213157612131611f3a565b6121458361213f8354612053565b836120d5565b5f601f841160018114612176575f851561215f5750838201355b5f19600387901b1c1916600186901b178355611403565b5f83815260208120601f198716915b828110156121a55786850135825560209485019460019092019101612185565b50868210156121c1575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f6121e56040830186611d5d565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f611b0f61223c8386612217565b84612217565b65ffffffffffff81811683821601908111156105985761059861208b565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061229290830184611d5d565b9695505050505050565b5f602082840312156122ac575f80fd5b8151610cc981611cd2565b65ffffffffffff82811682821603908111156105985761059861208b56fea26469706673582212206c61f9cbc8861ecf23317af095dbbbb42c5ff32ed8e4a71b91c7a2a6aa06803564736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x24A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0xBF JUMPI DUP1 PUSH4 0xCF6EEFB7 GT PUSH2 0x84 JUMPI DUP1 PUSH4 0xCF6EEFB7 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0xD602B9FD EQ PUSH2 0x56B JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x573 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x57B JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x4CD JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0xCC8463C8 EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0xCEFC1429 EQ PUSH2 0x4FB JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x938E3D7B GT PUSH2 0x105 JUMPI DUP1 PUSH4 0x938E3D7B EQ PUSH2 0x45E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x471 JUMPI DUP1 PUSH4 0xA1448194 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0xA1EDA53C EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x4B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x84EF8FFC EQ PUSH2 0x432 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x44B JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x1CC JUMPI DUP1 PUSH4 0x5C975ABB GT PUSH2 0x191 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0x634E93DA EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x649A5EC7 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x40F JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0x55F804B3 EQ PUSH2 0x3B8 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x212 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xAA6220B EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x345 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x22D63FB EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x2FA7C47 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2BC JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x261 PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x1CE7 JUMP JUMPDEST PUSH2 0x58E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x69780 JUMPDEST PUSH1 0x40 MLOAD PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x2A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D1D JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2AF PUSH2 0x625 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26D SWAP2 SWAP1 PUSH2 0x1D8B JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x2CA CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9D JUMP JUMPDEST PUSH2 0x6B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x2F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DB4 JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x6EA JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x310 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DDC JUMP JUMPDEST PUSH2 0x6FF JUMP JUMPDEST PUSH2 0x337 PUSH2 0x323 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9D JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x358 PUSH2 0x353 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E16 JUMP JUMPDEST PUSH2 0x78D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x810 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x398 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x838 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x8DE JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DDC JUMP JUMPDEST PUSH2 0x8F0 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x3C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E60 JUMP JUMPDEST PUSH2 0x90F JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0xFF AND PUSH2 0x261 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x3E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ECE JUMP JUMPDEST PUSH2 0x9F8 JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x3F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9D JUMP JUMPDEST PUSH2 0xA0B JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x40A CALLDATASIZE PUSH1 0x4 PUSH2 0x1EE7 JUMP JUMPDEST PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0xA28 JUMP JUMPDEST PUSH2 0x337 PUSH2 0x425 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ECE JUMP JUMPDEST PUSH2 0xA37 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0xA7C JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CF JUMP JUMPDEST PUSH2 0x2CF PUSH2 0xA8E JUMP JUMPDEST PUSH2 0x261 PUSH2 0x459 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0xAA6 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x46C CALLDATASIZE PUSH1 0x4 PUSH2 0x1E60 JUMP JUMPDEST PUSH2 0xAD0 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x487 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DB4 JUMP JUMPDEST PUSH2 0xBBA JUMP JUMPDEST PUSH2 0x494 PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x337 PUSH0 DUP2 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F0C JUMP JUMPDEST PUSH2 0xC48 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x4DB CALLDATASIZE PUSH1 0x4 PUSH2 0x1F4E JUMP JUMPDEST PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0x4EE CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9D JUMP JUMPDEST PUSH2 0xC6B JUMP JUMPDEST PUSH2 0x27B PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x50B PUSH2 0xD6D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x26D JUMP JUMPDEST PUSH2 0x337 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x566 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0xDB6 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0xDC8 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x589 CALLDATASIZE PUSH1 0x4 PUSH2 0x202B JUMP JUMPDEST PUSH2 0xDD7 JUMP JUMPDEST PUSH0 PUSH2 0x598 DUP3 PUSH2 0xE04 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5A8 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5CF JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5D9 DUP4 DUP4 PUSH2 0xE32 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xE12D7D5BDB8218A22277DCA8F854DD4573A1CEA3D3E4808DC567DF9EB1C14BF4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 SLOAD PUSH2 0x633 SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x65F SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6AA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x681 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6AA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x68D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x6BE DUP3 PUSH2 0xED4 JUMP JUMPDEST POP PUSH0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x598 JUMP JUMPDEST PUSH2 0x6E6 DUP3 DUP3 CALLER PUSH2 0xF0C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6F4 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0xF19 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x72D JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x739 DUP4 DUP4 CALLER PUSH2 0xF25 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x787 JUMPI PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x724 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x7E0 JUMPI POP POP PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST PUSH0 PUSH2 0x2710 PUSH2 0x7F7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND DUP10 PUSH2 0x209F JUMP JUMPDEST PUSH2 0x801 SWAP2 SWAP1 PUSH2 0x20B6 JUMP JUMPDEST SWAP3 SWAP9 SWAP3 SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x82E JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6E6 DUP3 DUP3 PUSH2 0x1017 JUMP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI POP PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x8D4 JUMPI PUSH0 DUP1 PUSH2 0x862 PUSH2 0xD6D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x884 JUMPI POP PUSH6 0xFFFFFFFFFFFF DUP2 AND ISZERO JUMPDEST DUP1 PUSH2 0x897 JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x8BF JUMPI PUSH1 0x40 MLOAD PUSH4 0x19CA5EBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST POP POP PUSH1 0x9 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE JUMPDEST PUSH2 0x6E6 DUP3 DUP3 PUSH2 0x103B JUMP JUMPDEST PUSH0 PUSH2 0x8E8 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x106E JUMP JUMPDEST PUSH2 0x90A DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0xC53 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x919 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH0 PUSH1 0xC DUP1 SLOAD PUSH2 0x927 SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x953 SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x99E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x975 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x99E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x981 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 DUP4 PUSH1 0xC SWAP2 DUP3 PUSH2 0x9B6 SWAP3 SWAP2 SWAP1 PUSH2 0x2119 JUMP JUMPDEST POP PUSH32 0x309B29DED109B9E28FB9885757B3E0096EB75C51D23AA4635D68BCD569F6ADC1 DUP2 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9EA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x21D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA02 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6E6 DUP3 PUSH2 0x10C0 JUMP JUMPDEST PUSH0 PUSH2 0x598 DUP3 PUSH2 0xED4 JUMP JUMPDEST PUSH0 PUSH2 0xA1F DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6E6 DUP3 PUSH2 0x1132 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC DUP1 SLOAD PUSH2 0x633 SWAP1 PUSH2 0x2053 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA61 JUMPI PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xA86 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x11A1 JUMP JUMPDEST PUSH0 PUSH2 0xAA1 PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xADA DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH0 PUSH1 0xD DUP1 SLOAD PUSH2 0xAE8 SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xB14 SWAP1 PUSH2 0x2053 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB5F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB36 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB5F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB42 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 DUP4 PUSH1 0xD SWAP2 DUP3 PUSH2 0xB77 SWAP3 SWAP2 SWAP1 PUSH2 0x2119 JUMP JUMPDEST POP PUSH32 0xC9C7C3FE08B88B4DF9D4D47EF47D2C43D55C025A0BA88CA442580ED9E7348A16 DUP2 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9EA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x21D3 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x633 SWAP1 PUSH2 0x2053 JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0xBE4 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0xBEC PUSH2 0x11DE JUMP JUMPDEST PUSH2 0x90A DUP4 DUP4 PUSH2 0x1202 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 ISZERO PUSH2 0xC21 JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST PUSH2 0xC2C JUMPI PUSH0 DUP1 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP2 JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x6E6 CALLER DUP4 DUP4 PUSH2 0x121B JUMP JUMPDEST PUSH2 0xC5E DUP5 DUP5 DUP5 PUSH2 0x6FF JUMP JUMPDEST PUSH2 0x787 CALLER DUP6 DUP6 DUP6 DUP6 PUSH2 0x12E2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC76 DUP3 PUSH2 0xED4 JUMP JUMPDEST POP PUSH0 PUSH2 0xC80 PUSH2 0xA28 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 MLOAD GT PUSH2 0xC9E JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0xCC9 JUMP JUMPDEST DUP1 PUSH2 0xCA8 DUP5 PUSH2 0x140A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCB9 SWAP3 SWAP2 SWAP1 PUSH2 0x222E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 ISZERO PUSH2 0xCFA JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT JUMPDEST PUSH2 0xD15 JUMPI PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND PUSH2 0xD28 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xD37 PUSH2 0xD6D JUMP JUMPDEST POP SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0xD65 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61164011 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x149A JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH6 0xFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0xDAC JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6E6 DUP3 DUP3 PUSH2 0x1530 JUMP JUMPDEST PUSH0 PUSH2 0xDC0 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x1554 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xD DUP1 SLOAD PUSH2 0x633 SWAP1 PUSH2 0x2053 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x18A4C3C3 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x598 JUMPI POP PUSH2 0x598 DUP3 PUSH2 0x155E JUMP JUMPDEST PUSH2 0x6FC DUP2 CALLER PUSH2 0x1582 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND DUP2 LT ISZERO PUSH2 0xE71 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6F483D09 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x724 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE9A JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B6CC805 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 MUL OR PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x598 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH2 0x90A DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0xF23 PUSH0 DUP1 PUSH2 0x16BF JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND ISZERO PUSH2 0xF51 JUMPI PUSH2 0xF51 DUP2 DUP5 DUP7 PUSH2 0x177E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xF8B JUMPI PUSH2 0xF6C PUSH0 DUP6 PUSH0 DUP1 PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP8 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x1031 DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x787 DUP4 DUP4 PUSH2 0x17E2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x1064 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x90A DUP3 DUP3 PUSH2 0x1848 JUMP JUMPDEST PUSH2 0x1076 PUSH2 0x1884 JUMP JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH0 PUSH2 0x10C9 PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x10D2 TIMESTAMP PUSH2 0x18A7 JUMP JUMPDEST PUSH2 0x10DC SWAP2 SWAP1 PUSH2 0x2242 JUMP JUMPDEST SWAP1 POP PUSH2 0x10E8 DUP3 DUP3 PUSH2 0x18DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x3377DC44241E779DD06AFAB5B788A35CA5F3B778836E2990BDB26A2A4B2E5ED6 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x113C DUP3 PUSH2 0x195A JUMP JUMPDEST PUSH2 0x1145 TIMESTAMP PUSH2 0x18A7 JUMP JUMPDEST PUSH2 0x114F SWAP2 SWAP1 PUSH2 0x2242 JUMP JUMPDEST SWAP1 POP PUSH2 0x115B DUP3 DUP3 PUSH2 0x16BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xF1038C18CF84A56E432FDBFAF746924B7EA511DFE03A6506A0CEBA4888788D9B SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x11A9 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x10A3 CALLER SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xF23 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6E6 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0x19A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1244 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1276 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x1403 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1324 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2260 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x135E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x135B SWAP2 DUP2 ADD SWAP1 PUSH2 0x229C JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x13C5 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x138B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1390 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH0 SUB PUSH2 0x13BD JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0x1401 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x1416 DUP4 PUSH2 0x19B8 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1435 JUMPI PUSH2 0x1435 PUSH2 0x1F3A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x145F JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0x1469 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x14A4 PUSH2 0xD6D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x14B9 DUP2 PUSH6 0xFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO DUP1 PUSH2 0x14CD JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x14F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x19CA5EBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH2 0x1510 PUSH0 PUSH2 0x150B PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1848 JUMP JUMPDEST POP PUSH2 0x151B PUSH0 DUP4 PUSH2 0x17E2 JUMP JUMPDEST POP POP PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x154A DUP2 PUSH2 0xE28 JUMP JUMPDEST PUSH2 0x787 DUP4 DUP4 PUSH2 0x1848 JUMP JUMPDEST PUSH2 0xF23 PUSH0 DUP1 PUSH2 0x18DD JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x598 JUMPI POP PUSH2 0x598 DUP3 PUSH2 0x1A8F JUMP JUMPDEST PUSH2 0x158C DUP3 DUP3 PUSH2 0xAA6 JUMP JUMPDEST PUSH2 0x6E6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x724 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x15CF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1690 JUMPI PUSH0 PUSH2 0x15DE DUP5 PUSH2 0xED4 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x160A JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x161D JUMPI POP PUSH2 0x161B DUP2 DUP5 PUSH2 0xDD7 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1646 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x168E JUMPI DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0x1741 JUMPI TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO PUSH2 0x1718 JUMPI PUSH1 0xA SLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV PUSH6 0xFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xD0 SHL MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1741 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2B1FA2EDAFE6F7B9E97C1A9E0C3660E645BEB2DCAA2D45BDBF9BEAF5472E1EC5 SWAP1 PUSH0 SWAP1 LOG1 JUMPDEST POP PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH6 0xFFFFFFFFFFFF SWAP5 DUP6 AND MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND OR PUSH1 0x1 PUSH1 0xD0 SHL SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1789 DUP4 DUP4 DUP4 PUSH2 0x1AB3 JUMP JUMPDEST PUSH2 0x90A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x17B7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x724 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x183E JUMPI PUSH0 PUSH2 0x17FB PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1822 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0xCC9 DUP4 DUP4 PUSH2 0x1B17 JUMP JUMPDEST PUSH0 DUP3 ISZERO DUP1 ISZERO PUSH2 0x1864 JUMPI POP PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x187A JUMPI PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMPDEST PUSH2 0xCC9 DUP4 DUP4 PUSH2 0x1BA8 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0xFF AND PUSH2 0xF23 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x18D9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x30 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x724 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x18E6 PUSH2 0xD6D JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF DUP7 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND OR OR SWAP1 SSTORE SWAP2 POP PUSH2 0x1928 SWAP1 POP DUP2 PUSH6 0xFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x90A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8886EBFC4259ABDBC16601DD8FB5678E54878F47B3C34836CFC51154A9605109 SWAP1 PUSH0 SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1964 PUSH2 0xCD0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH6 0xFFFFFFFFFFFF AND DUP4 PUSH6 0xFFFFFFFFFFFF AND GT PUSH2 0x198C JUMPI PUSH2 0x1987 DUP4 DUP3 PUSH2 0x22B7 JUMP JUMPDEST PUSH2 0xCC9 JUMP JUMPDEST PUSH2 0xCC9 PUSH6 0xFFFFFFFFFFFF DUP5 AND PUSH3 0x69780 PUSH2 0x1C13 JUMP JUMPDEST PUSH2 0x19AB DUP4 DUP4 PUSH2 0x1C22 JUMP JUMPDEST PUSH2 0x90A CALLER PUSH0 DUP6 DUP6 DUP6 PUSH2 0x12E2 JUMP JUMPDEST PUSH0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0x19F6 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1A22 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1A40 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1A58 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x1A6C JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1A7E JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x598 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x152A902D PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x598 JUMPI POP PUSH2 0x598 DUP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1B0F JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1AEC JUMPI POP PUSH2 0x1AEC DUP5 DUP5 PUSH2 0xDD7 JUMP JUMPDEST DUP1 PUSH2 0x1B0F JUMPI POP PUSH0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1B22 DUP4 DUP4 PUSH2 0xAA6 JUMP JUMPDEST PUSH2 0x1BA1 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x1B59 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x598 JUMP JUMPDEST POP PUSH0 PUSH2 0x598 JUMP JUMPDEST PUSH0 PUSH2 0x1BB3 DUP4 DUP4 PUSH2 0xAA6 JUMP JUMPDEST ISZERO PUSH2 0x1BA1 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP7 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x598 JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xCC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C4B JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH0 PUSH2 0x1C57 DUP4 DUP4 PUSH0 PUSH2 0xF25 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x90A JUMPI PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x724 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x1CB3 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x598 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6FC JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1CF7 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCC9 DUP2 PUSH2 0x1CD2 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1D18 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D2E JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1D37 DUP4 PUSH2 0x1D02 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1D52 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xCC9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1D5D JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DAD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DC5 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1DCE DUP4 PUSH2 0x1D02 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1DEE JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1DF7 DUP5 PUSH2 0x1D02 JUMP JUMPDEST SWAP3 POP PUSH2 0x1E05 PUSH1 0x20 DUP6 ADD PUSH2 0x1D02 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E27 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E47 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x1E57 PUSH1 0x20 DUP5 ADD PUSH2 0x1D02 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E71 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E87 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1E97 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1EAD JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x1EBE JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EDE JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xCC9 DUP3 PUSH2 0x1D02 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EF7 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xCC9 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F1D JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1F26 DUP4 PUSH2 0x1D02 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1D52 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1F61 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1F6A DUP6 PUSH2 0x1D02 JUMP JUMPDEST SWAP4 POP PUSH2 0x1F78 PUSH1 0x20 DUP7 ADD PUSH2 0x1D02 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F9A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x1FAA JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FC4 JUMPI PUSH2 0x1FC4 PUSH2 0x1F3A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FF3 JUMPI PUSH2 0x1FF3 PUSH2 0x1F3A JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP10 LT ISZERO PUSH2 0x200A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x203C JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x2045 DUP4 PUSH2 0x1D02 JUMP JUMPDEST SWAP2 POP PUSH2 0x1E57 PUSH1 0x20 DUP5 ADD PUSH2 0x1D02 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2067 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2085 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x598 JUMPI PUSH2 0x598 PUSH2 0x208B JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x20D0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x90A JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x20FA JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1403 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2106 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x2131 JUMPI PUSH2 0x2131 PUSH2 0x1F3A JUMP JUMPDEST PUSH2 0x2145 DUP4 PUSH2 0x213F DUP4 SLOAD PUSH2 0x2053 JUMP JUMPDEST DUP4 PUSH2 0x20D5 JUMP JUMPDEST PUSH0 PUSH1 0x1F DUP5 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2176 JUMPI PUSH0 DUP6 ISZERO PUSH2 0x215F JUMPI POP DUP4 DUP3 ADD CALLDATALOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP7 SWAP1 SHL OR DUP4 SSTORE PUSH2 0x1403 JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP8 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x21A5 JUMPI DUP7 DUP6 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2185 JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x21C1 JUMPI PUSH0 NOT PUSH1 0xF8 DUP9 PUSH1 0x3 SHL AND SHR NOT DUP5 DUP8 ADD CALLDATALOAD AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP6 PUSH1 0x1 SHL ADD DUP4 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x21E5 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x1D5D JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE DUP4 DUP2 MSTORE DUP4 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP7 ADD AND DUP3 ADD ADD SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 PUSH1 0x20 DUP5 ADD DUP6 MCOPY PUSH0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1B0F PUSH2 0x223C DUP4 DUP7 PUSH2 0x2217 JUMP JUMPDEST DUP5 PUSH2 0x2217 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x598 JUMPI PUSH2 0x598 PUSH2 0x208B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x2292 SWAP1 DUP4 ADD DUP5 PUSH2 0x1D5D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22AC JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCC9 DUP2 PUSH2 0x1CD2 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x598 JUMPI PUSH2 0x598 PUSH2 0x208B JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH13 0x61F9CBC8861ECF23317AF095DB 0xBB 0xB4 0x2C PUSH0 RETURN 0x2E 0xD8 0xE4 0xA7 SHL SWAP2 0xC7 LOG2 0xA6 0xAA MOD DUP1 CALLDATALOAD PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"678:6691:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7139:228;;;;;;:::i;:::-;;:::i;:::-;;;565:14:30;;558:22;540:41;;528:2;513:18;7139:228:27;;;;;;;;7766:108:4;7861:6;7766:108;;;766:14:30;754:27;;;736:46;;724:2;709:18;7766:108:4;592:196:30;5456:284:27;;;;;;:::i;:::-;;:::i;:::-;;2263:89:9;;;:::i;:::-;;;;;;;:::i;3299:154::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2278:32:30;;;2260:51;;2248:2;2233:18;3299:154:9;2114:203:30;3152:113:9;;;;;;:::i;:::-;;:::i;10852:126:4:-;;;:::i;3852:578:9:-;;;;;;:::i;:::-;;:::i;3776:120:0:-;;;;;;:::i;:::-;3841:7;3867:12;;;:6;:12;;;;;:22;;;;3776:120;;;;3383:25:30;;;3371:2;3356:18;3776:120:0;3237:177:30;2330:657:14;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;3962:32:30;;;3944:51;;4026:2;4011:18;;4004:34;;;;3917:18;2330:657:14;3770:274:30;3300:265:4;;;;;;:::i;:::-;;:::i;4617:566::-;;;;;;:::i;:::-;;:::i;5925:84:27:-;;;:::i;4464:132:9:-;;;;;;:::i;:::-;;:::i;4552:228:27:-;;;;;;:::i;:::-;;:::i;1726:84:18:-;1796:7;;;;1726:84;;8053:150:4;;;;;;:::i;:::-;;:::i;2103:118:9:-;;;;;;:::i;:::-;;:::i;10236:145:4:-;;;;;;:::i;:::-;;:::i;6460:94:27:-;;;:::i;1861:208:9:-;;;;;;:::i;:::-;;:::i;5805:80:27:-;;;:::i;6767:106:4:-;6846:20;;-1:-1:-1;;;;;6846:20:4;6767:106;;3044:93;;;:::i;2820:136:0:-;;;;;;:::i;:::-;;:::i;4942:286:27:-;;;;;;:::i;:::-;;:::i;2394:93:9:-;;;:::i;4100:131:27:-;;;;;;:::i;:::-;;:::i;7447:261:4:-;;;:::i;:::-;;;;5804:14:30;5792:27;;;5774:46;;5856:27;;;;5851:2;5836:18;;5829:55;5747:18;7447:261:4;5604:286:30;2187:49:0;;2232:4;2187:49;;3487:144:9;;;;;;:::i;:::-;;:::i;4630:233::-;;;;;;:::i;:::-;;:::i;2529:255::-;;;;;;:::i;:::-;;:::i;7160:229:4:-;;;:::i;9101:344::-;;;:::i;6931:171::-;;;:::i;:::-;;;;-1:-1:-1;;;;;7781:32:30;;;7763:51;;7862:14;7850:27;;;7845:2;7830:18;;7823:55;7736:18;6931:171:4;7591:293:30;1016:62:27;;1054:24;1016:62;;3665:267:4;;;;;;:::i;:::-;;:::i;8676:128::-;;;:::i;6273:105:27:-;;;:::i;3665:153:9:-;;;;;;:::i;:::-;;:::i;7139:228:27:-;7297:4;7324:36;7348:11;7324:23;:36::i;:::-;7317:43;7139:228;-1:-1:-1;;7139:228:27:o;5456:284::-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;-1:-1:-1;;;;;5573:22:27;::::1;5569:48;;5604:13;;-1:-1:-1::0;;;5604:13:27::1;;;;;;;;;;;5569:48;5627:44;5646:8;5656:14;5627:18;:44::i;:::-;5686:47;::::0;-1:-1:-1;;;;;8316:39:30;;8298:58;;-1:-1:-1;;;;;5686:47:27;::::1;::::0;::::1;::::0;8286:2:30;8271:18;5686:47:27::1;;;;;;;5456:284:::0;;;:::o;2263:89:9:-;2308:13;2340:5;2333:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2263:89;:::o;3299:154::-;3366:7;3385:22;3399:7;3385:13;:22::i;:::-;-1:-1:-1;5679:7:9;5705:24;;;:15;:24;;;;;;-1:-1:-1;;;;;5705:24:9;3425:21;5609:127;3152:113;3223:35;3232:2;3236:7;735:10:16;3223:8:9;:35::i;:::-;3152:113;;:::o;10852:126:4:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;10943:28:4::1;:26;:28::i;:::-;10852:126:::0;:::o;3852:578:9:-;-1:-1:-1;;;;;3946:16:9;;3942:87;;3985:33;;-1:-1:-1;;;3985:33:9;;4015:1;3985:33;;;2260:51:30;2233:18;;3985:33:9;;;;;;;;3942:87;4247:21;4271:34;4279:2;4283:7;735:10:16;4271:7:9;:34::i;:::-;4247:58;;4336:4;-1:-1:-1;;;;;4319:21:9;:13;-1:-1:-1;;;;;4319:21:9;;4315:109;;4363:50;;-1:-1:-1;;;4363:50:9;;-1:-1:-1;;;;;8972:32:30;;;4363:50:9;;;8954:51:30;9021:18;;;9014:34;;;9084:32;;9064:18;;;9057:60;8927:18;;4363:50:9;8752:371:30;4315:109:9;3932:498;3852:578;;;:::o;2330:657:14:-;2438:16;2517:26;;;:17;:26;;;;;2579:21;;2438:16;;2517:26;-1:-1:-1;;;;;2579:21:14;;;-1:-1:-1;;;2635:28:14;;-1:-1:-1;;;;;2635:28:14;2579:21;2674:173;;-1:-1:-1;;2741:19:14;:28;-1:-1:-1;;;;;2741:28:14;;;-1:-1:-1;;;2801:35:14;;-1:-1:-1;;;;;2801:35:14;2674:173;2857:21;3345:5;2882:27;-1:-1:-1;;;;;2882:27:14;;:9;:27;:::i;:::-;2881:49;;;;:::i;:::-;2949:15;;;;-1:-1:-1;2330:657:14;;-1:-1:-1;;;;;;2330:657:14:o;3300:265:4:-;3419:4;3415:104;;3468:40;;-1:-1:-1;;;3468:40:4;;;;;;;;;;;3415:104;3528:30;3544:4;3550:7;3528:15;:30::i;4617:566::-;4739:26;;:55;;;;-1:-1:-1;6846:20:4;;-1:-1:-1;;;;;4769:25:4;;;6846:20;;4769:25;4739:55;4735:399;;;4811:23;4836:15;4855:21;:19;:21::i;:::-;4810:66;;-1:-1:-1;4810:66:4;-1:-1:-1;;;;;;4894:29:4;;;;;:58;;-1:-1:-1;14485:13:4;;;;4894:58;:91;;;-1:-1:-1;14712:15:4;14701:26;;;;4956:29;4894:91;4890:185;;;5012:48;;-1:-1:-1;;;5012:48:4;;766:14:30;754:27;;5012:48:4;;;736:46:30;709:18;;5012:48:4;592:196:30;4890:185:4;-1:-1:-1;;5095:28:4;5088:35;;-1:-1:-1;;;;5088:35:4;;;4735:399;5143:33;5162:4;5168:7;5143:18;:33::i;5925:84:27:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;5992:10:27::1;:8;:10::i;4464:132:9:-:0;4550:39;4567:4;4573:2;4577:7;4550:39;;;;;;;;;;;;:16;:39::i;:::-;4464:132;;;:::o;4552:228:27:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;4646:25:27::1;4674:13;4646:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4713:8;;4697:13;:24;;;;;;;:::i;:::-;;4736:37;4751:11;4764:8;;4736:37;;;;;;;;:::i;:::-;;;;;;;;4636:144;4552:228:::0;;;:::o;8053:150:4:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;8160:36:4::1;8187:8;8160:26;:36::i;2103:118:9:-:0;2166:7;2192:22;2206:7;2192:13;:22::i;10236:145:4:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;10340:34:4::1;10365:8;10340:24;:34::i;6460:94:27:-:0;6502:13;6534;6527:20;;;;;:::i;1861:208:9:-;1924:7;-1:-1:-1;;;;;1947:19:9;;1943:87;;1989:30;;-1:-1:-1;;;1989:30:9;;2016:1;1989:30;;;2260:51:30;2233:18;;1989:30:9;2114:203:30;1943:87:9;-1:-1:-1;;;;;;2046:16:9;;;;;:9;:16;;;;;;;1861:208::o;5805:80:27:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;5870:8:27::1;:6;:8::i;3044:93:4:-:0;3090:7;3116:14;6846:20;;-1:-1:-1;;;;;6846:20:4;;6767:106;3116:14;3109:21;;3044:93;:::o;2820:136:0:-;2897:4;2920:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;2920:29:0;;;;;;;;;;;;;;;2820:136::o;4942:286:27:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;5052:25:27::1;5080:20;5052:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5133:20;;5110;:43;;;;;;;:::i;:::-;;5168:53;5187:11;5200:20;;5168:53;;;;;;;;:::i;2394:93:9:-:0;2441:13;2473:7;2466:14;;;;;:::i;4100:131:27:-;1054:24;2464:16:0;2475:4;2464:10;:16::i;:::-;1350:19:18::1;:17;:19::i;:::-;4202:22:27::2;4212:2;4216:7;4202:9;:22::i;7447:261:4:-:0;7567:21;;7512:15;;-1:-1:-1;;;7567:21:4;;;;14485:13;;;7606:57;;;;-1:-1:-1;14712:15:4;14701:26;;;;7634:29;7606:57;7605:96;;7696:1;7699;7605:96;;;7668:13;;-1:-1:-1;;;7668:13:4;;;;7683:8;7605:96;7598:103;;;;7447:261;;:::o;3487:144:9:-;3572:52;735:10:16;3605:8:9;3615;3572:18;:52::i;4630:233::-;4743:31;4756:4;4762:2;4766:7;4743:12;:31::i;:::-;4784:72;735:10:16;4832:4:9;4838:2;4842:7;4851:4;4784:33;:72::i;2529:255::-;2593:13;2618:22;2632:7;2618:13;:22::i;:::-;;2651:21;2675:10;:8;:10::i;:::-;2651:34;;2726:1;2708:7;2702:21;:25;:75;;;;;;;;;;;;;;;;;2744:7;2753:18;:7;:16;:18::i;:::-;2730:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2702:75;2695:82;2529:255;-1:-1:-1;;;2529:255:9:o;7160:229:4:-;7254:21;;7218:6;;-1:-1:-1;;;7254:21:4;;;;14485:13;;;7293:56;;;;-1:-1:-1;14712:15:4;14701:26;;;;7321:28;7292:90;;7369:13;;-1:-1:-1;;;7369:13:4;;;;7292:90;;;7353:13;;-1:-1:-1;;;7353:13:4;;;;7292:90;7285:97;;;7160:229;:::o;9101:344::-;9165:23;9194:21;:19;:21::i;:::-;-1:-1:-1;9164:51:4;-1:-1:-1;735:10:16;-1:-1:-1;;;;;9229:31:4;;;9225:175;;9343:46;;-1:-1:-1;;;9343:46:4;;735:10:16;9343:46:4;;;2260:51:30;2233:18;;9343:46:4;2114:203:30;9225:175:4;9409:29;:27;:29::i;6931:171::-;7044:20;;-1:-1:-1;;;;;7044:20:4;;;-1:-1:-1;;;7066:28:4;;;;;;6931:171::o;3665:267::-;3785:4;3781:104;;3834:40;;-1:-1:-1;;;3834:40:4;;;;;;;;;;;3781:104;3894:31;3911:4;3917:7;3894:16;:31::i;8676:128::-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;8768:29:4::1;:27;:29::i;6273:105:27:-:0;6319:13;6351:20;6344:27;;;;;:::i;3665:153:9:-;-1:-1:-1;;;;;3776:25:9;;;3753:4;3776:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3665:153::o;2790:219:4:-;2875:4;-1:-1:-1;;;;;;2898:64:4;;-1:-1:-1;;;2898:64:4;;:104;;;2966:36;2990:11;2966:23;:36::i;3165:103:0:-;3231:30;3242:4;735:10:16;3231::0;:30::i;3618:507:14:-;3345:5;-1:-1:-1;;;;;3765:26:14;;;-1:-1:-1;3761:173:14;;;3868:55;;-1:-1:-1;;;3868:55:14;;-1:-1:-1;;;;;13050:39:30;;3868:55:14;;;13032:58:30;13106:18;;;13099:34;;;13005:18;;3868:55:14;12859:280:30;3761:173:14;-1:-1:-1;;;;;3947:22:14;;3943:108;;3992:48;;-1:-1:-1;;;3992:48:14;;4037:1;3992:48;;;2260:51:30;2233:18;;3992:48:14;2114:203:30;3943:108:14;-1:-1:-1;4083:35:14;;;;;;;;;-1:-1:-1;;;;;4083:35:14;;;;;;-1:-1:-1;;;;;4083:35:14;;;;;;;;;;-1:-1:-1;;;4061:57:14;;;;:19;:57;3618:507::o;15957:241:9:-;16020:7;5470:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5470:16:9;;16082:88;;16128:31;;-1:-1:-1;;;16128:31:9;;;;;3383:25:30;;;3356:18;;16128:31:9;3237:177:30;14138:120:9;14218:33;14227:2;14231:7;14240:4;14246;14218:8;:33::i;11105:94:4:-;11170:22;11187:1;11190;11170:16;:22::i;:::-;11105:94::o;8507:795:9:-;8593:7;5470:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5470:16:9;;;;8704:18;;;8700:86;;8738:37;8755:4;8761;8767:7;8738:16;:37::i;:::-;-1:-1:-1;;;;;8830:18:9;;;8826:256;;8946:48;8963:1;8967:7;8984:1;8988:5;8946:8;:48::i;:::-;-1:-1:-1;;;;;9037:15:9;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9037:20:9;;;8826:256;-1:-1:-1;;;;;9096:16:9;;;9092:107;;-1:-1:-1;;;;;9156:13:9;;;;;;:9;:13;;;;;:18;;9173:1;9156:18;;;9092:107;9209:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9209:21:9;-1:-1:-1;;;;;9209:21:9;;;;;;;;;9246:27;;9209:16;;9246:27;;;;;;;9291:4;8507:795;-1:-1:-1;;;;8507:795:9:o;4192:136:0:-;3841:7;3867:12;;;:6;:12;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4296:25:::1;4307:4;4313:7;4296:10;:25::i;5294:245::-:0;-1:-1:-1;;;;;5387:34:0;;735:10:16;5387:34:0;5383:102;;5444:30;;-1:-1:-1;;;5444:30:0;;;;;;;;;;;5383:102;5495:37;5507:4;5513:18;5495:11;:37::i;2586:117:18:-;1597:16;:14;:16::i;:::-;2644:7:::1;:15:::0;;-1:-1:-1;;2644:15:18::1;::::0;;2674:22:::1;735:10:16::0;2683:12:18::1;2674:22;::::0;-1:-1:-1;;;;;2278:32:30;;;2260:51;;2248:2;2233:18;2674:22:18::1;;;;;;;2586:117::o:0;8330:288:4:-;8411:18;8469:19;:17;:19::i;:::-;8432:34;8450:15;8432:17;:34::i;:::-;:56;;;;:::i;:::-;8411:77;;8498:46;8522:8;8532:11;8498:23;:46::i;:::-;8559:52;;766:14:30;754:27;;736:46;;-1:-1:-1;;;;;8559:52:4;;;;;724:2:30;709:18;8559:52:4;;;;;;;8401:217;8330:288;:::o;10506:::-;10584:18;10642:26;10659:8;10642:16;:26::i;:::-;10605:34;10623:15;10605:17;:34::i;:::-;:63;;;;:::i;:::-;10584:84;;10678:39;10695:8;10705:11;10678:16;:39::i;:::-;10732:55;;;5804:14:30;5792:27;;;5774:46;;5856:27;;5851:2;5836:18;;5829:55;10732::4;;5747:18:30;10732:55:4;;;;;;;10574:220;10506:288;:::o;2339:115:18:-;1350:19;:17;:19::i;:::-;2398:7:::1;:14:::0;;-1:-1:-1;;2398:14:18::1;2408:4;2398:14;::::0;;2427:20:::1;2434:12;735:10:16::0;;656:96;1878:128:18;1796:7;;;;1939:61;;;1974:15;;-1:-1:-1;;;1974:15:18;;;;;;;;;;;10302:100:9;10369:26;10379:2;10383:7;10369:26;;;;;;;;;;;;:9;:26::i;15311:411::-;-1:-1:-1;;;;;15418:19:9;;15414:90;;15460:33;;-1:-1:-1;;;15460:33:9;;15490:1;15460:33;;;2260:51:30;2233:18;;15460:33:9;2114:203:30;15414:90:9;-1:-1:-1;;;;;15517:22:9;;15513:91;;15562:31;;-1:-1:-1;;;15562:31:9;;-1:-1:-1;;;;;2278:32:30;;15562:31:9;;;2260:51:30;2233:18;;15562:31:9;2114:203:30;15513:91:9;-1:-1:-1;;;;;15613:25:9;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15613:46:9;;;;;;;;;;15674:41;;540::30;;;15674::9;;513:18:30;15674:41:9;;;;;;;15311:411;;;:::o;994:926:13:-;-1:-1:-1;;;;;1174:14:13;;;:18;1170:744;;1212:67;;-1:-1:-1;;;1212:67:13;;-1:-1:-1;;;;;1212:36:13;;;;;:67;;1249:8;;1259:4;;1265:7;;1274:4;;1212:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1212:67:13;;;;;;;;-1:-1:-1;;1212:67:13;;;;;;;;;;;;:::i;:::-;;;1208:696;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1569:6;:13;1586:1;1569:18;1565:325;;1673:39;;-1:-1:-1;;;1673:39:13;;-1:-1:-1;;;;;2278:32:30;;1673:39:13;;;2260:51:30;2233:18;;1673:39:13;2114:203:30;1565:325:13;1842:6;1836:13;1829:4;1821:6;1817:17;1810:40;1208:696;-1:-1:-1;;;;;;1326:51:13;;-1:-1:-1;;;1326:51:13;1322:182;;1446:39;;-1:-1:-1;;;1446:39:13;;-1:-1:-1;;;;;2278:32:30;;1446:39:13;;;2260:51:30;2233:18;;1446:39:13;2114:203:30;1322:182:13;1280:238;1208:696;994:926;;;;;:::o;1251:634:21:-;1307:13;1356:14;1373:17;1384:5;1373:10;:17::i;:::-;1393:1;1373:21;1356:38;;1408:20;1442:6;1431:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1431:18:21;-1:-1:-1;1408:41:21;-1:-1:-1;1538:30:21;;;1554:4;1538:30;1595:247;-1:-1:-1;;1626:5:21;-1:-1:-1;;;1725:2:21;1714:14;;1709:32;1626:5;1696:46;1786:2;1777:11;;;-1:-1:-1;1806:21:21;1595:247;1806:21;-1:-1:-1;1862:6:21;1251:634;-1:-1:-1;;;1251:634:21:o;9573:474:4:-;9640:16;9658:15;9677:21;:19;:21::i;:::-;9639:59;;;;9713:24;9728:8;14485:13;;;;;14399:106;9713:24;9712:25;:58;;;-1:-1:-1;14712:15:4;14701:26;;;;9741:29;9712:58;9708:144;;;9793:48;;-1:-1:-1;;;9793:48:4;;766:14:30;754:27;;9793:48:4;;;736:46:30;709:18;;9793:48:4;592:196:30;9708:144:4;9861:47;2232:4:0;9893:14:4;6846:20;;-1:-1:-1;;;;;6846:20:4;;6767:106;9893:14;9861:11;:47::i;:::-;-1:-1:-1;9918:40:4;2232:4:0;9949:8:4;9918:10;:40::i;:::-;-1:-1:-1;;9975:20:4;9968:27;;-1:-1:-1;;;;;;10005:35:4;;;-1:-1:-1;9573:474:4:o;4608:138:0:-;3841:7;3867:12;;;:6;:12;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4713:26:::1;4725:4;4731:7;4713:11;:26::i;8932:111:4:-:0;8998:38;9030:1;9034;8998:23;:38::i;2531:202:0:-;2616:4;-1:-1:-1;;;;;;2639:47:0;;-1:-1:-1;;;2639:47:0;;:87;;;2690:36;2714:11;2690:23;:36::i;3398:197::-;3486:22;3494:4;3500:7;3486;:22::i;:::-;3481:108;;3531:47;;-1:-1:-1;;;3531:47:0;;-1:-1:-1;;;;;3962:32:30;;3531:47:0;;;3944:51:30;4011:18;;;4004:34;;;3917:18;;3531:47:0;3770:274:30;14440:662:9;14600:9;:31;;;-1:-1:-1;;;;;;14613:18:9;;;;14600:31;14596:460;;;14647:13;14663:22;14677:7;14663:13;:22::i;:::-;14647:38;-1:-1:-1;;;;;;14813:18:9;;;;;;:35;;;14844:4;-1:-1:-1;;;;;14835:13:9;:5;-1:-1:-1;;;;;14835:13:9;;;14813:35;:69;;;;;14853:29;14870:5;14877:4;14853:16;:29::i;:::-;14852:30;14813:69;14809:142;;;14909:27;;-1:-1:-1;;;14909:27:9;;-1:-1:-1;;;;;2278:32:30;;14909:27:9;;;2260:51:30;2233:18;;14909:27:9;2114:203:30;14809:142:9;14969:9;14965:81;;;15023:7;15019:2;-1:-1:-1;;;;;15003:28:9;15012:5;-1:-1:-1;;;;;15003:28:9;;;;;;;;;;;14965:81;14633:423;14596:460;-1:-1:-1;;15066:24:9;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15066:29:9;-1:-1:-1;;;;;15066:29:9;;;;;;;;;;14440:662::o;13670:585:4:-;13772:21;;-1:-1:-1;;;13772:21:4;;;;14485:13;;13804:365;;14712:15;14701:26;;;;13851:308;;;13969:13;;13953;:29;;-1:-1:-1;;;;;13953:29:4;-1:-1:-1;;;13969:13:4;;;;;-1:-1:-1;;;13953:29:4;;;;;;;13851:308;;;14111:33;;;;;;;13851:308;-1:-1:-1;14179:13:4;:24;;-1:-1:-1;;;;;14213:35:4;-1:-1:-1;;;14179:24:4;;;;;-1:-1:-1;;;;;14213:35:4;;-1:-1:-1;;;14213:35:4;;;;;;;;;;;;;;13670:585::o;6751:368:9:-;6863:38;6877:5;6884:7;6893;6863:13;:38::i;:::-;6858:255;;-1:-1:-1;;;;;6921:19:9;;6917:186;;6967:31;;-1:-1:-1;;;6967:31:9;;;;;3383:25:30;;;3356:18;;6967:31:9;3237:177:30;6917:186:9;7044:44;;-1:-1:-1;;;7044:44:9;;-1:-1:-1;;;;;3962:32:30;;7044:44:9;;;3944:51:30;4011:18;;;4004:34;;;3917:18;;7044:44:9;3770:274:30;5611:370:4;5697:4;5717;5713:214;;5789:1;5763:14;6846:20;;-1:-1:-1;;;;;6846:20:4;;6767:106;5763:14;-1:-1:-1;;;;;5763:28:4;;5759:114;;5818:40;;-1:-1:-1;;;5818:40:4;;;;;;;;;;;5759:114;5886:20;:30;;-1:-1:-1;;;;;;5886:30:4;-1:-1:-1;;;;;5886:30:4;;;;;5713:214;5943:31;5960:4;5966:7;5943:16;:31::i;6021:271::-;6108:4;6128:26;;:55;;;;-1:-1:-1;6846:20:4;;-1:-1:-1;;;;;6158:25:4;;;6846:20;;6158:25;6128:55;6124:113;;;6206:20;6199:27;;-1:-1:-1;;;;;;6199:27:4;;;6124:113;6253:32;6271:4;6277:7;6253:17;:32::i;2078:126:18:-;1796:7;;;;2136:62;;2172:15;;-1:-1:-1;;;2172:15:18;;;;;;;;;;;14293:213:25;14349:6;14379:16;14371:24;;14367:103;;;14418:41;;-1:-1:-1;;;14418:41:25;;14449:2;14418:41;;;14543:36:30;14595:18;;;14588:34;;;14516:18;;14418:41:25;14362:266:30;14367:103:25;-1:-1:-1;14493:5:25;14293:213::o;12989:525:4:-;13081:18;13103:21;:19;:21::i;:::-;13135:20;:31;;13176:42;;;-1:-1:-1;;;13176:42:4;-1:-1:-1;;;;;;13176:42:4;;;-1:-1:-1;;;;;13135:31:4;;13176:42;;;;13078:46;-1:-1:-1;13330:27:4;;-1:-1:-1;13078:46:4;14485:13;;;;;14399:106;13330:27;13326:182;;;13467:30;;;;;;;13068:446;12989:525;;:::o;11546:1249::-;11620:6;11638:19;11660;:17;:19::i;:::-;11638:41;;12609:12;12598:23;;:8;:23;;;:190;;12765:23;12780:8;12765:12;:23;:::i;:::-;12598:190;;;12647:51;;;;7861:6;12647:8;:51::i;10623:207:9:-;10717:18;10723:2;10727:7;10717:5;:18::i;:::-;10745:78;735:10:16;10801:1:9;10805:2;10809:7;10818:4;10745:33;:78::i;29471:916:24:-;29524:7;;-1:-1:-1;;;29599:17:24;;29595:103;;-1:-1:-1;;;29636:17:24;;;-1:-1:-1;29681:2:24;29671:12;29595:103;29724:8;29715:5;:17;29711:103;;29761:8;29752:17;;;-1:-1:-1;29797:2:24;29787:12;29711:103;29840:8;29831:5;:17;29827:103;;29877:8;29868:17;;;-1:-1:-1;29913:2:24;29903:12;29827:103;29956:7;29947:5;:16;29943:100;;29992:7;29983:16;;;-1:-1:-1;30027:1:24;30017:11;29943:100;30069:7;30060:5;:16;30056:100;;30105:7;30096:16;;;-1:-1:-1;30140:1:24;30130:11;30056:100;30182:7;30173:5;:16;30169:100;;30218:7;30209:16;;;-1:-1:-1;30253:1:24;30243:11;30169:100;30295:7;30286:5;:16;30282:66;;30332:1;30322:11;30374:6;29471:916;-1:-1:-1;;29471:916:24:o;2082:213:14:-;2184:4;-1:-1:-1;;;;;;2207:41:14;;-1:-1:-1;;;2207:41:14;;:81;;;2252:36;2276:11;2252:23;:36::i;6047:272:9:-;6150:4;-1:-1:-1;;;;;6185:21:9;;;;;;:127;;;6232:7;-1:-1:-1;;;;;6223:16:9;:5;-1:-1:-1;;;;;6223:16:9;;:52;;;;6243:32;6260:5;6267:7;6243:16;:32::i;:::-;6223:88;;;-1:-1:-1;5679:7:9;5705:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6279:32:9;;;5705:24;;6279:32;6223:88;6166:146;6047:272;-1:-1:-1;;;;6047:272:9:o;6145:316:0:-;6222:4;6243:22;6251:4;6257:7;6243;:22::i;:::-;6238:217;;6281:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6281:29:0;;;;;;;;;:36;;-1:-1:-1;;6281:36:0;6313:4;6281:36;;;6363:12;735:10:16;;656:96;6363:12:0;-1:-1:-1;;;;;6336:40:0;6354:7;-1:-1:-1;;;;;6336:40:0;6348:4;6336:40;;;;;;;;;;-1:-1:-1;6397:4:0;6390:11;;6238:217;-1:-1:-1;6439:5:0;6432:12;;6698:317;6776:4;6796:22;6804:4;6810:7;6796;:22::i;:::-;6792:217;;;6866:5;6834:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6834:29:0;;;;;;;;;;:37;;-1:-1:-1;;6834:37:0;;;6890:40;735:10:16;;6834:12:0;;6890:40;;6866:5;6890:40;-1:-1:-1;6951:4:0;6944:11;;5633:111:24;5691:7;5328:5;;;5725;;;5327:36;5322:42;;5717:20;5087:294;9624:327:9;-1:-1:-1;;;;;9691:16:9;;9687:87;;9730:33;;-1:-1:-1;;;9730:33:9;;9760:1;9730:33;;;2260:51:30;2233:18;;9730:33:9;2114:203:30;9687:87:9;9783:21;9807:32;9815:2;9819:7;9836:1;9807:7;:32::i;:::-;9783:56;-1:-1:-1;;;;;;9853:27:9;;;9849:96;;9903:31;;-1:-1:-1;;;9903:31:9;;9931:1;9903:31;;;2260:51:30;2233:18;;9903:31:9;2114:203:30;1527:300:9;1629:4;-1:-1:-1;;;;;;1664:40:9;;-1:-1:-1;;;1664:40:9;;:104;;-1:-1:-1;;;;;;;1720:48:9;;-1:-1:-1;;;1720:48:9;1664:104;:156;;;-1:-1:-1;;;;;;;;;;829:40:22;;;1784:36:9;730:146:22;14:131:30;-1:-1:-1;;;;;;88:32:30;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;793:173::-;861:20;;-1:-1:-1;;;;;910:31:30;;900:42;;890:70;;956:1;953;946:12;890:70;793:173;;;:::o;971:366::-;1038:6;1046;1099:2;1087:9;1078:7;1074:23;1070:32;1067:52;;;1115:1;1112;1105:12;1067:52;1138:29;1157:9;1138:29;:::i;:::-;1128:39;;1217:2;1206:9;1202:18;1189:32;-1:-1:-1;;;;;1254:5:30;1250:38;1243:5;1240:49;1230:77;;1303:1;1300;1293:12;1230:77;1326:5;1316:15;;;971:366;;;;;:::o;1342:300::-;1395:3;1433:5;1427:12;1460:6;1455:3;1448:19;1516:6;1509:4;1502:5;1498:16;1491:4;1486:3;1482:14;1476:47;1568:1;1561:4;1552:6;1547:3;1543:16;1539:27;1532:38;1631:4;1624:2;1620:7;1615:2;1607:6;1603:15;1599:29;1594:3;1590:39;1586:50;1579:57;;;1342:300;;;;:::o;1647:231::-;1796:2;1785:9;1778:21;1759:4;1816:56;1868:2;1857:9;1853:18;1845:6;1816:56;:::i;1883:226::-;1942:6;1995:2;1983:9;1974:7;1970:23;1966:32;1963:52;;;2011:1;2008;2001:12;1963:52;-1:-1:-1;2056:23:30;;1883:226;-1:-1:-1;1883:226:30:o;2322:300::-;2390:6;2398;2451:2;2439:9;2430:7;2426:23;2422:32;2419:52;;;2467:1;2464;2457:12;2419:52;2490:29;2509:9;2490:29;:::i;:::-;2480:39;2588:2;2573:18;;;;2560:32;;-1:-1:-1;;;2322:300:30:o;2627:374::-;2704:6;2712;2720;2773:2;2761:9;2752:7;2748:23;2744:32;2741:52;;;2789:1;2786;2779:12;2741:52;2812:29;2831:9;2812:29;:::i;:::-;2802:39;;2860:38;2894:2;2883:9;2879:18;2860:38;:::i;:::-;2627:374;;2850:48;;-1:-1:-1;;;2967:2:30;2952:18;;;;2939:32;;2627:374::o;3419:346::-;3487:6;3495;3548:2;3536:9;3527:7;3523:23;3519:32;3516:52;;;3564:1;3561;3554:12;3516:52;-1:-1:-1;;3609:23:30;;;3729:2;3714:18;;;3701:32;;-1:-1:-1;3419:346:30:o;4049:300::-;4117:6;4125;4178:2;4166:9;4157:7;4153:23;4149:32;4146:52;;;4194:1;4191;4184:12;4146:52;4239:23;;;-1:-1:-1;4305:38:30;4339:2;4324:18;;4305:38;:::i;:::-;4295:48;;4049:300;;;;;:::o;4354:587::-;4425:6;4433;4486:2;4474:9;4465:7;4461:23;4457:32;4454:52;;;4502:1;4499;4492:12;4454:52;4542:9;4529:23;4575:18;4567:6;4564:30;4561:50;;;4607:1;4604;4597:12;4561:50;4630:22;;4683:4;4675:13;;4671:27;-1:-1:-1;4661:55:30;;4712:1;4709;4702:12;4661:55;4752:2;4739:16;4778:18;4770:6;4767:30;4764:50;;;4810:1;4807;4800:12;4764:50;4855:7;4850:2;4841:6;4837:2;4833:15;4829:24;4826:37;4823:57;;;4876:1;4873;4866:12;4823:57;4907:2;4899:11;;;;;4929:6;;-1:-1:-1;4354:587:30;-1:-1:-1;;;4354:587:30:o;4946:186::-;5005:6;5058:2;5046:9;5037:7;5033:23;5029:32;5026:52;;;5074:1;5071;5064:12;5026:52;5097:29;5116:9;5097:29;:::i;5137:280::-;5195:6;5248:2;5236:9;5227:7;5223:23;5219:32;5216:52;;;5264:1;5261;5254:12;5216:52;5303:9;5290:23;5353:14;5346:5;5342:26;5335:5;5332:37;5322:65;;5383:1;5380;5373:12;5895:347;5960:6;5968;6021:2;6009:9;6000:7;5996:23;5992:32;5989:52;;;6037:1;6034;6027:12;5989:52;6060:29;6079:9;6060:29;:::i;:::-;6050:39;;6139:2;6128:9;6124:18;6111:32;6186:5;6179:13;6172:21;6165:5;6162:32;6152:60;;6208:1;6205;6198:12;6247:127;6308:10;6303:3;6299:20;6296:1;6289:31;6339:4;6336:1;6329:15;6363:4;6360:1;6353:15;6379:1207;6474:6;6482;6490;6498;6551:3;6539:9;6530:7;6526:23;6522:33;6519:53;;;6568:1;6565;6558:12;6519:53;6591:29;6610:9;6591:29;:::i;:::-;6581:39;;6639:38;6673:2;6662:9;6658:18;6639:38;:::i;:::-;6629:48;-1:-1:-1;6746:2:30;6731:18;;6718:32;;-1:-1:-1;6825:2:30;6810:18;;6797:32;6852:18;6841:30;;6838:50;;;6884:1;6881;6874:12;6838:50;6907:22;;6960:4;6952:13;;6948:27;-1:-1:-1;6938:55:30;;6989:1;6986;6979:12;6938:55;7029:2;7016:16;7055:18;7047:6;7044:30;7041:56;;;7077:18;;:::i;:::-;7126:2;7120:9;7218:2;7180:17;;-1:-1:-1;;7176:31:30;;;7209:2;7172:40;7168:54;7156:67;;7253:18;7238:34;;7274:22;;;7235:62;7232:88;;;7300:18;;:::i;:::-;7336:2;7329:22;7360;;;7401:15;;;7418:2;7397:24;7394:37;-1:-1:-1;7391:57:30;;;7444:1;7441;7434:12;7391:57;7500:6;7495:2;7491;7487:11;7482:2;7474:6;7470:15;7457:50;7553:1;7548:2;7539:6;7531;7527:19;7523:28;7516:39;7574:6;7564:16;;;;;6379:1207;;;;;;;:::o;7889:260::-;7957:6;7965;8018:2;8006:9;7997:7;7993:23;7989:32;7986:52;;;8034:1;8031;8024:12;7986:52;8057:29;8076:9;8057:29;:::i;:::-;8047:39;;8105:38;8139:2;8128:9;8124:18;8105:38;:::i;8367:380::-;8446:1;8442:12;;;;8489;;;8510:61;;8564:4;8556:6;8552:17;8542:27;;8510:61;8617:2;8609:6;8606:14;8586:18;8583:38;8580:161;;8663:10;8658:3;8654:20;8651:1;8644:31;8698:4;8695:1;8688:15;8726:4;8723:1;8716:15;8580:161;;8367:380;;;:::o;9128:127::-;9189:10;9184:3;9180:20;9177:1;9170:31;9220:4;9217:1;9210:15;9244:4;9241:1;9234:15;9260:168;9333:9;;;9364;;9381:15;;;9375:22;;9361:37;9351:71;;9402:18;;:::i;9565:217::-;9605:1;9631;9621:132;;9675:10;9670:3;9666:20;9663:1;9656:31;9710:4;9707:1;9700:15;9738:4;9735:1;9728:15;9621:132;-1:-1:-1;9767:9:30;;9565:217::o;9913:518::-;10015:2;10010:3;10007:11;10004:421;;;10051:5;10048:1;10041:16;10095:4;10092:1;10082:18;10165:2;10153:10;10149:19;10146:1;10142:27;10136:4;10132:38;10201:4;10189:10;10186:20;10183:47;;;-1:-1:-1;10224:4:30;10183:47;10279:2;10274:3;10270:12;10267:1;10263:20;10257:4;10253:31;10243:41;;10334:81;10352:2;10345:5;10342:13;10334:81;;;10411:1;10397:16;;10378:1;10367:13;10334:81;;10607:1198;10731:18;10726:3;10723:27;10720:53;;;10753:18;;:::i;:::-;10782:94;10872:3;10832:38;10864:4;10858:11;10832:38;:::i;:::-;10826:4;10782:94;:::i;:::-;10902:1;10927:2;10922:3;10919:11;10944:1;10939:608;;;;11591:1;11608:3;11605:93;;;-1:-1:-1;11664:19:30;;;11651:33;11605:93;-1:-1:-1;;10564:1:30;10560:11;;;10556:24;10552:29;10542:40;10588:1;10584:11;;;10539:57;11711:78;;10912:887;;10939:608;9860:1;9853:14;;;9897:4;9884:18;;-1:-1:-1;;10975:17:30;;;11090:229;11104:7;11101:1;11098:14;11090:229;;;11193:19;;;11180:33;11165:49;;11300:4;11285:20;;;;11253:1;11241:14;;;;11120:12;11090:229;;;11094:3;11347;11338:7;11335:16;11332:159;;;11471:1;11467:6;11461:3;11455;11452:1;11448:11;11444:21;11440:34;11436:39;11423:9;11418:3;11414:19;11401:33;11397:79;11389:6;11382:95;11332:159;;;11534:1;11528:3;11525:1;11521:11;11517:19;11511:4;11504:33;10912:887;;10607:1198;;;:::o;11810:555::-;12017:2;12006:9;11999:21;11980:4;12043:56;12095:2;12084:9;12080:18;12072:6;12043:56;:::i;:::-;12147:9;12139:6;12135:22;12130:2;12119:9;12115:18;12108:50;12182:6;12174;12167:22;12236:6;12228;12223:2;12215:6;12211:15;12198:45;12289:1;12284:2;12275:6;12267;12263:19;12259:28;12252:39;12356:2;12349;12345:7;12340:2;12332:6;12328:15;12324:29;12316:6;12312:42;12308:51;12300:59;;;11810:555;;;;;;:::o;12370:212::-;12412:3;12450:5;12444:12;12494:6;12487:4;12480:5;12476:16;12471:3;12465:36;12556:1;12520:16;;12545:13;;;-1:-1:-1;12520:16:30;;12370:212;-1:-1:-1;12370:212:30:o;12587:267::-;12766:3;12791:57;12817:30;12843:3;12835:6;12817:30;:::i;:::-;12809:6;12791:57;:::i;13144:179::-;13243:14;13212:22;;;13236;;;13208:51;;13271:23;;13268:49;;;13297:18;;:::i;13328:496::-;-1:-1:-1;;;;;13559:32:30;;;13541:51;;13628:32;;13623:2;13608:18;;13601:60;13692:2;13677:18;;13670:34;;;13740:3;13735:2;13720:18;;13713:31;;;-1:-1:-1;;13761:57:30;;13798:19;;13790:6;13761:57;:::i;:::-;13753:65;13328:496;-1:-1:-1;;;;;;13328:496:30:o;13829:249::-;13898:6;13951:2;13939:9;13930:7;13926:23;13922:32;13919:52;;;13967:1;13964;13957:12;13919:52;13999:9;13993:16;14018:30;14042:5;14018:30;:::i;14633:182::-;14734:14;14727:22;;;14703;;;14699:51;;14762:24;;14759:50;;;14789:18;;:::i"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MINTER_ROLE()":"d5391393","acceptDefaultAdminTransfer()":"cefc1429","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","beginDefaultAdminTransfer(address)":"634e93da","cancelDefaultAdminTransfer()":"d602b9fd","changeDefaultAdminDelay(uint48)":"649a5ec7","contractURI()":"e8a3d485","defaultAdmin()":"84ef8ffc","defaultAdminDelay()":"cc8463c8","defaultAdminDelayIncreaseWait()":"022d63fb","getApproved(uint256)":"081812fc","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","pause()":"8456cb59","paused()":"5c975abb","pendingDefaultAdmin()":"cf6eefb7","pendingDefaultAdminDelay()":"a1eda53c","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rollbackDefaultAdminDelay()":"0aa6220b","royaltyInfo(uint256,uint256)":"2a55205a","safeMint(address,uint256)":"a1448194","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","setBaseURI(string)":"55f804b3","setContractURI(string)":"938e3d7b","setRoyaltyInfo(address,uint96)":"02fa7c47","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd","unpause()":"3f4ba83a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"contractMetadataURI_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"royaltyReceiver_\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"royaltyFeeBasisPoints_\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"initialAdmin_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialMinter_\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"defaultAdminDelay_\",\"type\":\"uint48\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"name\":\"AccessControlEnforcedDefaultAdminDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessControlEnforcedDefaultAdminRules\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"}],\"name\":\"AccessControlInvalidDefaultAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"ERC2981InvalidDefaultRoyalty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC2981InvalidDefaultRoyaltyReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"ERC2981InvalidTokenRoyalty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC2981InvalidTokenRoyaltyReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"previousURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newURI\",\"type\":\"string\"}],\"name\":\"BaseURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"previousURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newURI\",\"type\":\"string\"}],\"name\":\"ContractURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminDelayChangeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminDelayChangeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminTransferCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminTransferScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"feeBasisPoints\",\"type\":\"uint96\"}],\"name\":\"DefaultRoyaltyUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"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\":\"acceptDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"beginDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"}],\"name\":\"changeDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelayIncreaseWait\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollbackDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"}],\"name\":\"setBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractMetadataURI_\",\"type\":\"string\"}],\"name\":\"setContractURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"feeBasisPoints\",\"type\":\"uint96\"}],\"name\":\"setRoyaltyInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Does not include staking logic \\u2014 staking is handled by TricksforBoosterStaking.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlEnforcedDefaultAdminDelay(uint48)\":[{\"details\":\"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\"}],\"AccessControlEnforcedDefaultAdminRules()\":[{\"details\":\"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\"}],\"AccessControlInvalidDefaultAdmin(address)\":[{\"details\":\"The new default admin is not a valid default admin.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"ERC2981InvalidDefaultRoyalty(uint256,uint256)\":[{\"details\":\"The default royalty set is invalid (eg. (numerator / denominator) >= 1).\"}],\"ERC2981InvalidDefaultRoyaltyReceiver(address)\":[{\"details\":\"The default royalty receiver is invalid.\"}],\"ERC2981InvalidTokenRoyalty(uint256,uint256,uint256)\":[{\"details\":\"The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1).\"}],\"ERC2981InvalidTokenRoyaltyReceiver(uint256,address)\":[{\"details\":\"The royalty receiver for `tokenId` is invalid.\"}],\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in a uint of `bits` size.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"DefaultAdminDelayChangeCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\"},\"DefaultAdminDelayChangeScheduled(uint48,uint48)\":{\"details\":\"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed.\"},\"DefaultAdminTransferCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\"},\"DefaultAdminTransferScheduled(address,uint48)\":{\"details\":\"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"acceptDefaultAdminTransfer()\":{\"details\":\"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\"},\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"beginDefaultAdminTransfer(address)\":{\"details\":\"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event.\"},\"cancelDefaultAdminTransfer()\":{\"details\":\"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event.\"},\"changeDefaultAdminDelay(uint48)\":{\"details\":\"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event.\"},\"constructor\":{\"params\":{\"baseURI_\":\"Base URI for token metadata (appended with tokenId)\",\"contractMetadataURI_\":\"URI for OpenSea collection-level metadata\",\"defaultAdminDelay_\":\"Delay in seconds for default-admin transfers\",\"initialAdmin_\":\"Initial default administrator\",\"initialMinter_\":\"Initial account authorized to mint\",\"name_\":\"ERC-721 collection name\",\"royaltyFeeBasisPoints_\":\"Royalty fee in basis points (10 000 = 100%)\",\"royaltyReceiver_\":\"Address that receives royalty payments\",\"symbol_\":\"ERC-721 collection symbol\"}},\"defaultAdmin()\":{\"details\":\"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\"},\"defaultAdminDelay()\":{\"details\":\"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}.\"},\"defaultAdminDelayIncreaseWait()\":{\"details\":\"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"owner()\":{\"details\":\"Gets the address of the owner.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"pendingDefaultAdmin()\":{\"details\":\"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\"},\"pendingDefaultAdminDelay()\":{\"details\":\"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule.\"},\"renounceRole(bytes32,address)\":{\"details\":\"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role.\"},\"revokeRole(bytes32,address)\":{\"details\":\"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"rollbackDefaultAdminDelay()\":{\"details\":\"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers.\"},\"safeMint(address,uint256)\":{\"params\":{\"to\":\"Recipient address for the minted token.\",\"tokenId\":\"Token ID to mint. Must not already exist.\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"setBaseURI(string)\":{\"params\":{\"baseURI_\":\"New base URI string.\"}},\"setContractURI(string)\":{\"params\":{\"contractMetadataURI_\":\"New collection metadata URI.\"}},\"setRoyaltyInfo(address,uint96)\":{\"params\":{\"feeBasisPoints\":\"Royalty fee in basis points (10 000 = 100%).\",\"receiver\":\"Address that receives royalty payments.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"TricksforBoosterNFT\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddress()\":[{\"notice\":\"Zero address supplied where a non-zero address is required.\"}]},\"kind\":\"user\",\"methods\":{\"MINTER_ROLE()\":{\"notice\":\"Role that authorizes an account to call safeMint.\"},\"baseURI()\":{\"notice\":\"Returns the base URI used to construct token metadata URLs.\"},\"contractURI()\":{\"notice\":\"Returns the collection-level metadata URI (OpenSea extension).\"},\"pause()\":{\"notice\":\"Pauses minting. Does not affect transfers.\"},\"safeMint(address,uint256)\":{\"notice\":\"Mints a token with the given ID to the specified address. The caller must hold MINTER_ROLE. Reverts when paused.\"},\"setBaseURI(string)\":{\"notice\":\"Updates the base URI used to construct per-token metadata URIs.\"},\"setContractURI(string)\":{\"notice\":\"Updates the collection-level metadata URI (OpenSea contractURI extension).\"},\"setRoyaltyInfo(address,uint96)\":{\"notice\":\"Updates the default royalty receiver and fee for all tokens.\"},\"unpause()\":{\"notice\":\"Unpauses minting.\"}},\"notice\":\"ERC-721 NFT collection for Tricksfor Booster items. OpenSea-compatible: supports tokenURI, contractURI, and ERC-2981 royalties. Minting is role-gated (MINTER_ROLE) and can be paused by the default admin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TricksforBoosterNFT.sol\":\"TricksforBoosterNFT\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4686ec784d75f95beaf2bf5b5f26e5f946d4c864aaee9c3c62bdc18381f5e017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26710ca191913f3c9df542079c4a6dcff02968e92d4f7357daefef9fbe72a19c\",\"dweb:/ipfs/QmanHbeWuBbVEqXySHa1zhm2rExjYpChDBubBaJNTCa2JB\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x5e57537d20a1706f81517842eb09b48a564d5cfc15131537bef76d9c8c100938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c08027cac4185cca5bd35924409cb91aaa43a3fd5629d80c65edbab7c4ee2671\",\"dweb:/ipfs/QmYEhwh5mQZ5NqCaqUm2qLJ1NLcRpwEz87MM7bzXrtCfvD\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x5d8c755a8bfec7cb44cff075c206d642478ebc10c780494bc540cf90f3f25771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a18c2615920ab40a406d658dc7d9f0df0447eddf7c689b29720243a623fea72e\",\"dweb:/ipfs/QmXqCRrcx9A5MhBojvSEsiGhqKDnJjfVaJuF7by3YsKWwf\"]},\"@openzeppelin/contracts/interfaces/IERC2981.sol\":{\"keccak256\":\"0xafab0e6c71905303c47dd254168cb31efc91f0ae284cde609b0202f97f85469e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://824d05aec56eb82a2a3c28eece530dc0792d3a008b09d01444e57cf4aceb0445\",\"dweb:/ipfs/QmVvqmJ5UobuRU9Q4JMyXxBfzKs2cpjbWXMNpxX4binTX8\"]},\"@openzeppelin/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf6bb0dc431a9c50e25756412ec14cfcd4dc61dd40b8dc0e1b58ec09fce6d5564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb87fef7e8ed754b8600cd5d42e4f23128059006368ffd19e4d50cc166471ee5\",\"dweb:/ipfs/Qmc1vy1cevKreGUsG7S79gyhNvDtPnNz9qG47eYVHmMKLs\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0xf46268c37522320bb2119a5a394bc5c739a95c0c574c8d08e8c643f4d06e5c76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://517e4b295f35b9947c72ad7379a6089439ece7bb6f4a2ea0a159da13046c039e\",\"dweb:/ipfs/QmZXzkSfLUbvujig3zVbpDHykpHhqLpvQtdiN3B5j4TA3u\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0xc7efbc23214ad7dced8bf2249460f4bda114d57f6a0079f84040654280f455bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f5bd44efca8c8c0d74439e7b808d1f9c4af1df78f91fef8e8bbca8104645435\",\"dweb:/ipfs/Qmb42XSd8MKsEitp42sZkSFGqDRigk6QgGXtiJyJqUZJJ6\"]},\"@openzeppelin/contracts/token/common/ERC2981.sol\":{\"keccak256\":\"0xa33062c6e0675a74a27b06a4ae4c6ad4d3b7219e27d9c146a4ac57295096d393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://777543d88013fdd0ee7f47ac619fb13a1993bb667675d8816fde024f73cfbf2d\",\"dweb:/ipfs/QmfDS9uL1XZ2oUe1PH8eRCRyu3Hf98cK8ksGf4Ww7kg5zv\"]},\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"contracts/TricksforBoosterNFT.sol\":{\"keccak256\":\"0xe7b1cd6fa5ee826a82886d54569dd7854bec75f87f106f22f3916c9b9fca2d00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50dacb0d084ddf99e5aaba291ea16c86cc625424997e0c0cf31fc203548ae3e4\",\"dweb:/ipfs/QmZdeLwbFpp4STJxq9hdhwSR3oKT4swV8mht4fkiUHLhT4\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":1630,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":1632,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":1636,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":1640,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":1644,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":1650,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":2829,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_defaultRoyaltyInfo","offset":0,"slot":"6","type":"t_struct(RoyaltyInfo)2826_storage"},{"astId":2834,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_tokenRoyaltyInfo","offset":0,"slot":"7","type":"t_mapping(t_uint256,t_struct(RoyaltyInfo)2826_storage)"},{"astId":26,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_roles","offset":0,"slot":"8","type":"t_mapping(t_bytes32,t_struct(RoleData)21_storage)"},{"astId":636,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_pendingDefaultAdmin","offset":0,"slot":"9","type":"t_address"},{"astId":638,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_pendingDefaultAdminSchedule","offset":20,"slot":"9","type":"t_uint48"},{"astId":640,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_currentDelay","offset":26,"slot":"9","type":"t_uint48"},{"astId":642,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_currentDefaultAdmin","offset":0,"slot":"10","type":"t_address"},{"astId":644,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_pendingDelay","offset":20,"slot":"10","type":"t_uint48"},{"astId":646,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_pendingDelaySchedule","offset":26,"slot":"10","type":"t_uint48"},{"astId":3968,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_paused","offset":0,"slot":"11","type":"t_bool"},{"astId":9460,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_baseTokenURI","offset":0,"slot":"12","type":"t_string_storage"},{"astId":9462,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_contractMetadataURI","offset":0,"slot":"13","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_struct(RoleData)21_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct AccessControl.RoleData)","numberOfBytes":"32","value":"t_struct(RoleData)21_storage"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_struct(RoyaltyInfo)2826_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct ERC2981.RoyaltyInfo)","numberOfBytes":"32","value":"t_struct(RoyaltyInfo)2826_storage"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(RoleData)21_storage":{"encoding":"inplace","label":"struct AccessControl.RoleData","members":[{"astId":18,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"hasRole","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":20,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"adminRole","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(RoyaltyInfo)2826_storage":{"encoding":"inplace","label":"struct ERC2981.RoyaltyInfo","members":[{"astId":2823,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"receiver","offset":0,"slot":"0","type":"t_address"},{"astId":2825,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"royaltyFraction","offset":20,"slot":"0","type":"t_uint96"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint48":{"encoding":"inplace","label":"uint48","numberOfBytes":"6"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"errors":{"ZeroAddress()":[{"notice":"Zero address supplied where a non-zero address is required."}]},"kind":"user","methods":{"MINTER_ROLE()":{"notice":"Role that authorizes an account to call safeMint."},"baseURI()":{"notice":"Returns the base URI used to construct token metadata URLs."},"contractURI()":{"notice":"Returns the collection-level metadata URI (OpenSea extension)."},"pause()":{"notice":"Pauses minting. Does not affect transfers."},"safeMint(address,uint256)":{"notice":"Mints a token with the given ID to the specified address. The caller must hold MINTER_ROLE. Reverts when paused."},"setBaseURI(string)":{"notice":"Updates the base URI used to construct per-token metadata URIs."},"setContractURI(string)":{"notice":"Updates the collection-level metadata URI (OpenSea contractURI extension)."},"setRoyaltyInfo(address,uint96)":{"notice":"Updates the default royalty receiver and fee for all tokens."},"unpause()":{"notice":"Unpauses minting."}},"notice":"ERC-721 NFT collection for Tricksfor Booster items. OpenSea-compatible: supports tokenURI, contractURI, and ERC-2981 royalties. Minting is role-gated (MINTER_ROLE) and can be paused by the default admin.","version":1}}},"contracts/TricksforBoosterStaking.sol":{"TricksforBoosterStaking":{"abi":[{"inputs":[{"internalType":"address","name":"nftContract_","type":"address"},{"internalType":"address","name":"initialOwner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"InvalidEmergencyRecipient","type":"error"},{"inputs":[],"name":"NotOriginalStaker","type":"error"},{"inputs":[],"name":"NotTokenOwner","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"TokenAlreadyStaked","type":"error"},{"inputs":[],"name":"TokenIsTracked","type":"error"},{"inputs":[],"name":"TokenNotHeld","type":"error"},{"inputs":[],"name":"TokenNotStaked","type":"error"},{"inputs":[],"name":"UnsupportedNFTContract","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"originalStaker","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"withdrawnAt","type":"uint256"}],"name":"EmergencyWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakedAt","type":"uint256"}],"name":"TokenStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unstakedAt","type":"uint256"}],"name":"TokenUnstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rescuedAt","type":"uint256"}],"name":"UntrackedTokenRescued","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getWalletStakedTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"isStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftContract","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueUntrackedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stakedAtOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stakedOwnerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Pause gates new staking only. Unstaking is always available so players can always recover their assets. emergencyWithdraw is an explicit, named, and event-emitting admin path — it is not hidden.","errors":{"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}]},"events":{"EmergencyWithdrawn(address,uint256,address,uint256)":{"params":{"originalStaker":"The wallet that originally staked the token.","recipient":"The address that received the token.","tokenId":"The affected NFT token ID.","withdrawnAt":"Block timestamp at the moment of the withdrawal."}},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"TokenStaked(address,uint256,uint256)":{"params":{"stakedAt":"Block timestamp at the moment of staking.","staker":"The wallet address that owns and staked the token.","tokenId":"The staked NFT token ID."}},"TokenUnstaked(address,uint256,uint256)":{"params":{"staker":"The wallet address that originally staked (and receives back) the token.","tokenId":"The unstaked NFT token ID.","unstakedAt":"Block timestamp at the moment of unstaking."}},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"constructor":{"params":{"initialOwner_":"Initial contract owner. Mainnet deployments should use a multisig.","nftContract_":"Address of the TricksforBoosterNFT contract."}},"emergencyWithdraw(uint256,address)":{"params":{"recipient":"The address to send the token to.","tokenId":"The token ID to withdraw."}},"getWalletStakedTokens(address)":{"details":"Ordering is not guaranteed. Tokens are stored in an array with swap-and-pop removal: when a token is unstaked or emergency-withdrawn, the last element in the array takes its position. Do not rely on index stability across state-changing transactions.","params":{"wallet":"The address to query."}},"isStaked(uint256)":{"params":{"tokenId":"The token ID to query."}},"onERC721Received(address,address,uint256,bytes)":{"params":{"from":"The address that previously owned the token (recorded as staker).","tokenId":"The token ID being transferred."},"returns":{"_0":"The ERC-721 receiver magic value confirming acceptance."}},"owner()":{"details":"Returns the address of the current owner."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"rescueUntrackedToken(uint256,address)":{"params":{"recipient":"The non-zero address that receives the recovered token.","tokenId":"The untracked token held by this contract."}},"stake(uint256)":{"params":{"tokenId":"The token ID to stake."}},"stakedAtOf(uint256)":{"params":{"tokenId":"The token ID to query."}},"stakedOwnerOf(uint256)":{"params":{"tokenId":"The token ID to query."}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"unstake(uint256)":{"params":{"tokenId":"The token ID to unstake."}}},"stateVariables":{"_stakedAt":{"details":"Maps tokenId → block.timestamp at which the token was staked."},"_stakedBy":{"details":"Maps tokenId → original staker address. Zero address means not staked."},"_walletTokenIds":{"details":"Maps staker address → list of currently staked token IDs."},"_walletTokenIndex":{"details":"Maps tokenId → index in _walletTokenIds[staker] for O(1) removal."}},"title":"TricksforBoosterStaking","version":1},"evm":{"bytecode":{"functionDebugData":{"@_4099":{"entryPoint":null,"id":4099,"parameterSlots":0,"returnSlots":0},"@_429":{"entryPoint":null,"id":429,"parameterSlots":1,"returnSlots":0},"@_9844":{"entryPoint":null,"id":9844,"parameterSlots":2,"returnSlots":0},"@_reentrancyGuardStorageSlot_4179":{"entryPoint":null,"id":4179,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_525":{"entryPoint":243,"id":525,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_587":{"entryPoint":215,"id":587,"parameterSlots":1,"returnSlots":0},"@getUint256Slot_4248":{"entryPoint":null,"id":4248,"parameterSlots":1,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":322,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":349,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:699:30","nodeType":"YulBlock","src":"0:699:30","statements":[{"nativeSrc":"6:3:30","nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nativeSrc":"74:117:30","nodeType":"YulBlock","src":"74:117:30","statements":[{"nativeSrc":"84:22:30","nodeType":"YulAssignment","src":"84:22:30","value":{"arguments":[{"name":"offset","nativeSrc":"99:6:30","nodeType":"YulIdentifier","src":"99:6:30"}],"functionName":{"name":"mload","nativeSrc":"93:5:30","nodeType":"YulIdentifier","src":"93:5:30"},"nativeSrc":"93:13:30","nodeType":"YulFunctionCall","src":"93:13:30"},"variableNames":[{"name":"value","nativeSrc":"84:5:30","nodeType":"YulIdentifier","src":"84:5:30"}]},{"body":{"nativeSrc":"169:16:30","nodeType":"YulBlock","src":"169:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"178:1:30","nodeType":"YulLiteral","src":"178:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"181:1:30","nodeType":"YulLiteral","src":"181:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"171:6:30","nodeType":"YulIdentifier","src":"171:6:30"},"nativeSrc":"171:12:30","nodeType":"YulFunctionCall","src":"171:12:30"},"nativeSrc":"171:12:30","nodeType":"YulExpressionStatement","src":"171:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"128:5:30","nodeType":"YulIdentifier","src":"128:5:30"},{"arguments":[{"name":"value","nativeSrc":"139:5:30","nodeType":"YulIdentifier","src":"139:5:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"154:3:30","nodeType":"YulLiteral","src":"154:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"159:1:30","nodeType":"YulLiteral","src":"159:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"150:3:30","nodeType":"YulIdentifier","src":"150:3:30"},"nativeSrc":"150:11:30","nodeType":"YulFunctionCall","src":"150:11:30"},{"kind":"number","nativeSrc":"163:1:30","nodeType":"YulLiteral","src":"163:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"146:3:30","nodeType":"YulIdentifier","src":"146:3:30"},"nativeSrc":"146:19:30","nodeType":"YulFunctionCall","src":"146:19:30"}],"functionName":{"name":"and","nativeSrc":"135:3:30","nodeType":"YulIdentifier","src":"135:3:30"},"nativeSrc":"135:31:30","nodeType":"YulFunctionCall","src":"135:31:30"}],"functionName":{"name":"eq","nativeSrc":"125:2:30","nodeType":"YulIdentifier","src":"125:2:30"},"nativeSrc":"125:42:30","nodeType":"YulFunctionCall","src":"125:42:30"}],"functionName":{"name":"iszero","nativeSrc":"118:6:30","nodeType":"YulIdentifier","src":"118:6:30"},"nativeSrc":"118:50:30","nodeType":"YulFunctionCall","src":"118:50:30"},"nativeSrc":"115:70:30","nodeType":"YulIf","src":"115:70:30"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"14:177:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"53:6:30","nodeType":"YulTypedName","src":"53:6:30","type":""}],"returnVariables":[{"name":"value","nativeSrc":"64:5:30","nodeType":"YulTypedName","src":"64:5:30","type":""}],"src":"14:177:30"},{"body":{"nativeSrc":"294:195:30","nodeType":"YulBlock","src":"294:195:30","statements":[{"body":{"nativeSrc":"340:16:30","nodeType":"YulBlock","src":"340:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"349:1:30","nodeType":"YulLiteral","src":"349:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"352:1:30","nodeType":"YulLiteral","src":"352:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"342:6:30","nodeType":"YulIdentifier","src":"342:6:30"},"nativeSrc":"342:12:30","nodeType":"YulFunctionCall","src":"342:12:30"},"nativeSrc":"342:12:30","nodeType":"YulExpressionStatement","src":"342:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"315:7:30","nodeType":"YulIdentifier","src":"315:7:30"},{"name":"headStart","nativeSrc":"324:9:30","nodeType":"YulIdentifier","src":"324:9:30"}],"functionName":{"name":"sub","nativeSrc":"311:3:30","nodeType":"YulIdentifier","src":"311:3:30"},"nativeSrc":"311:23:30","nodeType":"YulFunctionCall","src":"311:23:30"},{"kind":"number","nativeSrc":"336:2:30","nodeType":"YulLiteral","src":"336:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"307:3:30","nodeType":"YulIdentifier","src":"307:3:30"},"nativeSrc":"307:32:30","nodeType":"YulFunctionCall","src":"307:32:30"},"nativeSrc":"304:52:30","nodeType":"YulIf","src":"304:52:30"},{"nativeSrc":"365:50:30","nodeType":"YulAssignment","src":"365:50:30","value":{"arguments":[{"name":"headStart","nativeSrc":"405:9:30","nodeType":"YulIdentifier","src":"405:9:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"375:29:30","nodeType":"YulIdentifier","src":"375:29:30"},"nativeSrc":"375:40:30","nodeType":"YulFunctionCall","src":"375:40:30"},"variableNames":[{"name":"value0","nativeSrc":"365:6:30","nodeType":"YulIdentifier","src":"365:6:30"}]},{"nativeSrc":"424:59:30","nodeType":"YulAssignment","src":"424:59:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"468:9:30","nodeType":"YulIdentifier","src":"468:9:30"},{"kind":"number","nativeSrc":"479:2:30","nodeType":"YulLiteral","src":"479:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"464:3:30","nodeType":"YulIdentifier","src":"464:3:30"},"nativeSrc":"464:18:30","nodeType":"YulFunctionCall","src":"464:18:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"434:29:30","nodeType":"YulIdentifier","src":"434:29:30"},"nativeSrc":"434:49:30","nodeType":"YulFunctionCall","src":"434:49:30"},"variableNames":[{"name":"value1","nativeSrc":"424:6:30","nodeType":"YulIdentifier","src":"424:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nativeSrc":"196:293:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"252:9:30","nodeType":"YulTypedName","src":"252:9:30","type":""},{"name":"dataEnd","nativeSrc":"263:7:30","nodeType":"YulTypedName","src":"263:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"275:6:30","nodeType":"YulTypedName","src":"275:6:30","type":""},{"name":"value1","nativeSrc":"283:6:30","nodeType":"YulTypedName","src":"283:6:30","type":""}],"src":"196:293:30"},{"body":{"nativeSrc":"595:102:30","nodeType":"YulBlock","src":"595:102:30","statements":[{"nativeSrc":"605:26:30","nodeType":"YulAssignment","src":"605:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"617:9:30","nodeType":"YulIdentifier","src":"617:9:30"},{"kind":"number","nativeSrc":"628:2:30","nodeType":"YulLiteral","src":"628:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"613:3:30","nodeType":"YulIdentifier","src":"613:3:30"},"nativeSrc":"613:18:30","nodeType":"YulFunctionCall","src":"613:18:30"},"variableNames":[{"name":"tail","nativeSrc":"605:4:30","nodeType":"YulIdentifier","src":"605:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"647:9:30","nodeType":"YulIdentifier","src":"647:9:30"},{"arguments":[{"name":"value0","nativeSrc":"662:6:30","nodeType":"YulIdentifier","src":"662:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"678:3:30","nodeType":"YulLiteral","src":"678:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"683:1:30","nodeType":"YulLiteral","src":"683:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"674:3:30","nodeType":"YulIdentifier","src":"674:3:30"},"nativeSrc":"674:11:30","nodeType":"YulFunctionCall","src":"674:11:30"},{"kind":"number","nativeSrc":"687:1:30","nodeType":"YulLiteral","src":"687:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"670:3:30","nodeType":"YulIdentifier","src":"670:3:30"},"nativeSrc":"670:19:30","nodeType":"YulFunctionCall","src":"670:19:30"}],"functionName":{"name":"and","nativeSrc":"658:3:30","nodeType":"YulIdentifier","src":"658:3:30"},"nativeSrc":"658:32:30","nodeType":"YulFunctionCall","src":"658:32:30"}],"functionName":{"name":"mstore","nativeSrc":"640:6:30","nodeType":"YulIdentifier","src":"640:6:30"},"nativeSrc":"640:51:30","nodeType":"YulFunctionCall","src":"640:51:30"},"nativeSrc":"640:51:30","nodeType":"YulExpressionStatement","src":"640:51:30"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"494:203:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"564:9:30","nodeType":"YulTypedName","src":"564:9:30","type":""},{"name":"value0","nativeSrc":"575:6:30","nodeType":"YulTypedName","src":"575:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"586:4:30","nodeType":"YulTypedName","src":"586:4:30","type":""}],"src":"494:203:30"}]},"contents":"{\n { }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address_fromMemory(headStart)\n value1 := abi_decode_address_fromMemory(add(headStart, 32))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n}","id":30,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561000f575f80fd5b5060405161132638038061132683398101604081905261002e9161015d565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610065816100d7565b5060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b03821615806100a757506001600160a01b038116155b156100c55760405163d92e233d60e01b815260040160405180910390fd5b506001600160a01b031660805261018e565b600180546001600160a01b03191690556100f0816100f3565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114610158575f80fd5b919050565b5f806040838503121561016e575f80fd5b61017783610142565b915061018560208401610142565b90509250929050565b60805161114f6101d75f395f818161029e0152818161037001528181610417015281816104f7015281816106f70152818161086e01528181610a050152610ad8015261114f5ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063715018a61161009e578063a694fc3a1161006e578063a694fc3a1461025c578063baa51f861461026f578063d56d229d14610299578063e30c3978146102c0578063f2fde38b146102d1575f80fd5b8063715018a61461023457806379ba50971461023c5780638456cb59146102445780638da5cb5b1461024c575f80fd5b80632b4bc300116100e45780632b4bc300146101c85780632e17de78146101e85780632f940c70146101fb5780633f4ba83a1461020e5780635c975abb14610216575f80fd5b80630fa6f64214610115578063150b7a021461012a5780631b3253b01461015b5780631dcac94d14610188575b5f80fd5b610128610123366004610f2b565b6102e4565b005b61013d610138366004610f59565b6104db565b6040516001600160e01b031990911681526020015b60405180910390f35b61017a610169366004610ff2565b5f9081526003602052604090205490565b604051908152602001610152565b6101b0610196366004610ff2565b5f908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b6101db6101d6366004611009565b610607565b604051610152919061102b565b6101286101f6366004610ff2565b610670565b610128610209366004610f2b565b6107af565b610128610939565b600154600160a01b900460ff165b6040519015158152602001610152565b61012861094b565b61012861095c565b6101286109a2565b5f546001600160a01b03166101b0565b61012861026a366004610ff2565b6109b2565b61022461027d366004610ff2565b5f908152600260205260409020546001600160a01b0316151590565b6101b07f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b03166101b0565b6101286102df366004611009565b610b7a565b6102ec610bea565b6102f4610c16565b6001600160a01b03811661031b5760405163d92e233d60e01b815260040160405180910390fd5b5f828152600260205260409020546001600160a01b031615610350576040516382d272e360e01b815260040160405180910390fd5b6040516331a9108f60e11b81526004810183905230906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156103b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d9919061106d565b6001600160a01b03161461040057604051636bcd243760e11b815260040160405180910390fd5b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061045090309085908790600401611088565b5f604051808303815f87803b158015610467575f80fd5b505af1158015610479573d5f803e3d5ffd5b5050505081816001600160a01b03167fc27a1277308b3908a0fb998812a60b1da8911b8583f20bf8f98e5246db8c47ef426040516104b991815260200190565b60405180910390a36104d760015f805160206110fa83398151915255565b5050565b5f6104e4610c16565b6104ec610c31565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105355760405163de1db39560e01b815260040160405180910390fd5b6001600160a01b03851661055c5760405163d92e233d60e01b815260040160405180910390fd5b5f848152600260205260409020546001600160a01b031615610591576040516316e9ad8f60e01b815260040160405180910390fd5b61059b8585610c5c565b83856001600160a01b03167f6173e4d2d9dd52aae0ed37afed3adcf924a490639b759ca93d32dc43366c17d2426040516105d791815260200190565b60405180910390a350630a85bd0160e11b6105fe60015f805160206110fa83398151915255565b95945050505050565b6001600160a01b0381165f9081526004602090815260409182902080548351818402810184019094528084526060939283018282801561066457602002820191905f5260205f20905b815481526020019060010190808311610650575b50505050509050919050565b610678610c16565b5f818152600260205260409020546001600160a01b0316806106ad57604051630a49bbc360e21b815260040160405180910390fd5b6001600160a01b03811633146106d6576040516332dc95cb60e01b815260040160405180910390fd5b6106e08183610cc0565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061073090309033908790600401611088565b5f604051808303815f87803b158015610747575f80fd5b505af1158015610759573d5f803e3d5ffd5b50506040514281528492503391507f563fc70fca9d440d883299c76a721644d5aca7c45df98aeb5292c4cb823579bf906020015b60405180910390a3506107ac60015f805160206110fa83398151915255565b50565b6107b7610bea565b6107bf610c16565b5f828152600260205260409020546001600160a01b0316806107f457604051630a49bbc360e21b815260040160405180910390fd5b6001600160a01b03821661081b5760405163d92e233d60e01b815260040160405180910390fd5b806001600160a01b0316826001600160a01b03161461084d5760405163c56a390560e01b815260040160405180910390fd5b6108578184610cc0565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906108a790309086908890600401611088565b5f604051808303815f87803b1580156108be575f80fd5b505af11580156108d0573d5f803e3d5ffd5b50505050816001600160a01b031683826001600160a01b03167ff4408f2b7cb3bb2b43ddb3715579eae68a12af5f2e6d938537db2be5e72f5f7d4260405161091a91815260200190565b60405180910390a4506104d760015f805160206110fa83398151915255565b610941610bea565b610949610cf0565b565b610953610bea565b6109495f610d45565b60015433906001600160a01b031681146109995760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6107ac81610d45565b6109aa610bea565b610949610d5e565b6109ba610c16565b6109c2610c31565b5f8181526002602052604090205433906001600160a01b0316156109f9576040516316e9ad8f60e01b815260040160405180910390fd5b806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e846040518263ffffffff1660e01b8152600401610a5191815260200190565b602060405180830381865afa158015610a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a90919061106d565b6001600160a01b031614610ab7576040516359dc379f60e01b815260040160405180910390fd5b610ac18183610c5c565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610b1190849030908790600401611088565b5f604051808303815f87803b158015610b28575f80fd5b505af1158015610b3a573d5f803e3d5ffd5b5050505081816001600160a01b03167f6173e4d2d9dd52aae0ed37afed3adcf924a490639b759ca93d32dc43366c17d24260405161078d91815260200190565b610b82610bea565b600180546001600160a01b0383166001600160a01b03199091168117909155610bb25f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f546001600160a01b031633146109495760405163118cdaa760e01b8152336004820152602401610990565b610c1e610da1565b60025f805160206110fa83398151915255565b600154600160a01b900460ff16156109495760405163d93c066560e01b815260040160405180910390fd5b5f81815260026020908152604080832080546001600160a01b039096166001600160a01b0319909616861790556003825280832042905593825260048082528483208054858552600584529584208690559082526001850181558252902090910155565b5f81815260026020908152604080832080546001600160a01b031916905560039091528120556104d78282610dd0565b610cf8610e9e565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600180546001600160a01b03191690556107ac81610ec8565b610d66610c31565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d283390565b5f805160206110fa8339815191525460020361094957604051633ee5aeb560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526004602090815260408083208484526005909252822054815491929091610e07906001906110ac565b9050808214610e60575f838281548110610e2357610e236110d1565b905f5260205f200154905080848481548110610e4157610e416110d1565b5f91825260208083209091019290925591825260059052604090208290555b82805480610e7057610e706110e5565b600190038181905f5260205f20015f9055905560055f8581526020019081526020015f205f90555050505050565b600154600160a01b900460ff1661094957604051638dfc202b60e01b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146107ac575f80fd5b5f8060408385031215610f3c575f80fd5b823591506020830135610f4e81610f17565b809150509250929050565b5f805f805f60808688031215610f6d575f80fd5b8535610f7881610f17565b94506020860135610f8881610f17565b935060408601359250606086013567ffffffffffffffff811115610faa575f80fd5b8601601f81018813610fba575f80fd5b803567ffffffffffffffff811115610fd0575f80fd5b886020828401011115610fe1575f80fd5b959894975092955050506020019190565b5f60208284031215611002575f80fd5b5035919050565b5f60208284031215611019575f80fd5b813561102481610f17565b9392505050565b602080825282518282018190525f918401906040840190835b81811015611062578351835260209384019390920191600101611044565b509095945050505050565b5f6020828403121561107d575f80fd5b815161102481610f17565b6001600160a01b039384168152919092166020820152604081019190915260600190565b818103818111156110cb57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220f8e5afe3df2897c05bd05e17e152d07acba805eed0e132300174b368b573437b64736f6c634300081a0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1326 CODESIZE SUB DUP1 PUSH2 0x1326 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x15D JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5C JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x65 DUP2 PUSH2 0xD7 JUMP JUMPDEST POP PUSH1 0x1 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO DUP1 PUSH2 0xA7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0xC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0xF0 DUP2 PUSH2 0xF3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x158 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x16E JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x177 DUP4 PUSH2 0x142 JUMP JUMPDEST SWAP2 POP PUSH2 0x185 PUSH1 0x20 DUP5 ADD PUSH2 0x142 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x114F PUSH2 0x1D7 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x29E ADD MSTORE DUP2 DUP2 PUSH2 0x370 ADD MSTORE DUP2 DUP2 PUSH2 0x417 ADD MSTORE DUP2 DUP2 PUSH2 0x4F7 ADD MSTORE DUP2 DUP2 PUSH2 0x6F7 ADD MSTORE DUP2 DUP2 PUSH2 0x86E ADD MSTORE DUP2 DUP2 PUSH2 0xA05 ADD MSTORE PUSH2 0xAD8 ADD MSTORE PUSH2 0x114F PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x111 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x9E JUMPI DUP1 PUSH4 0xA694FC3A GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xA694FC3A EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xBAA51F86 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xD56D229D EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2D1 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x24C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2B4BC300 GT PUSH2 0xE4 JUMPI DUP1 PUSH4 0x2B4BC300 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x2E17DE78 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x216 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xFA6F642 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0x1B3253B0 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0x1DCAC94D EQ PUSH2 0x188 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0xF59 JUMP JUMPDEST PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17A PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x1B0 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1009 JUMP JUMPDEST PUSH2 0x607 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x152 SWAP2 SWAP1 PUSH2 0x102B JUMP JUMPDEST PUSH2 0x128 PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x670 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x7AF JUMP JUMPDEST PUSH2 0x128 PUSH2 0x939 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x94B JUMP JUMPDEST PUSH2 0x128 PUSH2 0x95C JUMP JUMPDEST PUSH2 0x128 PUSH2 0x9A2 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x9B2 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x27D CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1B0 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x1009 JUMP JUMPDEST PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x2EC PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0xC16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x31B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x350 JUMPI PUSH1 0x40 MLOAD PUSH4 0x82D272E3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D9 SWAP2 SWAP1 PUSH2 0x106D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x400 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6BCD2437 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x450 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x467 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x479 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC27A1277308B3908A0FB998812A60B1DA8911B8583F20BF8F98E5246DB8C47EF TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x4B9 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x4D7 PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4E4 PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x4EC PUSH2 0xC31 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x535 JUMPI PUSH1 0x40 MLOAD PUSH4 0xDE1DB395 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x55C JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x591 JUMPI PUSH1 0x40 MLOAD PUSH4 0x16E9AD8F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x59B DUP6 DUP6 PUSH2 0xC5C JUMP JUMPDEST DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6173E4D2D9DD52AAE0ED37AFED3ADCF924A490639B759CA93D32DC43366C17D2 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x5D7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x5FE PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x650 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x678 PUSH2 0xC16 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH4 0xA49BBC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x6D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32DC95CB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6E0 DUP2 DUP4 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x730 SWAP1 ADDRESS SWAP1 CALLER SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x747 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x759 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD TIMESTAMP DUP2 MSTORE DUP5 SWAP3 POP CALLER SWAP2 POP PUSH32 0x563FC70FCA9D440D883299C76A721644D5ACA7C45DF98AEB5292C4CB823579BF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x7AC PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x7B7 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x7BF PUSH2 0xC16 JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x7F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA49BBC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x81B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x84D JUMPI PUSH1 0x40 MLOAD PUSH4 0xC56A3905 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x857 DUP2 DUP5 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x8A7 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8D0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF4408F2B7CB3BB2B43DDB3715579EAE68A12AF5F2E6D938537DB2BE5E72F5F7D TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x91A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH2 0x4D7 PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH2 0x941 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH2 0xCF0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x953 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH0 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x1 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 EQ PUSH2 0x999 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7AC DUP2 PUSH2 0xD45 JUMP JUMPDEST PUSH2 0x9AA PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x9BA PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x9C2 PUSH2 0xC31 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x16E9AD8F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6352211E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA51 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA6C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA90 SWAP2 SWAP1 PUSH2 0x106D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x59DC379F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAC1 DUP2 DUP4 PUSH2 0xC5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0xB11 SWAP1 DUP5 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB28 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6173E4D2D9DD52AAE0ED37AFED3ADCF924A490639B759CA93D32DC43366C17D2 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x78D SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xB82 PUSH2 0xBEA JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0xBB2 PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x990 JUMP JUMPDEST PUSH2 0xC1E PUSH2 0xDA1 JUMP JUMPDEST PUSH1 0x2 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP7 AND DUP7 OR SWAP1 SSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 TIMESTAMP SWAP1 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD DUP6 DUP6 MSTORE PUSH1 0x5 DUP5 MSTORE SWAP6 DUP5 KECCAK256 DUP7 SWAP1 SSTORE SWAP1 DUP3 MSTORE PUSH1 0x1 DUP6 ADD DUP2 SSTORE DUP3 MSTORE SWAP1 KECCAK256 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SSTORE PUSH2 0x4D7 DUP3 DUP3 PUSH2 0xDD0 JUMP JUMPDEST PUSH2 0xCF8 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x7AC DUP2 PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0xD66 PUSH2 0xC31 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0xD28 CALLER SWAP1 JUMP JUMPDEST PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x2 SUB PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD DUP2 SLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH2 0xE07 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x10AC JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0xE60 JUMPI PUSH0 DUP4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE23 JUMPI PUSH2 0xE23 PUSH2 0x10D1 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xE41 JUMPI PUSH2 0xE41 PUSH2 0x10D1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST DUP3 DUP1 SLOAD DUP1 PUSH2 0xE70 JUMPI PUSH2 0xE70 PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x5 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7AC JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF3C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xF4E DUP2 PUSH2 0xF17 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xF6D JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xF78 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xF88 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFAA JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x1F DUP2 ADD DUP9 SGT PUSH2 0xFBA JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFD0 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xFE1 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 POP POP POP PUSH1 0x20 ADD SWAP2 SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1002 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1019 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1024 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1062 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1044 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x107D JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1024 DUP2 PUSH2 0xF17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x10CB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID SWAP12 PUSH24 0x9B17422D0DF92223018B32B4D1FA46E071723D6817E2486D STOP EXTCODESIZE 0xEC 0xC5 PUSH0 STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0xE5 0xAF 0xE3 0xDF 0x28 SWAP8 0xC0 JUMPDEST 0xD0 MCOPY OR 0xE1 MSTORE 0xD0 PUSH27 0xCBA805EED0E132300174B368B573437B64736F6C634300081A0033 ","sourceMap":"1462:12831:28:-:0;;;5705:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5770:13;-1:-1:-1;;;;;1273:26:2;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:2;;1350:1;1322:31;;;640:51:30;613:18;;1322:31:2;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;2365:1:19;1505:66;2539;-1:-1:-1;;;;;5799:26:28;::::1;::::0;;:57:::1;;-1:-1:-1::0;;;;;;5829:27:28;::::1;::::0;5799:57:::1;5795:83;;;5865:13;;-1:-1:-1::0;;;5865:13:28::1;;;;;;;;;;;5795:83;-1:-1:-1::0;;;;;;5888:35:28::1;;::::0;1462:12831;;2011:153:3;2100:13;2093:20;;-1:-1:-1;;;;;;2093:20:3;;;2123:34;2148:8;2123:24;:34::i;:::-;2011:153;:::o;2912:187:2:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:2;;;-1:-1:-1;;;;;;3020:17:2;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:177:30:-;93:13;;-1:-1:-1;;;;;135:31:30;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:203::-;1462:12831:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_checkOwner_463":{"entryPoint":3050,"id":463,"parameterSlots":0,"returnSlots":0},"@_clearStake_10307":{"entryPoint":3264,"id":10307,"parameterSlots":2,"returnSlots":0},"@_msgSender_3889":{"entryPoint":null,"id":3889,"parameterSlots":0,"returnSlots":1},"@_nonReentrantAfter_4156":{"entryPoint":null,"id":4156,"parameterSlots":0,"returnSlots":0},"@_nonReentrantBeforeView_4129":{"entryPoint":3489,"id":4129,"parameterSlots":0,"returnSlots":0},"@_nonReentrantBefore_4144":{"entryPoint":3094,"id":4144,"parameterSlots":0,"returnSlots":0},"@_pause_4050":{"entryPoint":3422,"id":4050,"parameterSlots":0,"returnSlots":0},"@_recordStake_10283":{"entryPoint":3164,"id":10283,"parameterSlots":2,"returnSlots":0},"@_reentrancyGuardEntered_4171":{"entryPoint":null,"id":4171,"parameterSlots":0,"returnSlots":1},"@_reentrancyGuardStorageSlot_4179":{"entryPoint":null,"id":4179,"parameterSlots":0,"returnSlots":1},"@_removeFromWallet_10371":{"entryPoint":3536,"id":10371,"parameterSlots":2,"returnSlots":0},"@_requireNotPaused_4021":{"entryPoint":3121,"id":4021,"parameterSlots":0,"returnSlots":0},"@_requirePaused_4034":{"entryPoint":3742,"id":4034,"parameterSlots":0,"returnSlots":0},"@_transferOwnership_525":{"entryPoint":3784,"id":525,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_587":{"entryPoint":3397,"id":587,"parameterSlots":1,"returnSlots":0},"@_unpause_4066":{"entryPoint":3312,"id":4066,"parameterSlots":0,"returnSlots":0},"@acceptOwnership_611":{"entryPoint":2396,"id":611,"parameterSlots":0,"returnSlots":0},"@emergencyWithdraw_10101":{"entryPoint":1967,"id":10101,"parameterSlots":2,"returnSlots":0},"@getUint256Slot_4248":{"entryPoint":null,"id":4248,"parameterSlots":1,"returnSlots":1},"@getWalletStakedTokens_10245":{"entryPoint":1543,"id":10245,"parameterSlots":1,"returnSlots":1},"@isStaked_10205":{"entryPoint":null,"id":10205,"parameterSlots":1,"returnSlots":1},"@nftContract_9788":{"entryPoint":null,"id":9788,"parameterSlots":0,"returnSlots":0},"@onERC721Received_9973":{"entryPoint":1243,"id":9973,"parameterSlots":5,"returnSlots":1},"@owner_446":{"entryPoint":null,"id":446,"parameterSlots":0,"returnSlots":1},"@pause_10177":{"entryPoint":2466,"id":10177,"parameterSlots":0,"returnSlots":0},"@paused_4009":{"entryPoint":null,"id":4009,"parameterSlots":0,"returnSlots":1},"@pendingOwner_550":{"entryPoint":null,"id":550,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_477":{"entryPoint":2379,"id":477,"parameterSlots":0,"returnSlots":0},"@rescueUntrackedToken_10167":{"entryPoint":740,"id":10167,"parameterSlots":2,"returnSlots":0},"@stake_9905":{"entryPoint":2482,"id":9905,"parameterSlots":1,"returnSlots":0},"@stakedAtOf_10231":{"entryPoint":null,"id":10231,"parameterSlots":1,"returnSlots":1},"@stakedOwnerOf_10218":{"entryPoint":null,"id":10218,"parameterSlots":1,"returnSlots":1},"@transferOwnership_570":{"entryPoint":2938,"id":570,"parameterSlots":1,"returnSlots":0},"@unpause_10187":{"entryPoint":2361,"id":10187,"parameterSlots":0,"returnSlots":0},"@unstake_10031":{"entryPoint":1648,"id":10031,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":4105,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4205,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr":{"entryPoint":3929,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint256":{"entryPoint":4082,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":3883,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":4232,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":4139,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IERC721_$2686__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":4268,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x31":{"entryPoint":4325,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4305,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3863,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:4745:30","nodeType":"YulBlock","src":"0:4745:30","statements":[{"nativeSrc":"6:3:30","nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nativeSrc":"59:86:30","nodeType":"YulBlock","src":"59:86:30","statements":[{"body":{"nativeSrc":"123:16:30","nodeType":"YulBlock","src":"123:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:30","nodeType":"YulLiteral","src":"132:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:30","nodeType":"YulLiteral","src":"135:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:30","nodeType":"YulIdentifier","src":"125:6:30"},"nativeSrc":"125:12:30","nodeType":"YulFunctionCall","src":"125:12:30"},"nativeSrc":"125:12:30","nodeType":"YulExpressionStatement","src":"125:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"82:5:30","nodeType":"YulIdentifier","src":"82:5:30"},{"arguments":[{"name":"value","nativeSrc":"93:5:30","nodeType":"YulIdentifier","src":"93:5:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"108:3:30","nodeType":"YulLiteral","src":"108:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"113:1:30","nodeType":"YulLiteral","src":"113:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"104:3:30","nodeType":"YulIdentifier","src":"104:3:30"},"nativeSrc":"104:11:30","nodeType":"YulFunctionCall","src":"104:11:30"},{"kind":"number","nativeSrc":"117:1:30","nodeType":"YulLiteral","src":"117:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"100:3:30","nodeType":"YulIdentifier","src":"100:3:30"},"nativeSrc":"100:19:30","nodeType":"YulFunctionCall","src":"100:19:30"}],"functionName":{"name":"and","nativeSrc":"89:3:30","nodeType":"YulIdentifier","src":"89:3:30"},"nativeSrc":"89:31:30","nodeType":"YulFunctionCall","src":"89:31:30"}],"functionName":{"name":"eq","nativeSrc":"79:2:30","nodeType":"YulIdentifier","src":"79:2:30"},"nativeSrc":"79:42:30","nodeType":"YulFunctionCall","src":"79:42:30"}],"functionName":{"name":"iszero","nativeSrc":"72:6:30","nodeType":"YulIdentifier","src":"72:6:30"},"nativeSrc":"72:50:30","nodeType":"YulFunctionCall","src":"72:50:30"},"nativeSrc":"69:70:30","nodeType":"YulIf","src":"69:70:30"}]},"name":"validator_revert_address","nativeSrc":"14:131:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"48:5:30","nodeType":"YulTypedName","src":"48:5:30","type":""}],"src":"14:131:30"},{"body":{"nativeSrc":"237:280:30","nodeType":"YulBlock","src":"237:280:30","statements":[{"body":{"nativeSrc":"283:16:30","nodeType":"YulBlock","src":"283:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"292:1:30","nodeType":"YulLiteral","src":"292:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"295:1:30","nodeType":"YulLiteral","src":"295:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"285:6:30","nodeType":"YulIdentifier","src":"285:6:30"},"nativeSrc":"285:12:30","nodeType":"YulFunctionCall","src":"285:12:30"},"nativeSrc":"285:12:30","nodeType":"YulExpressionStatement","src":"285:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"258:7:30","nodeType":"YulIdentifier","src":"258:7:30"},{"name":"headStart","nativeSrc":"267:9:30","nodeType":"YulIdentifier","src":"267:9:30"}],"functionName":{"name":"sub","nativeSrc":"254:3:30","nodeType":"YulIdentifier","src":"254:3:30"},"nativeSrc":"254:23:30","nodeType":"YulFunctionCall","src":"254:23:30"},{"kind":"number","nativeSrc":"279:2:30","nodeType":"YulLiteral","src":"279:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"250:3:30","nodeType":"YulIdentifier","src":"250:3:30"},"nativeSrc":"250:32:30","nodeType":"YulFunctionCall","src":"250:32:30"},"nativeSrc":"247:52:30","nodeType":"YulIf","src":"247:52:30"},{"nativeSrc":"308:14:30","nodeType":"YulVariableDeclaration","src":"308:14:30","value":{"kind":"number","nativeSrc":"321:1:30","nodeType":"YulLiteral","src":"321:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"312:5:30","nodeType":"YulTypedName","src":"312:5:30","type":""}]},{"nativeSrc":"331:32:30","nodeType":"YulAssignment","src":"331:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"353:9:30","nodeType":"YulIdentifier","src":"353:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"340:12:30","nodeType":"YulIdentifier","src":"340:12:30"},"nativeSrc":"340:23:30","nodeType":"YulFunctionCall","src":"340:23:30"},"variableNames":[{"name":"value","nativeSrc":"331:5:30","nodeType":"YulIdentifier","src":"331:5:30"}]},{"nativeSrc":"372:15:30","nodeType":"YulAssignment","src":"372:15:30","value":{"name":"value","nativeSrc":"382:5:30","nodeType":"YulIdentifier","src":"382:5:30"},"variableNames":[{"name":"value0","nativeSrc":"372:6:30","nodeType":"YulIdentifier","src":"372:6:30"}]},{"nativeSrc":"396:47:30","nodeType":"YulVariableDeclaration","src":"396:47:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"428:9:30","nodeType":"YulIdentifier","src":"428:9:30"},{"kind":"number","nativeSrc":"439:2:30","nodeType":"YulLiteral","src":"439:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"424:3:30","nodeType":"YulIdentifier","src":"424:3:30"},"nativeSrc":"424:18:30","nodeType":"YulFunctionCall","src":"424:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"411:12:30","nodeType":"YulIdentifier","src":"411:12:30"},"nativeSrc":"411:32:30","nodeType":"YulFunctionCall","src":"411:32:30"},"variables":[{"name":"value_1","nativeSrc":"400:7:30","nodeType":"YulTypedName","src":"400:7:30","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"477:7:30","nodeType":"YulIdentifier","src":"477:7:30"}],"functionName":{"name":"validator_revert_address","nativeSrc":"452:24:30","nodeType":"YulIdentifier","src":"452:24:30"},"nativeSrc":"452:33:30","nodeType":"YulFunctionCall","src":"452:33:30"},"nativeSrc":"452:33:30","nodeType":"YulExpressionStatement","src":"452:33:30"},{"nativeSrc":"494:17:30","nodeType":"YulAssignment","src":"494:17:30","value":{"name":"value_1","nativeSrc":"504:7:30","nodeType":"YulIdentifier","src":"504:7:30"},"variableNames":[{"name":"value1","nativeSrc":"494:6:30","nodeType":"YulIdentifier","src":"494:6:30"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"150:367:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"195:9:30","nodeType":"YulTypedName","src":"195:9:30","type":""},{"name":"dataEnd","nativeSrc":"206:7:30","nodeType":"YulTypedName","src":"206:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"218:6:30","nodeType":"YulTypedName","src":"218:6:30","type":""},{"name":"value1","nativeSrc":"226:6:30","nodeType":"YulTypedName","src":"226:6:30","type":""}],"src":"150:367:30"},{"body":{"nativeSrc":"662:843:30","nodeType":"YulBlock","src":"662:843:30","statements":[{"body":{"nativeSrc":"709:16:30","nodeType":"YulBlock","src":"709:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"718:1:30","nodeType":"YulLiteral","src":"718:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"721:1:30","nodeType":"YulLiteral","src":"721:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"711:6:30","nodeType":"YulIdentifier","src":"711:6:30"},"nativeSrc":"711:12:30","nodeType":"YulFunctionCall","src":"711:12:30"},"nativeSrc":"711:12:30","nodeType":"YulExpressionStatement","src":"711:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"683:7:30","nodeType":"YulIdentifier","src":"683:7:30"},{"name":"headStart","nativeSrc":"692:9:30","nodeType":"YulIdentifier","src":"692:9:30"}],"functionName":{"name":"sub","nativeSrc":"679:3:30","nodeType":"YulIdentifier","src":"679:3:30"},"nativeSrc":"679:23:30","nodeType":"YulFunctionCall","src":"679:23:30"},{"kind":"number","nativeSrc":"704:3:30","nodeType":"YulLiteral","src":"704:3:30","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"675:3:30","nodeType":"YulIdentifier","src":"675:3:30"},"nativeSrc":"675:33:30","nodeType":"YulFunctionCall","src":"675:33:30"},"nativeSrc":"672:53:30","nodeType":"YulIf","src":"672:53:30"},{"nativeSrc":"734:36:30","nodeType":"YulVariableDeclaration","src":"734:36:30","value":{"arguments":[{"name":"headStart","nativeSrc":"760:9:30","nodeType":"YulIdentifier","src":"760:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"747:12:30","nodeType":"YulIdentifier","src":"747:12:30"},"nativeSrc":"747:23:30","nodeType":"YulFunctionCall","src":"747:23:30"},"variables":[{"name":"value","nativeSrc":"738:5:30","nodeType":"YulTypedName","src":"738:5:30","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"804:5:30","nodeType":"YulIdentifier","src":"804:5:30"}],"functionName":{"name":"validator_revert_address","nativeSrc":"779:24:30","nodeType":"YulIdentifier","src":"779:24:30"},"nativeSrc":"779:31:30","nodeType":"YulFunctionCall","src":"779:31:30"},"nativeSrc":"779:31:30","nodeType":"YulExpressionStatement","src":"779:31:30"},{"nativeSrc":"819:15:30","nodeType":"YulAssignment","src":"819:15:30","value":{"name":"value","nativeSrc":"829:5:30","nodeType":"YulIdentifier","src":"829:5:30"},"variableNames":[{"name":"value0","nativeSrc":"819:6:30","nodeType":"YulIdentifier","src":"819:6:30"}]},{"nativeSrc":"843:47:30","nodeType":"YulVariableDeclaration","src":"843:47:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"875:9:30","nodeType":"YulIdentifier","src":"875:9:30"},{"kind":"number","nativeSrc":"886:2:30","nodeType":"YulLiteral","src":"886:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"871:3:30","nodeType":"YulIdentifier","src":"871:3:30"},"nativeSrc":"871:18:30","nodeType":"YulFunctionCall","src":"871:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"858:12:30","nodeType":"YulIdentifier","src":"858:12:30"},"nativeSrc":"858:32:30","nodeType":"YulFunctionCall","src":"858:32:30"},"variables":[{"name":"value_1","nativeSrc":"847:7:30","nodeType":"YulTypedName","src":"847:7:30","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"924:7:30","nodeType":"YulIdentifier","src":"924:7:30"}],"functionName":{"name":"validator_revert_address","nativeSrc":"899:24:30","nodeType":"YulIdentifier","src":"899:24:30"},"nativeSrc":"899:33:30","nodeType":"YulFunctionCall","src":"899:33:30"},"nativeSrc":"899:33:30","nodeType":"YulExpressionStatement","src":"899:33:30"},{"nativeSrc":"941:17:30","nodeType":"YulAssignment","src":"941:17:30","value":{"name":"value_1","nativeSrc":"951:7:30","nodeType":"YulIdentifier","src":"951:7:30"},"variableNames":[{"name":"value1","nativeSrc":"941:6:30","nodeType":"YulIdentifier","src":"941:6:30"}]},{"nativeSrc":"967:16:30","nodeType":"YulVariableDeclaration","src":"967:16:30","value":{"kind":"number","nativeSrc":"982:1:30","nodeType":"YulLiteral","src":"982:1:30","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"971:7:30","nodeType":"YulTypedName","src":"971:7:30","type":""}]},{"nativeSrc":"992:43:30","nodeType":"YulAssignment","src":"992:43:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1020:9:30","nodeType":"YulIdentifier","src":"1020:9:30"},{"kind":"number","nativeSrc":"1031:2:30","nodeType":"YulLiteral","src":"1031:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1016:3:30","nodeType":"YulIdentifier","src":"1016:3:30"},"nativeSrc":"1016:18:30","nodeType":"YulFunctionCall","src":"1016:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"1003:12:30","nodeType":"YulIdentifier","src":"1003:12:30"},"nativeSrc":"1003:32:30","nodeType":"YulFunctionCall","src":"1003:32:30"},"variableNames":[{"name":"value_2","nativeSrc":"992:7:30","nodeType":"YulIdentifier","src":"992:7:30"}]},{"nativeSrc":"1044:17:30","nodeType":"YulAssignment","src":"1044:17:30","value":{"name":"value_2","nativeSrc":"1054:7:30","nodeType":"YulIdentifier","src":"1054:7:30"},"variableNames":[{"name":"value2","nativeSrc":"1044:6:30","nodeType":"YulIdentifier","src":"1044:6:30"}]},{"nativeSrc":"1070:46:30","nodeType":"YulVariableDeclaration","src":"1070:46:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1101:9:30","nodeType":"YulIdentifier","src":"1101:9:30"},{"kind":"number","nativeSrc":"1112:2:30","nodeType":"YulLiteral","src":"1112:2:30","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1097:3:30","nodeType":"YulIdentifier","src":"1097:3:30"},"nativeSrc":"1097:18:30","nodeType":"YulFunctionCall","src":"1097:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"1084:12:30","nodeType":"YulIdentifier","src":"1084:12:30"},"nativeSrc":"1084:32:30","nodeType":"YulFunctionCall","src":"1084:32:30"},"variables":[{"name":"offset","nativeSrc":"1074:6:30","nodeType":"YulTypedName","src":"1074:6:30","type":""}]},{"body":{"nativeSrc":"1159:16:30","nodeType":"YulBlock","src":"1159:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1168:1:30","nodeType":"YulLiteral","src":"1168:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1171:1:30","nodeType":"YulLiteral","src":"1171:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1161:6:30","nodeType":"YulIdentifier","src":"1161:6:30"},"nativeSrc":"1161:12:30","nodeType":"YulFunctionCall","src":"1161:12:30"},"nativeSrc":"1161:12:30","nodeType":"YulExpressionStatement","src":"1161:12:30"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1131:6:30","nodeType":"YulIdentifier","src":"1131:6:30"},{"kind":"number","nativeSrc":"1139:18:30","nodeType":"YulLiteral","src":"1139:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1128:2:30","nodeType":"YulIdentifier","src":"1128:2:30"},"nativeSrc":"1128:30:30","nodeType":"YulFunctionCall","src":"1128:30:30"},"nativeSrc":"1125:50:30","nodeType":"YulIf","src":"1125:50:30"},{"nativeSrc":"1184:32:30","nodeType":"YulVariableDeclaration","src":"1184:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"1198:9:30","nodeType":"YulIdentifier","src":"1198:9:30"},{"name":"offset","nativeSrc":"1209:6:30","nodeType":"YulIdentifier","src":"1209:6:30"}],"functionName":{"name":"add","nativeSrc":"1194:3:30","nodeType":"YulIdentifier","src":"1194:3:30"},"nativeSrc":"1194:22:30","nodeType":"YulFunctionCall","src":"1194:22:30"},"variables":[{"name":"_1","nativeSrc":"1188:2:30","nodeType":"YulTypedName","src":"1188:2:30","type":""}]},{"body":{"nativeSrc":"1264:16:30","nodeType":"YulBlock","src":"1264:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1273:1:30","nodeType":"YulLiteral","src":"1273:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1276:1:30","nodeType":"YulLiteral","src":"1276:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1266:6:30","nodeType":"YulIdentifier","src":"1266:6:30"},"nativeSrc":"1266:12:30","nodeType":"YulFunctionCall","src":"1266:12:30"},"nativeSrc":"1266:12:30","nodeType":"YulExpressionStatement","src":"1266:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1243:2:30","nodeType":"YulIdentifier","src":"1243:2:30"},{"kind":"number","nativeSrc":"1247:4:30","nodeType":"YulLiteral","src":"1247:4:30","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1239:3:30","nodeType":"YulIdentifier","src":"1239:3:30"},"nativeSrc":"1239:13:30","nodeType":"YulFunctionCall","src":"1239:13:30"},{"name":"dataEnd","nativeSrc":"1254:7:30","nodeType":"YulIdentifier","src":"1254:7:30"}],"functionName":{"name":"slt","nativeSrc":"1235:3:30","nodeType":"YulIdentifier","src":"1235:3:30"},"nativeSrc":"1235:27:30","nodeType":"YulFunctionCall","src":"1235:27:30"}],"functionName":{"name":"iszero","nativeSrc":"1228:6:30","nodeType":"YulIdentifier","src":"1228:6:30"},"nativeSrc":"1228:35:30","nodeType":"YulFunctionCall","src":"1228:35:30"},"nativeSrc":"1225:55:30","nodeType":"YulIf","src":"1225:55:30"},{"nativeSrc":"1289:30:30","nodeType":"YulVariableDeclaration","src":"1289:30:30","value":{"arguments":[{"name":"_1","nativeSrc":"1316:2:30","nodeType":"YulIdentifier","src":"1316:2:30"}],"functionName":{"name":"calldataload","nativeSrc":"1303:12:30","nodeType":"YulIdentifier","src":"1303:12:30"},"nativeSrc":"1303:16:30","nodeType":"YulFunctionCall","src":"1303:16:30"},"variables":[{"name":"length","nativeSrc":"1293:6:30","nodeType":"YulTypedName","src":"1293:6:30","type":""}]},{"body":{"nativeSrc":"1362:16:30","nodeType":"YulBlock","src":"1362:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1371:1:30","nodeType":"YulLiteral","src":"1371:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1374:1:30","nodeType":"YulLiteral","src":"1374:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1364:6:30","nodeType":"YulIdentifier","src":"1364:6:30"},"nativeSrc":"1364:12:30","nodeType":"YulFunctionCall","src":"1364:12:30"},"nativeSrc":"1364:12:30","nodeType":"YulExpressionStatement","src":"1364:12:30"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1334:6:30","nodeType":"YulIdentifier","src":"1334:6:30"},{"kind":"number","nativeSrc":"1342:18:30","nodeType":"YulLiteral","src":"1342:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1331:2:30","nodeType":"YulIdentifier","src":"1331:2:30"},"nativeSrc":"1331:30:30","nodeType":"YulFunctionCall","src":"1331:30:30"},"nativeSrc":"1328:50:30","nodeType":"YulIf","src":"1328:50:30"},{"body":{"nativeSrc":"1428:16:30","nodeType":"YulBlock","src":"1428:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1437:1:30","nodeType":"YulLiteral","src":"1437:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1440:1:30","nodeType":"YulLiteral","src":"1440:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1430:6:30","nodeType":"YulIdentifier","src":"1430:6:30"},"nativeSrc":"1430:12:30","nodeType":"YulFunctionCall","src":"1430:12:30"},"nativeSrc":"1430:12:30","nodeType":"YulExpressionStatement","src":"1430:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1401:2:30","nodeType":"YulIdentifier","src":"1401:2:30"},{"name":"length","nativeSrc":"1405:6:30","nodeType":"YulIdentifier","src":"1405:6:30"}],"functionName":{"name":"add","nativeSrc":"1397:3:30","nodeType":"YulIdentifier","src":"1397:3:30"},"nativeSrc":"1397:15:30","nodeType":"YulFunctionCall","src":"1397:15:30"},{"kind":"number","nativeSrc":"1414:2:30","nodeType":"YulLiteral","src":"1414:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1393:3:30","nodeType":"YulIdentifier","src":"1393:3:30"},"nativeSrc":"1393:24:30","nodeType":"YulFunctionCall","src":"1393:24:30"},{"name":"dataEnd","nativeSrc":"1419:7:30","nodeType":"YulIdentifier","src":"1419:7:30"}],"functionName":{"name":"gt","nativeSrc":"1390:2:30","nodeType":"YulIdentifier","src":"1390:2:30"},"nativeSrc":"1390:37:30","nodeType":"YulFunctionCall","src":"1390:37:30"},"nativeSrc":"1387:57:30","nodeType":"YulIf","src":"1387:57:30"},{"nativeSrc":"1453:21:30","nodeType":"YulAssignment","src":"1453:21:30","value":{"arguments":[{"name":"_1","nativeSrc":"1467:2:30","nodeType":"YulIdentifier","src":"1467:2:30"},{"kind":"number","nativeSrc":"1471:2:30","nodeType":"YulLiteral","src":"1471:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1463:3:30","nodeType":"YulIdentifier","src":"1463:3:30"},"nativeSrc":"1463:11:30","nodeType":"YulFunctionCall","src":"1463:11:30"},"variableNames":[{"name":"value3","nativeSrc":"1453:6:30","nodeType":"YulIdentifier","src":"1453:6:30"}]},{"nativeSrc":"1483:16:30","nodeType":"YulAssignment","src":"1483:16:30","value":{"name":"length","nativeSrc":"1493:6:30","nodeType":"YulIdentifier","src":"1493:6:30"},"variableNames":[{"name":"value4","nativeSrc":"1483:6:30","nodeType":"YulIdentifier","src":"1483:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr","nativeSrc":"522:983:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"596:9:30","nodeType":"YulTypedName","src":"596:9:30","type":""},{"name":"dataEnd","nativeSrc":"607:7:30","nodeType":"YulTypedName","src":"607:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"619:6:30","nodeType":"YulTypedName","src":"619:6:30","type":""},{"name":"value1","nativeSrc":"627:6:30","nodeType":"YulTypedName","src":"627:6:30","type":""},{"name":"value2","nativeSrc":"635:6:30","nodeType":"YulTypedName","src":"635:6:30","type":""},{"name":"value3","nativeSrc":"643:6:30","nodeType":"YulTypedName","src":"643:6:30","type":""},{"name":"value4","nativeSrc":"651:6:30","nodeType":"YulTypedName","src":"651:6:30","type":""}],"src":"522:983:30"},{"body":{"nativeSrc":"1609:103:30","nodeType":"YulBlock","src":"1609:103:30","statements":[{"nativeSrc":"1619:26:30","nodeType":"YulAssignment","src":"1619:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"1631:9:30","nodeType":"YulIdentifier","src":"1631:9:30"},{"kind":"number","nativeSrc":"1642:2:30","nodeType":"YulLiteral","src":"1642:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1627:3:30","nodeType":"YulIdentifier","src":"1627:3:30"},"nativeSrc":"1627:18:30","nodeType":"YulFunctionCall","src":"1627:18:30"},"variableNames":[{"name":"tail","nativeSrc":"1619:4:30","nodeType":"YulIdentifier","src":"1619:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1661:9:30","nodeType":"YulIdentifier","src":"1661:9:30"},{"arguments":[{"name":"value0","nativeSrc":"1676:6:30","nodeType":"YulIdentifier","src":"1676:6:30"},{"arguments":[{"kind":"number","nativeSrc":"1688:3:30","nodeType":"YulLiteral","src":"1688:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"1693:10:30","nodeType":"YulLiteral","src":"1693:10:30","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"1684:3:30","nodeType":"YulIdentifier","src":"1684:3:30"},"nativeSrc":"1684:20:30","nodeType":"YulFunctionCall","src":"1684:20:30"}],"functionName":{"name":"and","nativeSrc":"1672:3:30","nodeType":"YulIdentifier","src":"1672:3:30"},"nativeSrc":"1672:33:30","nodeType":"YulFunctionCall","src":"1672:33:30"}],"functionName":{"name":"mstore","nativeSrc":"1654:6:30","nodeType":"YulIdentifier","src":"1654:6:30"},"nativeSrc":"1654:52:30","nodeType":"YulFunctionCall","src":"1654:52:30"},"nativeSrc":"1654:52:30","nodeType":"YulExpressionStatement","src":"1654:52:30"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"1510:202:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1578:9:30","nodeType":"YulTypedName","src":"1578:9:30","type":""},{"name":"value0","nativeSrc":"1589:6:30","nodeType":"YulTypedName","src":"1589:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1600:4:30","nodeType":"YulTypedName","src":"1600:4:30","type":""}],"src":"1510:202:30"},{"body":{"nativeSrc":"1787:156:30","nodeType":"YulBlock","src":"1787:156:30","statements":[{"body":{"nativeSrc":"1833:16:30","nodeType":"YulBlock","src":"1833:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1842:1:30","nodeType":"YulLiteral","src":"1842:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1845:1:30","nodeType":"YulLiteral","src":"1845:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1835:6:30","nodeType":"YulIdentifier","src":"1835:6:30"},"nativeSrc":"1835:12:30","nodeType":"YulFunctionCall","src":"1835:12:30"},"nativeSrc":"1835:12:30","nodeType":"YulExpressionStatement","src":"1835:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1808:7:30","nodeType":"YulIdentifier","src":"1808:7:30"},{"name":"headStart","nativeSrc":"1817:9:30","nodeType":"YulIdentifier","src":"1817:9:30"}],"functionName":{"name":"sub","nativeSrc":"1804:3:30","nodeType":"YulIdentifier","src":"1804:3:30"},"nativeSrc":"1804:23:30","nodeType":"YulFunctionCall","src":"1804:23:30"},{"kind":"number","nativeSrc":"1829:2:30","nodeType":"YulLiteral","src":"1829:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1800:3:30","nodeType":"YulIdentifier","src":"1800:3:30"},"nativeSrc":"1800:32:30","nodeType":"YulFunctionCall","src":"1800:32:30"},"nativeSrc":"1797:52:30","nodeType":"YulIf","src":"1797:52:30"},{"nativeSrc":"1858:14:30","nodeType":"YulVariableDeclaration","src":"1858:14:30","value":{"kind":"number","nativeSrc":"1871:1:30","nodeType":"YulLiteral","src":"1871:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1862:5:30","nodeType":"YulTypedName","src":"1862:5:30","type":""}]},{"nativeSrc":"1881:32:30","nodeType":"YulAssignment","src":"1881:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"1903:9:30","nodeType":"YulIdentifier","src":"1903:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"1890:12:30","nodeType":"YulIdentifier","src":"1890:12:30"},"nativeSrc":"1890:23:30","nodeType":"YulFunctionCall","src":"1890:23:30"},"variableNames":[{"name":"value","nativeSrc":"1881:5:30","nodeType":"YulIdentifier","src":"1881:5:30"}]},{"nativeSrc":"1922:15:30","nodeType":"YulAssignment","src":"1922:15:30","value":{"name":"value","nativeSrc":"1932:5:30","nodeType":"YulIdentifier","src":"1932:5:30"},"variableNames":[{"name":"value0","nativeSrc":"1922:6:30","nodeType":"YulIdentifier","src":"1922:6:30"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1717:226:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1753:9:30","nodeType":"YulTypedName","src":"1753:9:30","type":""},{"name":"dataEnd","nativeSrc":"1764:7:30","nodeType":"YulTypedName","src":"1764:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1776:6:30","nodeType":"YulTypedName","src":"1776:6:30","type":""}],"src":"1717:226:30"},{"body":{"nativeSrc":"2049:76:30","nodeType":"YulBlock","src":"2049:76:30","statements":[{"nativeSrc":"2059:26:30","nodeType":"YulAssignment","src":"2059:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2071:9:30","nodeType":"YulIdentifier","src":"2071:9:30"},{"kind":"number","nativeSrc":"2082:2:30","nodeType":"YulLiteral","src":"2082:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2067:3:30","nodeType":"YulIdentifier","src":"2067:3:30"},"nativeSrc":"2067:18:30","nodeType":"YulFunctionCall","src":"2067:18:30"},"variableNames":[{"name":"tail","nativeSrc":"2059:4:30","nodeType":"YulIdentifier","src":"2059:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2101:9:30","nodeType":"YulIdentifier","src":"2101:9:30"},{"name":"value0","nativeSrc":"2112:6:30","nodeType":"YulIdentifier","src":"2112:6:30"}],"functionName":{"name":"mstore","nativeSrc":"2094:6:30","nodeType":"YulIdentifier","src":"2094:6:30"},"nativeSrc":"2094:25:30","nodeType":"YulFunctionCall","src":"2094:25:30"},"nativeSrc":"2094:25:30","nodeType":"YulExpressionStatement","src":"2094:25:30"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"1948:177:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2018:9:30","nodeType":"YulTypedName","src":"2018:9:30","type":""},{"name":"value0","nativeSrc":"2029:6:30","nodeType":"YulTypedName","src":"2029:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2040:4:30","nodeType":"YulTypedName","src":"2040:4:30","type":""}],"src":"1948:177:30"},{"body":{"nativeSrc":"2231:102:30","nodeType":"YulBlock","src":"2231:102:30","statements":[{"nativeSrc":"2241:26:30","nodeType":"YulAssignment","src":"2241:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2253:9:30","nodeType":"YulIdentifier","src":"2253:9:30"},{"kind":"number","nativeSrc":"2264:2:30","nodeType":"YulLiteral","src":"2264:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2249:3:30","nodeType":"YulIdentifier","src":"2249:3:30"},"nativeSrc":"2249:18:30","nodeType":"YulFunctionCall","src":"2249:18:30"},"variableNames":[{"name":"tail","nativeSrc":"2241:4:30","nodeType":"YulIdentifier","src":"2241:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2283:9:30","nodeType":"YulIdentifier","src":"2283:9:30"},{"arguments":[{"name":"value0","nativeSrc":"2298:6:30","nodeType":"YulIdentifier","src":"2298:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2314:3:30","nodeType":"YulLiteral","src":"2314:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"2319:1:30","nodeType":"YulLiteral","src":"2319:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2310:3:30","nodeType":"YulIdentifier","src":"2310:3:30"},"nativeSrc":"2310:11:30","nodeType":"YulFunctionCall","src":"2310:11:30"},{"kind":"number","nativeSrc":"2323:1:30","nodeType":"YulLiteral","src":"2323:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2306:3:30","nodeType":"YulIdentifier","src":"2306:3:30"},"nativeSrc":"2306:19:30","nodeType":"YulFunctionCall","src":"2306:19:30"}],"functionName":{"name":"and","nativeSrc":"2294:3:30","nodeType":"YulIdentifier","src":"2294:3:30"},"nativeSrc":"2294:32:30","nodeType":"YulFunctionCall","src":"2294:32:30"}],"functionName":{"name":"mstore","nativeSrc":"2276:6:30","nodeType":"YulIdentifier","src":"2276:6:30"},"nativeSrc":"2276:51:30","nodeType":"YulFunctionCall","src":"2276:51:30"},"nativeSrc":"2276:51:30","nodeType":"YulExpressionStatement","src":"2276:51:30"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2130:203:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2200:9:30","nodeType":"YulTypedName","src":"2200:9:30","type":""},{"name":"value0","nativeSrc":"2211:6:30","nodeType":"YulTypedName","src":"2211:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2222:4:30","nodeType":"YulTypedName","src":"2222:4:30","type":""}],"src":"2130:203:30"},{"body":{"nativeSrc":"2408:177:30","nodeType":"YulBlock","src":"2408:177:30","statements":[{"body":{"nativeSrc":"2454:16:30","nodeType":"YulBlock","src":"2454:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2463:1:30","nodeType":"YulLiteral","src":"2463:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"2466:1:30","nodeType":"YulLiteral","src":"2466:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2456:6:30","nodeType":"YulIdentifier","src":"2456:6:30"},"nativeSrc":"2456:12:30","nodeType":"YulFunctionCall","src":"2456:12:30"},"nativeSrc":"2456:12:30","nodeType":"YulExpressionStatement","src":"2456:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2429:7:30","nodeType":"YulIdentifier","src":"2429:7:30"},{"name":"headStart","nativeSrc":"2438:9:30","nodeType":"YulIdentifier","src":"2438:9:30"}],"functionName":{"name":"sub","nativeSrc":"2425:3:30","nodeType":"YulIdentifier","src":"2425:3:30"},"nativeSrc":"2425:23:30","nodeType":"YulFunctionCall","src":"2425:23:30"},{"kind":"number","nativeSrc":"2450:2:30","nodeType":"YulLiteral","src":"2450:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2421:3:30","nodeType":"YulIdentifier","src":"2421:3:30"},"nativeSrc":"2421:32:30","nodeType":"YulFunctionCall","src":"2421:32:30"},"nativeSrc":"2418:52:30","nodeType":"YulIf","src":"2418:52:30"},{"nativeSrc":"2479:36:30","nodeType":"YulVariableDeclaration","src":"2479:36:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2505:9:30","nodeType":"YulIdentifier","src":"2505:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"2492:12:30","nodeType":"YulIdentifier","src":"2492:12:30"},"nativeSrc":"2492:23:30","nodeType":"YulFunctionCall","src":"2492:23:30"},"variables":[{"name":"value","nativeSrc":"2483:5:30","nodeType":"YulTypedName","src":"2483:5:30","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2549:5:30","nodeType":"YulIdentifier","src":"2549:5:30"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2524:24:30","nodeType":"YulIdentifier","src":"2524:24:30"},"nativeSrc":"2524:31:30","nodeType":"YulFunctionCall","src":"2524:31:30"},"nativeSrc":"2524:31:30","nodeType":"YulExpressionStatement","src":"2524:31:30"},{"nativeSrc":"2564:15:30","nodeType":"YulAssignment","src":"2564:15:30","value":{"name":"value","nativeSrc":"2574:5:30","nodeType":"YulIdentifier","src":"2574:5:30"},"variableNames":[{"name":"value0","nativeSrc":"2564:6:30","nodeType":"YulIdentifier","src":"2564:6:30"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2338:247:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2374:9:30","nodeType":"YulTypedName","src":"2374:9:30","type":""},{"name":"dataEnd","nativeSrc":"2385:7:30","nodeType":"YulTypedName","src":"2385:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2397:6:30","nodeType":"YulTypedName","src":"2397:6:30","type":""}],"src":"2338:247:30"},{"body":{"nativeSrc":"2741:460:30","nodeType":"YulBlock","src":"2741:460:30","statements":[{"nativeSrc":"2751:32:30","nodeType":"YulVariableDeclaration","src":"2751:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2769:9:30","nodeType":"YulIdentifier","src":"2769:9:30"},{"kind":"number","nativeSrc":"2780:2:30","nodeType":"YulLiteral","src":"2780:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2765:3:30","nodeType":"YulIdentifier","src":"2765:3:30"},"nativeSrc":"2765:18:30","nodeType":"YulFunctionCall","src":"2765:18:30"},"variables":[{"name":"tail_1","nativeSrc":"2755:6:30","nodeType":"YulTypedName","src":"2755:6:30","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2799:9:30","nodeType":"YulIdentifier","src":"2799:9:30"},{"kind":"number","nativeSrc":"2810:2:30","nodeType":"YulLiteral","src":"2810:2:30","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2792:6:30","nodeType":"YulIdentifier","src":"2792:6:30"},"nativeSrc":"2792:21:30","nodeType":"YulFunctionCall","src":"2792:21:30"},"nativeSrc":"2792:21:30","nodeType":"YulExpressionStatement","src":"2792:21:30"},{"nativeSrc":"2822:17:30","nodeType":"YulVariableDeclaration","src":"2822:17:30","value":{"name":"tail_1","nativeSrc":"2833:6:30","nodeType":"YulIdentifier","src":"2833:6:30"},"variables":[{"name":"pos","nativeSrc":"2826:3:30","nodeType":"YulTypedName","src":"2826:3:30","type":""}]},{"nativeSrc":"2848:27:30","nodeType":"YulVariableDeclaration","src":"2848:27:30","value":{"arguments":[{"name":"value0","nativeSrc":"2868:6:30","nodeType":"YulIdentifier","src":"2868:6:30"}],"functionName":{"name":"mload","nativeSrc":"2862:5:30","nodeType":"YulIdentifier","src":"2862:5:30"},"nativeSrc":"2862:13:30","nodeType":"YulFunctionCall","src":"2862:13:30"},"variables":[{"name":"length","nativeSrc":"2852:6:30","nodeType":"YulTypedName","src":"2852:6:30","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"2891:6:30","nodeType":"YulIdentifier","src":"2891:6:30"},{"name":"length","nativeSrc":"2899:6:30","nodeType":"YulIdentifier","src":"2899:6:30"}],"functionName":{"name":"mstore","nativeSrc":"2884:6:30","nodeType":"YulIdentifier","src":"2884:6:30"},"nativeSrc":"2884:22:30","nodeType":"YulFunctionCall","src":"2884:22:30"},"nativeSrc":"2884:22:30","nodeType":"YulExpressionStatement","src":"2884:22:30"},{"nativeSrc":"2915:25:30","nodeType":"YulAssignment","src":"2915:25:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2926:9:30","nodeType":"YulIdentifier","src":"2926:9:30"},{"kind":"number","nativeSrc":"2937:2:30","nodeType":"YulLiteral","src":"2937:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2922:3:30","nodeType":"YulIdentifier","src":"2922:3:30"},"nativeSrc":"2922:18:30","nodeType":"YulFunctionCall","src":"2922:18:30"},"variableNames":[{"name":"pos","nativeSrc":"2915:3:30","nodeType":"YulIdentifier","src":"2915:3:30"}]},{"nativeSrc":"2949:29:30","nodeType":"YulVariableDeclaration","src":"2949:29:30","value":{"arguments":[{"name":"value0","nativeSrc":"2967:6:30","nodeType":"YulIdentifier","src":"2967:6:30"},{"kind":"number","nativeSrc":"2975:2:30","nodeType":"YulLiteral","src":"2975:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2963:3:30","nodeType":"YulIdentifier","src":"2963:3:30"},"nativeSrc":"2963:15:30","nodeType":"YulFunctionCall","src":"2963:15:30"},"variables":[{"name":"srcPtr","nativeSrc":"2953:6:30","nodeType":"YulTypedName","src":"2953:6:30","type":""}]},{"nativeSrc":"2987:10:30","nodeType":"YulVariableDeclaration","src":"2987:10:30","value":{"kind":"number","nativeSrc":"2996:1:30","nodeType":"YulLiteral","src":"2996:1:30","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"2991:1:30","nodeType":"YulTypedName","src":"2991:1:30","type":""}]},{"body":{"nativeSrc":"3055:120:30","nodeType":"YulBlock","src":"3055:120:30","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"3076:3:30","nodeType":"YulIdentifier","src":"3076:3:30"},{"arguments":[{"name":"srcPtr","nativeSrc":"3087:6:30","nodeType":"YulIdentifier","src":"3087:6:30"}],"functionName":{"name":"mload","nativeSrc":"3081:5:30","nodeType":"YulIdentifier","src":"3081:5:30"},"nativeSrc":"3081:13:30","nodeType":"YulFunctionCall","src":"3081:13:30"}],"functionName":{"name":"mstore","nativeSrc":"3069:6:30","nodeType":"YulIdentifier","src":"3069:6:30"},"nativeSrc":"3069:26:30","nodeType":"YulFunctionCall","src":"3069:26:30"},"nativeSrc":"3069:26:30","nodeType":"YulExpressionStatement","src":"3069:26:30"},{"nativeSrc":"3108:19:30","nodeType":"YulAssignment","src":"3108:19:30","value":{"arguments":[{"name":"pos","nativeSrc":"3119:3:30","nodeType":"YulIdentifier","src":"3119:3:30"},{"kind":"number","nativeSrc":"3124:2:30","nodeType":"YulLiteral","src":"3124:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3115:3:30","nodeType":"YulIdentifier","src":"3115:3:30"},"nativeSrc":"3115:12:30","nodeType":"YulFunctionCall","src":"3115:12:30"},"variableNames":[{"name":"pos","nativeSrc":"3108:3:30","nodeType":"YulIdentifier","src":"3108:3:30"}]},{"nativeSrc":"3140:25:30","nodeType":"YulAssignment","src":"3140:25:30","value":{"arguments":[{"name":"srcPtr","nativeSrc":"3154:6:30","nodeType":"YulIdentifier","src":"3154:6:30"},{"kind":"number","nativeSrc":"3162:2:30","nodeType":"YulLiteral","src":"3162:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3150:3:30","nodeType":"YulIdentifier","src":"3150:3:30"},"nativeSrc":"3150:15:30","nodeType":"YulFunctionCall","src":"3150:15:30"},"variableNames":[{"name":"srcPtr","nativeSrc":"3140:6:30","nodeType":"YulIdentifier","src":"3140:6:30"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"3017:1:30","nodeType":"YulIdentifier","src":"3017:1:30"},{"name":"length","nativeSrc":"3020:6:30","nodeType":"YulIdentifier","src":"3020:6:30"}],"functionName":{"name":"lt","nativeSrc":"3014:2:30","nodeType":"YulIdentifier","src":"3014:2:30"},"nativeSrc":"3014:13:30","nodeType":"YulFunctionCall","src":"3014:13:30"},"nativeSrc":"3006:169:30","nodeType":"YulForLoop","post":{"nativeSrc":"3028:18:30","nodeType":"YulBlock","src":"3028:18:30","statements":[{"nativeSrc":"3030:14:30","nodeType":"YulAssignment","src":"3030:14:30","value":{"arguments":[{"name":"i","nativeSrc":"3039:1:30","nodeType":"YulIdentifier","src":"3039:1:30"},{"kind":"number","nativeSrc":"3042:1:30","nodeType":"YulLiteral","src":"3042:1:30","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3035:3:30","nodeType":"YulIdentifier","src":"3035:3:30"},"nativeSrc":"3035:9:30","nodeType":"YulFunctionCall","src":"3035:9:30"},"variableNames":[{"name":"i","nativeSrc":"3030:1:30","nodeType":"YulIdentifier","src":"3030:1:30"}]}]},"pre":{"nativeSrc":"3010:3:30","nodeType":"YulBlock","src":"3010:3:30","statements":[]},"src":"3006:169:30"},{"nativeSrc":"3184:11:30","nodeType":"YulAssignment","src":"3184:11:30","value":{"name":"pos","nativeSrc":"3192:3:30","nodeType":"YulIdentifier","src":"3192:3:30"},"variableNames":[{"name":"tail","nativeSrc":"3184:4:30","nodeType":"YulIdentifier","src":"3184:4:30"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"2590:611:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2710:9:30","nodeType":"YulTypedName","src":"2710:9:30","type":""},{"name":"value0","nativeSrc":"2721:6:30","nodeType":"YulTypedName","src":"2721:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2732:4:30","nodeType":"YulTypedName","src":"2732:4:30","type":""}],"src":"2590:611:30"},{"body":{"nativeSrc":"3301:92:30","nodeType":"YulBlock","src":"3301:92:30","statements":[{"nativeSrc":"3311:26:30","nodeType":"YulAssignment","src":"3311:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"3323:9:30","nodeType":"YulIdentifier","src":"3323:9:30"},{"kind":"number","nativeSrc":"3334:2:30","nodeType":"YulLiteral","src":"3334:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3319:3:30","nodeType":"YulIdentifier","src":"3319:3:30"},"nativeSrc":"3319:18:30","nodeType":"YulFunctionCall","src":"3319:18:30"},"variableNames":[{"name":"tail","nativeSrc":"3311:4:30","nodeType":"YulIdentifier","src":"3311:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3353:9:30","nodeType":"YulIdentifier","src":"3353:9:30"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3378:6:30","nodeType":"YulIdentifier","src":"3378:6:30"}],"functionName":{"name":"iszero","nativeSrc":"3371:6:30","nodeType":"YulIdentifier","src":"3371:6:30"},"nativeSrc":"3371:14:30","nodeType":"YulFunctionCall","src":"3371:14:30"}],"functionName":{"name":"iszero","nativeSrc":"3364:6:30","nodeType":"YulIdentifier","src":"3364:6:30"},"nativeSrc":"3364:22:30","nodeType":"YulFunctionCall","src":"3364:22:30"}],"functionName":{"name":"mstore","nativeSrc":"3346:6:30","nodeType":"YulIdentifier","src":"3346:6:30"},"nativeSrc":"3346:41:30","nodeType":"YulFunctionCall","src":"3346:41:30"},"nativeSrc":"3346:41:30","nodeType":"YulExpressionStatement","src":"3346:41:30"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"3206:187:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3270:9:30","nodeType":"YulTypedName","src":"3270:9:30","type":""},{"name":"value0","nativeSrc":"3281:6:30","nodeType":"YulTypedName","src":"3281:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3292:4:30","nodeType":"YulTypedName","src":"3292:4:30","type":""}],"src":"3206:187:30"},{"body":{"nativeSrc":"3515:102:30","nodeType":"YulBlock","src":"3515:102:30","statements":[{"nativeSrc":"3525:26:30","nodeType":"YulAssignment","src":"3525:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"3537:9:30","nodeType":"YulIdentifier","src":"3537:9:30"},{"kind":"number","nativeSrc":"3548:2:30","nodeType":"YulLiteral","src":"3548:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3533:3:30","nodeType":"YulIdentifier","src":"3533:3:30"},"nativeSrc":"3533:18:30","nodeType":"YulFunctionCall","src":"3533:18:30"},"variableNames":[{"name":"tail","nativeSrc":"3525:4:30","nodeType":"YulIdentifier","src":"3525:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3567:9:30","nodeType":"YulIdentifier","src":"3567:9:30"},{"arguments":[{"name":"value0","nativeSrc":"3582:6:30","nodeType":"YulIdentifier","src":"3582:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3598:3:30","nodeType":"YulLiteral","src":"3598:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"3603:1:30","nodeType":"YulLiteral","src":"3603:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3594:3:30","nodeType":"YulIdentifier","src":"3594:3:30"},"nativeSrc":"3594:11:30","nodeType":"YulFunctionCall","src":"3594:11:30"},{"kind":"number","nativeSrc":"3607:1:30","nodeType":"YulLiteral","src":"3607:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3590:3:30","nodeType":"YulIdentifier","src":"3590:3:30"},"nativeSrc":"3590:19:30","nodeType":"YulFunctionCall","src":"3590:19:30"}],"functionName":{"name":"and","nativeSrc":"3578:3:30","nodeType":"YulIdentifier","src":"3578:3:30"},"nativeSrc":"3578:32:30","nodeType":"YulFunctionCall","src":"3578:32:30"}],"functionName":{"name":"mstore","nativeSrc":"3560:6:30","nodeType":"YulIdentifier","src":"3560:6:30"},"nativeSrc":"3560:51:30","nodeType":"YulFunctionCall","src":"3560:51:30"},"nativeSrc":"3560:51:30","nodeType":"YulExpressionStatement","src":"3560:51:30"}]},"name":"abi_encode_tuple_t_contract$_IERC721_$2686__to_t_address__fromStack_reversed","nativeSrc":"3398:219:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3484:9:30","nodeType":"YulTypedName","src":"3484:9:30","type":""},{"name":"value0","nativeSrc":"3495:6:30","nodeType":"YulTypedName","src":"3495:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3506:4:30","nodeType":"YulTypedName","src":"3506:4:30","type":""}],"src":"3398:219:30"},{"body":{"nativeSrc":"3703:170:30","nodeType":"YulBlock","src":"3703:170:30","statements":[{"body":{"nativeSrc":"3749:16:30","nodeType":"YulBlock","src":"3749:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3758:1:30","nodeType":"YulLiteral","src":"3758:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"3761:1:30","nodeType":"YulLiteral","src":"3761:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3751:6:30","nodeType":"YulIdentifier","src":"3751:6:30"},"nativeSrc":"3751:12:30","nodeType":"YulFunctionCall","src":"3751:12:30"},"nativeSrc":"3751:12:30","nodeType":"YulExpressionStatement","src":"3751:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3724:7:30","nodeType":"YulIdentifier","src":"3724:7:30"},{"name":"headStart","nativeSrc":"3733:9:30","nodeType":"YulIdentifier","src":"3733:9:30"}],"functionName":{"name":"sub","nativeSrc":"3720:3:30","nodeType":"YulIdentifier","src":"3720:3:30"},"nativeSrc":"3720:23:30","nodeType":"YulFunctionCall","src":"3720:23:30"},{"kind":"number","nativeSrc":"3745:2:30","nodeType":"YulLiteral","src":"3745:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3716:3:30","nodeType":"YulIdentifier","src":"3716:3:30"},"nativeSrc":"3716:32:30","nodeType":"YulFunctionCall","src":"3716:32:30"},"nativeSrc":"3713:52:30","nodeType":"YulIf","src":"3713:52:30"},{"nativeSrc":"3774:29:30","nodeType":"YulVariableDeclaration","src":"3774:29:30","value":{"arguments":[{"name":"headStart","nativeSrc":"3793:9:30","nodeType":"YulIdentifier","src":"3793:9:30"}],"functionName":{"name":"mload","nativeSrc":"3787:5:30","nodeType":"YulIdentifier","src":"3787:5:30"},"nativeSrc":"3787:16:30","nodeType":"YulFunctionCall","src":"3787:16:30"},"variables":[{"name":"value","nativeSrc":"3778:5:30","nodeType":"YulTypedName","src":"3778:5:30","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3837:5:30","nodeType":"YulIdentifier","src":"3837:5:30"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3812:24:30","nodeType":"YulIdentifier","src":"3812:24:30"},"nativeSrc":"3812:31:30","nodeType":"YulFunctionCall","src":"3812:31:30"},"nativeSrc":"3812:31:30","nodeType":"YulExpressionStatement","src":"3812:31:30"},{"nativeSrc":"3852:15:30","nodeType":"YulAssignment","src":"3852:15:30","value":{"name":"value","nativeSrc":"3862:5:30","nodeType":"YulIdentifier","src":"3862:5:30"},"variableNames":[{"name":"value0","nativeSrc":"3852:6:30","nodeType":"YulIdentifier","src":"3852:6:30"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"3622:251:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3669:9:30","nodeType":"YulTypedName","src":"3669:9:30","type":""},{"name":"dataEnd","nativeSrc":"3680:7:30","nodeType":"YulTypedName","src":"3680:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3692:6:30","nodeType":"YulTypedName","src":"3692:6:30","type":""}],"src":"3622:251:30"},{"body":{"nativeSrc":"4035:214:30","nodeType":"YulBlock","src":"4035:214:30","statements":[{"nativeSrc":"4045:26:30","nodeType":"YulAssignment","src":"4045:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"4057:9:30","nodeType":"YulIdentifier","src":"4057:9:30"},{"kind":"number","nativeSrc":"4068:2:30","nodeType":"YulLiteral","src":"4068:2:30","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4053:3:30","nodeType":"YulIdentifier","src":"4053:3:30"},"nativeSrc":"4053:18:30","nodeType":"YulFunctionCall","src":"4053:18:30"},"variableNames":[{"name":"tail","nativeSrc":"4045:4:30","nodeType":"YulIdentifier","src":"4045:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4087:9:30","nodeType":"YulIdentifier","src":"4087:9:30"},{"arguments":[{"name":"value0","nativeSrc":"4102:6:30","nodeType":"YulIdentifier","src":"4102:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4118:3:30","nodeType":"YulLiteral","src":"4118:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"4123:1:30","nodeType":"YulLiteral","src":"4123:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4114:3:30","nodeType":"YulIdentifier","src":"4114:3:30"},"nativeSrc":"4114:11:30","nodeType":"YulFunctionCall","src":"4114:11:30"},{"kind":"number","nativeSrc":"4127:1:30","nodeType":"YulLiteral","src":"4127:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4110:3:30","nodeType":"YulIdentifier","src":"4110:3:30"},"nativeSrc":"4110:19:30","nodeType":"YulFunctionCall","src":"4110:19:30"}],"functionName":{"name":"and","nativeSrc":"4098:3:30","nodeType":"YulIdentifier","src":"4098:3:30"},"nativeSrc":"4098:32:30","nodeType":"YulFunctionCall","src":"4098:32:30"}],"functionName":{"name":"mstore","nativeSrc":"4080:6:30","nodeType":"YulIdentifier","src":"4080:6:30"},"nativeSrc":"4080:51:30","nodeType":"YulFunctionCall","src":"4080:51:30"},"nativeSrc":"4080:51:30","nodeType":"YulExpressionStatement","src":"4080:51:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4151:9:30","nodeType":"YulIdentifier","src":"4151:9:30"},{"kind":"number","nativeSrc":"4162:2:30","nodeType":"YulLiteral","src":"4162:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4147:3:30","nodeType":"YulIdentifier","src":"4147:3:30"},"nativeSrc":"4147:18:30","nodeType":"YulFunctionCall","src":"4147:18:30"},{"arguments":[{"name":"value1","nativeSrc":"4171:6:30","nodeType":"YulIdentifier","src":"4171:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4187:3:30","nodeType":"YulLiteral","src":"4187:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"4192:1:30","nodeType":"YulLiteral","src":"4192:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4183:3:30","nodeType":"YulIdentifier","src":"4183:3:30"},"nativeSrc":"4183:11:30","nodeType":"YulFunctionCall","src":"4183:11:30"},{"kind":"number","nativeSrc":"4196:1:30","nodeType":"YulLiteral","src":"4196:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4179:3:30","nodeType":"YulIdentifier","src":"4179:3:30"},"nativeSrc":"4179:19:30","nodeType":"YulFunctionCall","src":"4179:19:30"}],"functionName":{"name":"and","nativeSrc":"4167:3:30","nodeType":"YulIdentifier","src":"4167:3:30"},"nativeSrc":"4167:32:30","nodeType":"YulFunctionCall","src":"4167:32:30"}],"functionName":{"name":"mstore","nativeSrc":"4140:6:30","nodeType":"YulIdentifier","src":"4140:6:30"},"nativeSrc":"4140:60:30","nodeType":"YulFunctionCall","src":"4140:60:30"},"nativeSrc":"4140:60:30","nodeType":"YulExpressionStatement","src":"4140:60:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4220:9:30","nodeType":"YulIdentifier","src":"4220:9:30"},{"kind":"number","nativeSrc":"4231:2:30","nodeType":"YulLiteral","src":"4231:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4216:3:30","nodeType":"YulIdentifier","src":"4216:3:30"},"nativeSrc":"4216:18:30","nodeType":"YulFunctionCall","src":"4216:18:30"},{"name":"value2","nativeSrc":"4236:6:30","nodeType":"YulIdentifier","src":"4236:6:30"}],"functionName":{"name":"mstore","nativeSrc":"4209:6:30","nodeType":"YulIdentifier","src":"4209:6:30"},"nativeSrc":"4209:34:30","nodeType":"YulFunctionCall","src":"4209:34:30"},"nativeSrc":"4209:34:30","nodeType":"YulExpressionStatement","src":"4209:34:30"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"3878:371:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3988:9:30","nodeType":"YulTypedName","src":"3988:9:30","type":""},{"name":"value2","nativeSrc":"3999:6:30","nodeType":"YulTypedName","src":"3999:6:30","type":""},{"name":"value1","nativeSrc":"4007:6:30","nodeType":"YulTypedName","src":"4007:6:30","type":""},{"name":"value0","nativeSrc":"4015:6:30","nodeType":"YulTypedName","src":"4015:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4026:4:30","nodeType":"YulTypedName","src":"4026:4:30","type":""}],"src":"3878:371:30"},{"body":{"nativeSrc":"4303:176:30","nodeType":"YulBlock","src":"4303:176:30","statements":[{"nativeSrc":"4313:17:30","nodeType":"YulAssignment","src":"4313:17:30","value":{"arguments":[{"name":"x","nativeSrc":"4325:1:30","nodeType":"YulIdentifier","src":"4325:1:30"},{"name":"y","nativeSrc":"4328:1:30","nodeType":"YulIdentifier","src":"4328:1:30"}],"functionName":{"name":"sub","nativeSrc":"4321:3:30","nodeType":"YulIdentifier","src":"4321:3:30"},"nativeSrc":"4321:9:30","nodeType":"YulFunctionCall","src":"4321:9:30"},"variableNames":[{"name":"diff","nativeSrc":"4313:4:30","nodeType":"YulIdentifier","src":"4313:4:30"}]},{"body":{"nativeSrc":"4362:111:30","nodeType":"YulBlock","src":"4362:111:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4383:1:30","nodeType":"YulLiteral","src":"4383:1:30","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4390:3:30","nodeType":"YulLiteral","src":"4390:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"4395:10:30","nodeType":"YulLiteral","src":"4395:10:30","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4386:3:30","nodeType":"YulIdentifier","src":"4386:3:30"},"nativeSrc":"4386:20:30","nodeType":"YulFunctionCall","src":"4386:20:30"}],"functionName":{"name":"mstore","nativeSrc":"4376:6:30","nodeType":"YulIdentifier","src":"4376:6:30"},"nativeSrc":"4376:31:30","nodeType":"YulFunctionCall","src":"4376:31:30"},"nativeSrc":"4376:31:30","nodeType":"YulExpressionStatement","src":"4376:31:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4427:1:30","nodeType":"YulLiteral","src":"4427:1:30","type":"","value":"4"},{"kind":"number","nativeSrc":"4430:4:30","nodeType":"YulLiteral","src":"4430:4:30","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"4420:6:30","nodeType":"YulIdentifier","src":"4420:6:30"},"nativeSrc":"4420:15:30","nodeType":"YulFunctionCall","src":"4420:15:30"},"nativeSrc":"4420:15:30","nodeType":"YulExpressionStatement","src":"4420:15:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4455:1:30","nodeType":"YulLiteral","src":"4455:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"4458:4:30","nodeType":"YulLiteral","src":"4458:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4448:6:30","nodeType":"YulIdentifier","src":"4448:6:30"},"nativeSrc":"4448:15:30","nodeType":"YulFunctionCall","src":"4448:15:30"},"nativeSrc":"4448:15:30","nodeType":"YulExpressionStatement","src":"4448:15:30"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"4345:4:30","nodeType":"YulIdentifier","src":"4345:4:30"},{"name":"x","nativeSrc":"4351:1:30","nodeType":"YulIdentifier","src":"4351:1:30"}],"functionName":{"name":"gt","nativeSrc":"4342:2:30","nodeType":"YulIdentifier","src":"4342:2:30"},"nativeSrc":"4342:11:30","nodeType":"YulFunctionCall","src":"4342:11:30"},"nativeSrc":"4339:134:30","nodeType":"YulIf","src":"4339:134:30"}]},"name":"checked_sub_t_uint256","nativeSrc":"4254:225:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4285:1:30","nodeType":"YulTypedName","src":"4285:1:30","type":""},{"name":"y","nativeSrc":"4288:1:30","nodeType":"YulTypedName","src":"4288:1:30","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"4294:4:30","nodeType":"YulTypedName","src":"4294:4:30","type":""}],"src":"4254:225:30"},{"body":{"nativeSrc":"4516:95:30","nodeType":"YulBlock","src":"4516:95:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4533:1:30","nodeType":"YulLiteral","src":"4533:1:30","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4540:3:30","nodeType":"YulLiteral","src":"4540:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"4545:10:30","nodeType":"YulLiteral","src":"4545:10:30","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4536:3:30","nodeType":"YulIdentifier","src":"4536:3:30"},"nativeSrc":"4536:20:30","nodeType":"YulFunctionCall","src":"4536:20:30"}],"functionName":{"name":"mstore","nativeSrc":"4526:6:30","nodeType":"YulIdentifier","src":"4526:6:30"},"nativeSrc":"4526:31:30","nodeType":"YulFunctionCall","src":"4526:31:30"},"nativeSrc":"4526:31:30","nodeType":"YulExpressionStatement","src":"4526:31:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4573:1:30","nodeType":"YulLiteral","src":"4573:1:30","type":"","value":"4"},{"kind":"number","nativeSrc":"4576:4:30","nodeType":"YulLiteral","src":"4576:4:30","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"4566:6:30","nodeType":"YulIdentifier","src":"4566:6:30"},"nativeSrc":"4566:15:30","nodeType":"YulFunctionCall","src":"4566:15:30"},"nativeSrc":"4566:15:30","nodeType":"YulExpressionStatement","src":"4566:15:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4597:1:30","nodeType":"YulLiteral","src":"4597:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"4600:4:30","nodeType":"YulLiteral","src":"4600:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4590:6:30","nodeType":"YulIdentifier","src":"4590:6:30"},"nativeSrc":"4590:15:30","nodeType":"YulFunctionCall","src":"4590:15:30"},"nativeSrc":"4590:15:30","nodeType":"YulExpressionStatement","src":"4590:15:30"}]},"name":"panic_error_0x32","nativeSrc":"4484:127:30","nodeType":"YulFunctionDefinition","src":"4484:127:30"},{"body":{"nativeSrc":"4648:95:30","nodeType":"YulBlock","src":"4648:95:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4665:1:30","nodeType":"YulLiteral","src":"4665:1:30","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4672:3:30","nodeType":"YulLiteral","src":"4672:3:30","type":"","value":"224"},{"kind":"number","nativeSrc":"4677:10:30","nodeType":"YulLiteral","src":"4677:10:30","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4668:3:30","nodeType":"YulIdentifier","src":"4668:3:30"},"nativeSrc":"4668:20:30","nodeType":"YulFunctionCall","src":"4668:20:30"}],"functionName":{"name":"mstore","nativeSrc":"4658:6:30","nodeType":"YulIdentifier","src":"4658:6:30"},"nativeSrc":"4658:31:30","nodeType":"YulFunctionCall","src":"4658:31:30"},"nativeSrc":"4658:31:30","nodeType":"YulExpressionStatement","src":"4658:31:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4705:1:30","nodeType":"YulLiteral","src":"4705:1:30","type":"","value":"4"},{"kind":"number","nativeSrc":"4708:4:30","nodeType":"YulLiteral","src":"4708:4:30","type":"","value":"0x31"}],"functionName":{"name":"mstore","nativeSrc":"4698:6:30","nodeType":"YulIdentifier","src":"4698:6:30"},"nativeSrc":"4698:15:30","nodeType":"YulFunctionCall","src":"4698:15:30"},"nativeSrc":"4698:15:30","nodeType":"YulExpressionStatement","src":"4698:15:30"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4729:1:30","nodeType":"YulLiteral","src":"4729:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"4732:4:30","nodeType":"YulLiteral","src":"4732:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4722:6:30","nodeType":"YulIdentifier","src":"4722:6:30"},"nativeSrc":"4722:15:30","nodeType":"YulFunctionCall","src":"4722:15:30"},"nativeSrc":"4722:15:30","nodeType":"YulExpressionStatement","src":"4722:15:30"}]},"name":"panic_error_0x31","nativeSrc":"4616:127:30","nodeType":"YulFunctionDefinition","src":"4616:127:30"}]},"contents":"{\n { }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let value_2 := 0\n value_2 := calldataload(add(headStart, 64))\n value2 := value_2\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_1, 32)\n value4 := length\n }\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, shl(224, 0xffffffff)))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, 32)\n srcPtr := add(srcPtr, 32)\n }\n tail := pos\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_contract$_IERC721_$2686__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n mstore(add(headStart, 64), value2)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}","id":30,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"9788":[{"length":32,"start":670},{"length":32,"start":880},{"length":32,"start":1047},{"length":32,"start":1271},{"length":32,"start":1783},{"length":32,"start":2158},{"length":32,"start":2565},{"length":32,"start":2776}]},"linkReferences":{},"object":"608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063715018a61161009e578063a694fc3a1161006e578063a694fc3a1461025c578063baa51f861461026f578063d56d229d14610299578063e30c3978146102c0578063f2fde38b146102d1575f80fd5b8063715018a61461023457806379ba50971461023c5780638456cb59146102445780638da5cb5b1461024c575f80fd5b80632b4bc300116100e45780632b4bc300146101c85780632e17de78146101e85780632f940c70146101fb5780633f4ba83a1461020e5780635c975abb14610216575f80fd5b80630fa6f64214610115578063150b7a021461012a5780631b3253b01461015b5780631dcac94d14610188575b5f80fd5b610128610123366004610f2b565b6102e4565b005b61013d610138366004610f59565b6104db565b6040516001600160e01b031990911681526020015b60405180910390f35b61017a610169366004610ff2565b5f9081526003602052604090205490565b604051908152602001610152565b6101b0610196366004610ff2565b5f908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b6101db6101d6366004611009565b610607565b604051610152919061102b565b6101286101f6366004610ff2565b610670565b610128610209366004610f2b565b6107af565b610128610939565b600154600160a01b900460ff165b6040519015158152602001610152565b61012861094b565b61012861095c565b6101286109a2565b5f546001600160a01b03166101b0565b61012861026a366004610ff2565b6109b2565b61022461027d366004610ff2565b5f908152600260205260409020546001600160a01b0316151590565b6101b07f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b03166101b0565b6101286102df366004611009565b610b7a565b6102ec610bea565b6102f4610c16565b6001600160a01b03811661031b5760405163d92e233d60e01b815260040160405180910390fd5b5f828152600260205260409020546001600160a01b031615610350576040516382d272e360e01b815260040160405180910390fd5b6040516331a9108f60e11b81526004810183905230906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156103b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d9919061106d565b6001600160a01b03161461040057604051636bcd243760e11b815260040160405180910390fd5b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061045090309085908790600401611088565b5f604051808303815f87803b158015610467575f80fd5b505af1158015610479573d5f803e3d5ffd5b5050505081816001600160a01b03167fc27a1277308b3908a0fb998812a60b1da8911b8583f20bf8f98e5246db8c47ef426040516104b991815260200190565b60405180910390a36104d760015f805160206110fa83398151915255565b5050565b5f6104e4610c16565b6104ec610c31565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105355760405163de1db39560e01b815260040160405180910390fd5b6001600160a01b03851661055c5760405163d92e233d60e01b815260040160405180910390fd5b5f848152600260205260409020546001600160a01b031615610591576040516316e9ad8f60e01b815260040160405180910390fd5b61059b8585610c5c565b83856001600160a01b03167f6173e4d2d9dd52aae0ed37afed3adcf924a490639b759ca93d32dc43366c17d2426040516105d791815260200190565b60405180910390a350630a85bd0160e11b6105fe60015f805160206110fa83398151915255565b95945050505050565b6001600160a01b0381165f9081526004602090815260409182902080548351818402810184019094528084526060939283018282801561066457602002820191905f5260205f20905b815481526020019060010190808311610650575b50505050509050919050565b610678610c16565b5f818152600260205260409020546001600160a01b0316806106ad57604051630a49bbc360e21b815260040160405180910390fd5b6001600160a01b03811633146106d6576040516332dc95cb60e01b815260040160405180910390fd5b6106e08183610cc0565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061073090309033908790600401611088565b5f604051808303815f87803b158015610747575f80fd5b505af1158015610759573d5f803e3d5ffd5b50506040514281528492503391507f563fc70fca9d440d883299c76a721644d5aca7c45df98aeb5292c4cb823579bf906020015b60405180910390a3506107ac60015f805160206110fa83398151915255565b50565b6107b7610bea565b6107bf610c16565b5f828152600260205260409020546001600160a01b0316806107f457604051630a49bbc360e21b815260040160405180910390fd5b6001600160a01b03821661081b5760405163d92e233d60e01b815260040160405180910390fd5b806001600160a01b0316826001600160a01b03161461084d5760405163c56a390560e01b815260040160405180910390fd5b6108578184610cc0565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906108a790309086908890600401611088565b5f604051808303815f87803b1580156108be575f80fd5b505af11580156108d0573d5f803e3d5ffd5b50505050816001600160a01b031683826001600160a01b03167ff4408f2b7cb3bb2b43ddb3715579eae68a12af5f2e6d938537db2be5e72f5f7d4260405161091a91815260200190565b60405180910390a4506104d760015f805160206110fa83398151915255565b610941610bea565b610949610cf0565b565b610953610bea565b6109495f610d45565b60015433906001600160a01b031681146109995760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6107ac81610d45565b6109aa610bea565b610949610d5e565b6109ba610c16565b6109c2610c31565b5f8181526002602052604090205433906001600160a01b0316156109f9576040516316e9ad8f60e01b815260040160405180910390fd5b806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e846040518263ffffffff1660e01b8152600401610a5191815260200190565b602060405180830381865afa158015610a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a90919061106d565b6001600160a01b031614610ab7576040516359dc379f60e01b815260040160405180910390fd5b610ac18183610c5c565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610b1190849030908790600401611088565b5f604051808303815f87803b158015610b28575f80fd5b505af1158015610b3a573d5f803e3d5ffd5b5050505081816001600160a01b03167f6173e4d2d9dd52aae0ed37afed3adcf924a490639b759ca93d32dc43366c17d24260405161078d91815260200190565b610b82610bea565b600180546001600160a01b0383166001600160a01b03199091168117909155610bb25f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f546001600160a01b031633146109495760405163118cdaa760e01b8152336004820152602401610990565b610c1e610da1565b60025f805160206110fa83398151915255565b600154600160a01b900460ff16156109495760405163d93c066560e01b815260040160405180910390fd5b5f81815260026020908152604080832080546001600160a01b039096166001600160a01b0319909616861790556003825280832042905593825260048082528483208054858552600584529584208690559082526001850181558252902090910155565b5f81815260026020908152604080832080546001600160a01b031916905560039091528120556104d78282610dd0565b610cf8610e9e565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600180546001600160a01b03191690556107ac81610ec8565b610d66610c31565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d283390565b5f805160206110fa8339815191525460020361094957604051633ee5aeb560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526004602090815260408083208484526005909252822054815491929091610e07906001906110ac565b9050808214610e60575f838281548110610e2357610e236110d1565b905f5260205f200154905080848481548110610e4157610e416110d1565b5f91825260208083209091019290925591825260059052604090208290555b82805480610e7057610e706110e5565b600190038181905f5260205f20015f9055905560055f8581526020019081526020015f205f90555050505050565b600154600160a01b900460ff1661094957604051638dfc202b60e01b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146107ac575f80fd5b5f8060408385031215610f3c575f80fd5b823591506020830135610f4e81610f17565b809150509250929050565b5f805f805f60808688031215610f6d575f80fd5b8535610f7881610f17565b94506020860135610f8881610f17565b935060408601359250606086013567ffffffffffffffff811115610faa575f80fd5b8601601f81018813610fba575f80fd5b803567ffffffffffffffff811115610fd0575f80fd5b886020828401011115610fe1575f80fd5b959894975092955050506020019190565b5f60208284031215611002575f80fd5b5035919050565b5f60208284031215611019575f80fd5b813561102481610f17565b9392505050565b602080825282518282018190525f918401906040840190835b81811015611062578351835260209384019390920191600101611044565b509095945050505050565b5f6020828403121561107d575f80fd5b815161102481610f17565b6001600160a01b039384168152919092166020820152604081019190915260600190565b818103818111156110cb57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220f8e5afe3df2897c05bd05e17e152d07acba805eed0e132300174b368b573437b64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x111 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x9E JUMPI DUP1 PUSH4 0xA694FC3A GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xA694FC3A EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xBAA51F86 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xD56D229D EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2D1 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x24C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2B4BC300 GT PUSH2 0xE4 JUMPI DUP1 PUSH4 0x2B4BC300 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x2E17DE78 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x216 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xFA6F642 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0x1B3253B0 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0x1DCAC94D EQ PUSH2 0x188 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0xF59 JUMP JUMPDEST PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17A PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x1B0 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1009 JUMP JUMPDEST PUSH2 0x607 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x152 SWAP2 SWAP1 PUSH2 0x102B JUMP JUMPDEST PUSH2 0x128 PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x670 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x7AF JUMP JUMPDEST PUSH2 0x128 PUSH2 0x939 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x94B JUMP JUMPDEST PUSH2 0x128 PUSH2 0x95C JUMP JUMPDEST PUSH2 0x128 PUSH2 0x9A2 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x9B2 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x27D CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1B0 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x1009 JUMP JUMPDEST PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x2EC PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0xC16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x31B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x350 JUMPI PUSH1 0x40 MLOAD PUSH4 0x82D272E3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D9 SWAP2 SWAP1 PUSH2 0x106D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x400 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6BCD2437 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x450 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x467 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x479 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC27A1277308B3908A0FB998812A60B1DA8911B8583F20BF8F98E5246DB8C47EF TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x4B9 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x4D7 PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4E4 PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x4EC PUSH2 0xC31 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x535 JUMPI PUSH1 0x40 MLOAD PUSH4 0xDE1DB395 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x55C JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x591 JUMPI PUSH1 0x40 MLOAD PUSH4 0x16E9AD8F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x59B DUP6 DUP6 PUSH2 0xC5C JUMP JUMPDEST DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6173E4D2D9DD52AAE0ED37AFED3ADCF924A490639B759CA93D32DC43366C17D2 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x5D7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x5FE PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x650 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x678 PUSH2 0xC16 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH4 0xA49BBC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x6D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32DC95CB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6E0 DUP2 DUP4 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x730 SWAP1 ADDRESS SWAP1 CALLER SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x747 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x759 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD TIMESTAMP DUP2 MSTORE DUP5 SWAP3 POP CALLER SWAP2 POP PUSH32 0x563FC70FCA9D440D883299C76A721644D5ACA7C45DF98AEB5292C4CB823579BF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x7AC PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x7B7 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x7BF PUSH2 0xC16 JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x7F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA49BBC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x81B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x84D JUMPI PUSH1 0x40 MLOAD PUSH4 0xC56A3905 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x857 DUP2 DUP5 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x8A7 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8D0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF4408F2B7CB3BB2B43DDB3715579EAE68A12AF5F2E6D938537DB2BE5E72F5F7D TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x91A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH2 0x4D7 PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH2 0x941 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH2 0xCF0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x953 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH0 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x1 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 EQ PUSH2 0x999 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7AC DUP2 PUSH2 0xD45 JUMP JUMPDEST PUSH2 0x9AA PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x9BA PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x9C2 PUSH2 0xC31 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x16E9AD8F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6352211E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA51 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA6C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA90 SWAP2 SWAP1 PUSH2 0x106D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x59DC379F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAC1 DUP2 DUP4 PUSH2 0xC5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0xB11 SWAP1 DUP5 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB28 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6173E4D2D9DD52AAE0ED37AFED3ADCF924A490639B759CA93D32DC43366C17D2 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x78D SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xB82 PUSH2 0xBEA JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0xBB2 PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x990 JUMP JUMPDEST PUSH2 0xC1E PUSH2 0xDA1 JUMP JUMPDEST PUSH1 0x2 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP7 AND DUP7 OR SWAP1 SSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 TIMESTAMP SWAP1 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD DUP6 DUP6 MSTORE PUSH1 0x5 DUP5 MSTORE SWAP6 DUP5 KECCAK256 DUP7 SWAP1 SSTORE SWAP1 DUP3 MSTORE PUSH1 0x1 DUP6 ADD DUP2 SSTORE DUP3 MSTORE SWAP1 KECCAK256 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SSTORE PUSH2 0x4D7 DUP3 DUP3 PUSH2 0xDD0 JUMP JUMPDEST PUSH2 0xCF8 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x7AC DUP2 PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0xD66 PUSH2 0xC31 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0xD28 CALLER SWAP1 JUMP JUMPDEST PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x2 SUB PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD DUP2 SLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH2 0xE07 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x10AC JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0xE60 JUMPI PUSH0 DUP4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE23 JUMPI PUSH2 0xE23 PUSH2 0x10D1 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xE41 JUMPI PUSH2 0xE41 PUSH2 0x10D1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST DUP3 DUP1 SLOAD DUP1 PUSH2 0xE70 JUMPI PUSH2 0xE70 PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x5 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7AC JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF3C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xF4E DUP2 PUSH2 0xF17 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xF6D JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xF78 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xF88 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFAA JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x1F DUP2 ADD DUP9 SGT PUSH2 0xFBA JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFD0 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xFE1 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 POP POP POP PUSH1 0x20 ADD SWAP2 SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1002 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1019 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1024 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1062 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1044 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x107D JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1024 DUP2 PUSH2 0xF17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x10CB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID SWAP12 PUSH24 0x9B17422D0DF92223018B32B4D1FA46E071723D6817E2486D STOP EXTCODESIZE 0xEC 0xC5 PUSH0 STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0xE5 0xAF 0xE3 0xDF 0x28 SWAP8 0xC0 JUMPDEST 0xD0 MCOPY OR 0xE1 MSTORE 0xD0 PUSH27 0xCBA805EED0E132300174B368B573437B64736F6C634300081A0033 ","sourceMap":"1462:12831:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10346:460;;;;;;:::i;:::-;;:::i;:::-;;7482:571;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;1672:33:30;;;1654:52;;1642:2;1627:18;7482:571:28;;;;;;;;12193:111;;;;;;:::i;:::-;12253:7;12279:18;;;:9;:18;;;;;;;12193:111;;;;2094:25:30;;;2082:2;2067:18;12193:111:28;1948:177:30;11887:114:28;;;;;;:::i;:::-;11950:7;11976:18;;;:9;:18;;;;;;-1:-1:-1;;;;;11976:18:28;;11887:114;;;;-1:-1:-1;;;;;2294:32:30;;;2276:51;;2264:2;2249:18;11887:114:28;2130:203:30;12753:135:28;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8283:437::-;;;;;;:::i;:::-;;:::i;9467:561::-;;;;;;:::i;:::-;;:::i;11167:65::-;;;:::i;1726:84:18:-;1796:7;;-1:-1:-1;;;1796:7:18;;;;1726:84;;;3371:14:30;;3364:22;3346:41;;3334:2;3319:18;1726:84:18;3206:187:30;2293:101:2;;;:::i;2244:229:3:-;;;:::i;11066:61:28:-;;;:::i;1638:85:2:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:2;1638:85;;6381:430:28;;;;;;:::i;:::-;;:::i;11573:120::-;;;;;;:::i;:::-;11631:4;11654:18;;;:9;:18;;;;;;-1:-1:-1;;;;;11654:18:28;:32;;;11573:120;4770:36;;;;;1232:99:3;1311:13;;-1:-1:-1;;;;;1311:13:3;1232:99;;1649:178;;;;;;:::i;:::-;;:::i;10346:460:28:-;1531:13:2;:11;:13::i;:::-;3023:21:19::1;:19;:21::i;:::-;-1:-1:-1::0;;;;;10458:23:28;::::2;10454:49;;10490:13;;-1:-1:-1::0;;;10490:13:28::2;;;;;;;;;;;10454:49;10547:1;10517:18:::0;;;:9:::2;:18;::::0;;;;;-1:-1:-1;;;;;10517:18:28::2;:32:::0;10513:61:::2;;10558:16;;-1:-1:-1::0;;;10558:16:28::2;;;;;;;;;;;10513:61;10588:28;::::0;-1:-1:-1;;;10588:28:28;;::::2;::::0;::::2;2094:25:30::0;;;10628:4:28::2;::::0;-1:-1:-1;;;;;10588:11:28::2;:19;::::0;::::2;::::0;2067:18:30;;10588:28:28::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10588:45:28::2;;10584:72;;10642:14;;-1:-1:-1::0;;;10642:14:28::2;;;;;;;;;;;10584:72;10667:59;::::0;-1:-1:-1;;;10667:59:28;;-1:-1:-1;;;;;10667:11:28::2;:24;::::0;::::2;::::0;:59:::2;::::0;10700:4:::2;::::0;10707:9;;10718:7;;10667:59:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;10774:7;10763:9;-1:-1:-1::0;;;;;10741:58:28::2;;10783:15;10741:58;;;;2094:25:30::0;;2082:2;2067:18;;1948:177;10741:58:28::2;;;;;;;;3065:20:19::1;2365:1:::0;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20:::1;10346:460:28::0;;:::o;7482:571::-;7673:6;3023:21:19;:19;:21::i;:::-;1350:19:18::1;:17;:19::i;:::-;7695:10:28::2;-1:-1:-1::0;;;;;7717:11:28::2;7695:34;;7691:71;;7738:24;;-1:-1:-1::0;;;7738:24:28::2;;;;;;;;;;;7691:71;-1:-1:-1::0;;;;;7776:18:28;::::2;7772:44;;7803:13;;-1:-1:-1::0;;;7803:13:28::2;;;;;;;;;;;7772:44;7860:1;7830:18:::0;;;:9:::2;:18;::::0;;;;;-1:-1:-1;;;;;7830:18:28::2;:32:::0;7826:65:::2;;7871:20;;-1:-1:-1::0;;;7871:20:28::2;;;;;;;;;;;7826:65;7902:27;7915:4;7921:7;7902:12;:27::i;:::-;7962:7;7956:4;-1:-1:-1::0;;;;;7944:43:28::2;;7971:15;7944:43;;;;2094:25:30::0;;2082:2;2067:18;;1948:177;7944:43:28::2;;;;;;;;-1:-1:-1::0;;;;3065:20:19;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20;7482:571:28;;;;;;;:::o;12753:135::-;-1:-1:-1;;;;;12858:23:28;;;;;;:15;:23;;;;;;;;;12851:30;;;;;;;;;;;;;;;;;12823:16;;12851:30;;;12858:23;12851:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12753:135;;;:::o;8283:437::-;3023:21:19;:19;:21::i;:::-;8349:22:28::1;8374:18:::0;;;:9:::1;:18;::::0;;;;;-1:-1:-1;;;;;8374:18:28::1;::::0;8402:57:::1;;8443:16;;-1:-1:-1::0;;;8443:16:28::1;;;;;;;;;;;8402:57;-1:-1:-1::0;;;;;8473:28:28;::::1;8491:10;8473:28;8469:60;;8510:19;;-1:-1:-1::0;;;8510:19:28::1;;;;;;;;;;;8469:60;8540:36;8552:14;8568:7;8540:11;:36::i;:::-;8586:60;::::0;-1:-1:-1;;;8586:60:28;;-1:-1:-1;;;;;8586:11:28::1;:24;::::0;::::1;::::0;:60:::1;::::0;8619:4:::1;::::0;8626:10:::1;::::0;8638:7;;8586:60:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8662:51:28::1;::::0;8697:15:::1;2094:25:30::0;;8688:7:28;;-1:-1:-1;8676:10:28::1;::::0;-1:-1:-1;8662:51:28::1;::::0;2082:2:30;2067:18;8662:51:28::1;;;;;;;;8339:381;3065:20:19::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20;8283:437:28;:::o;9467:561::-;1531:13:2;:11;:13::i;:::-;3023:21:19::1;:19;:21::i;:::-;9572:22:28::2;9597:18:::0;;;:9:::2;:18;::::0;;;;;-1:-1:-1;;;;;9597:18:28::2;::::0;9625:57:::2;;9666:16;;-1:-1:-1::0;;;9666:16:28::2;;;;;;;;;;;9625:57;-1:-1:-1::0;;;;;9696:23:28;::::2;9692:49;;9728:13;;-1:-1:-1::0;;;9728:13:28::2;;;;;;;;;;;9692:49;9768:14;-1:-1:-1::0;;;;;9755:27:28::2;:9;-1:-1:-1::0;;;;;9755:27:28::2;;9751:67;;9791:27;;-1:-1:-1::0;;;9791:27:28::2;;;;;;;;;;;9751:67;9829:36;9841:14;9857:7;9829:11;:36::i;:::-;9875:59;::::0;-1:-1:-1;;;9875:59:28;;-1:-1:-1;;;;;9875:11:28::2;:24;::::0;::::2;::::0;:59:::2;::::0;9908:4:::2;::::0;9915:9;;9926:7;;9875:59:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;9994:9;-1:-1:-1::0;;;;;9950:71:28::2;9985:7;9969:14;-1:-1:-1::0;;;;;9950:71:28::2;;10005:15;9950:71;;;;2094:25:30::0;;2082:2;2067:18;;1948:177;9950:71:28::2;;;;;;;;9562:466;3065:20:19::1;2365:1:::0;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;11167:65:28;1531:13:2;:11;:13::i;:::-;11215:10:28::1;:8;:10::i;:::-;11167:65::o:0;2293:101:2:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;2244:229:3:-:0;1311:13;;735:10:16;;-1:-1:-1;;;;;1311:13:3;2339:24;;2335:96;;2386:34;;-1:-1:-1;;;2386:34:3;;-1:-1:-1;;;;;2294:32:30;;2386:34:3;;;2276:51:30;2249:18;;2386:34:3;;;;;;;;2335:96;2440:26;2459:6;2440:18;:26::i;11066:61:28:-;1531:13:2;:11;:13::i;:::-;11112:8:28::1;:6;:8::i;6381:430::-:0;3023:21:19;:19;:21::i;:::-;1350:19:18::1;:17;:19::i;:::-;6459:14:28::2;6500:18:::0;;;:9:::2;:18;::::0;;;;;6476:10:::2;::::0;-1:-1:-1;;;;;6500:18:28::2;:32:::0;6496:65:::2;;6541:20;;-1:-1:-1::0;;;6541:20:28::2;;;;;;;;;;;6496:65;6607:6;-1:-1:-1::0;;;;;6575:38:28::2;:11;-1:-1:-1::0;;;;;6575:19:28::2;;6595:7;6575:28;;;;;;;;;;;;;2094:25:30::0;;2082:2;2067:18;;1948:177;6575:28:28::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6575:38:28::2;;6571:66;;6622:15;;-1:-1:-1::0;;;6622:15:28::2;;;;;;;;;;;6571:66;6648:29;6661:6;6669:7;6648:12;:29::i;:::-;6687:56;::::0;-1:-1:-1;;;6687:56:28;;-1:-1:-1;;;;;6687:11:28::2;:24;::::0;::::2;::::0;:56:::2;::::0;6712:6;;6728:4:::2;::::0;6735:7;;6687:56:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;6779:7;6771:6;-1:-1:-1::0;;;;;6759:45:28::2;;6788:15;6759:45;;;;2094:25:30::0;;2082:2;2067:18;;1948:177;1649:178:3;1531:13:2;:11;:13::i;:::-;1738::3::1;:24:::0;;-1:-1:-1;;;;;1738:24:3;::::1;-1:-1:-1::0;;;;;;1738:24:3;;::::1;::::0;::::1;::::0;;;1802:7:::1;1684::2::0;1710:6;-1:-1:-1;;;;;1710:6:2;;1638:85;1802:7:3::1;-1:-1:-1::0;;;;;1777:43:3::1;;;;;;;;;;;1649:178:::0;:::o;1796:162:2:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:2;735:10:16;1855:23:2;1851:101;;1901:40;;-1:-1:-1;;;1901:40:2;;735:10:16;1901:40:2;;;2276:51:30;2249:18;;1901:40:2;2130:203:30;3749:292:19;3872:25;:23;:25::i;:::-;2407:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292::o;1878:128:18:-;1796:7;;-1:-1:-1;;;1796:7:18;;;;1939:61;;;1974:15;;-1:-1:-1;;;1974:15:18;;;;;;;;;;;13158:270:28;13232:18;;;;:9;:18;;;;;;;;:27;;-1:-1:-1;;;;;13232:27:28;;;-1:-1:-1;;;;;;13232:27:28;;;;;;;13269:9;:18;;;;;13290:15;13269:36;;13344:23;;;:15;:23;;;;;;:30;;13315:26;;;:17;:26;;;;;:59;;;13384:23;;;13232:27;13384:37;;;;;;;;;;;;13158:270::o;13514:184::-;13594:18;;;;:9;:18;;;;;;;;13587:25;;-1:-1:-1;;;;;;13587:25:28;;;13629:9;:18;;;;;13622:25;13657:34;13675:6;13604:7;13657:17;:34::i;2586:117:18:-;1597:16;:14;:16::i;:::-;2644:7:::1;:15:::0;;-1:-1:-1;;;;2644:15:18::1;::::0;;2674:22:::1;735:10:16::0;2683:12:18::1;2674:22;::::0;-1:-1:-1;;;;;2294:32:30;;;2276:51;;2264:2;2249:18;2674:22:18::1;;;;;;;2586:117::o:0;2011:153:3:-;2100:13;2093:20;;-1:-1:-1;;;;;;2093:20:3;;;2123:34;2148:8;2123:24;:34::i;2339:115:18:-;1350:19;:17;:19::i;:::-;2408:4:::1;2398:14:::0;;-1:-1:-1;;;;2398:14:18::1;-1:-1:-1::0;;;2398:14:18::1;::::0;;2427:20:::1;2434:12;735:10:16::0;;656:96;3586:157:19;-1:-1:-1;;;;;;;;;;;4560:52:19;2407:1;4560:63;3644:93;;3696:30;;-1:-1:-1;;;3696:30:19;;;;;;;;;;;13799:492:28;-1:-1:-1;;;;;13905:23:28;;13878:24;13905:23;;;:15;:23;;;;;;;;13954:26;;;:17;:26;;;;;;14010:13;;13905:23;;13954:26;;14010:17;;14026:1;;14010:17;:::i;:::-;13990:37;;14051:9;14042:5;:18;14038:181;;14076:19;14098:6;14105:9;14098:17;;;;;;;;:::i;:::-;;;;;;;;;14076:39;;14145:11;14129:6;14136:5;14129:13;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;;14170:30;;;:17;:30;;;;;:38;;;14038:181;14229:6;:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14258:17;:26;14276:7;14258:26;;;;;;;;;;;14251:33;;;13868:423;;;13799:492;;:::o;2078:126:18:-;1796:7;;-1:-1:-1;;;1796:7:18;;;;2136:62;;2172:15;;-1:-1:-1;;;2172:15:18;;;;;;;;;;;2912:187:2;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:2;;;-1:-1:-1;;;;;;3020:17:2;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:131:30:-;-1:-1:-1;;;;;89:31:30;;79:42;;69:70;;135:1;132;125:12;150:367;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;340:23;;;-1:-1:-1;439:2:30;424:18;;411:32;452:33;411:32;452:33;:::i;:::-;504:7;494:17;;;150:367;;;;;:::o;522:983::-;619:6;627;635;643;651;704:3;692:9;683:7;679:23;675:33;672:53;;;721:1;718;711:12;672:53;760:9;747:23;779:31;804:5;779:31;:::i;:::-;829:5;-1:-1:-1;886:2:30;871:18;;858:32;899:33;858:32;899:33;:::i;:::-;951:7;-1:-1:-1;1031:2:30;1016:18;;1003:32;;-1:-1:-1;1112:2:30;1097:18;;1084:32;1139:18;1128:30;;1125:50;;;1171:1;1168;1161:12;1125:50;1194:22;;1247:4;1239:13;;1235:27;-1:-1:-1;1225:55:30;;1276:1;1273;1266:12;1225:55;1316:2;1303:16;1342:18;1334:6;1331:30;1328:50;;;1374:1;1371;1364:12;1328:50;1419:7;1414:2;1405:6;1401:2;1397:15;1393:24;1390:37;1387:57;;;1440:1;1437;1430:12;1387:57;522:983;;;;-1:-1:-1;522:983:30;;-1:-1:-1;;;1471:2:30;1463:11;;1493:6;522:983::o;1717:226::-;1776:6;1829:2;1817:9;1808:7;1804:23;1800:32;1797:52;;;1845:1;1842;1835:12;1797:52;-1:-1:-1;1890:23:30;;1717:226;-1:-1:-1;1717:226:30:o;2338:247::-;2397:6;2450:2;2438:9;2429:7;2425:23;2421:32;2418:52;;;2466:1;2463;2456:12;2418:52;2505:9;2492:23;2524:31;2549:5;2524:31;:::i;:::-;2574:5;2338:247;-1:-1:-1;;;2338:247:30:o;2590:611::-;2780:2;2792:21;;;2862:13;;2765:18;;;2884:22;;;2732:4;;2963:15;;;2937:2;2922:18;;;2732:4;3006:169;3020:6;3017:1;3014:13;3006:169;;;3081:13;;3069:26;;3124:2;3150:15;;;;3115:12;;;;3042:1;3035:9;3006:169;;;-1:-1:-1;3192:3:30;;2590:611;-1:-1:-1;;;;;2590:611:30:o;3622:251::-;3692:6;3745:2;3733:9;3724:7;3720:23;3716:32;3713:52;;;3761:1;3758;3751:12;3713:52;3793:9;3787:16;3812:31;3837:5;3812:31;:::i;3878:371::-;-1:-1:-1;;;;;4098:32:30;;;4080:51;;4167:32;;;;4162:2;4147:18;;4140:60;4231:2;4216:18;;4209:34;;;;4068:2;4053:18;;3878:371::o;4254:225::-;4321:9;;;4342:11;;;4339:134;;;4395:10;4390:3;4386:20;4383:1;4376:31;4430:4;4427:1;4420:15;4458:4;4455:1;4448:15;4339:134;4254:225;;;;:::o;4484:127::-;4545:10;4540:3;4536:20;4533:1;4526:31;4576:4;4573:1;4566:15;4600:4;4597:1;4590:15;4616:127;4677:10;4672:3;4668:20;4665:1;4658:31;4708:4;4705:1;4698:15;4732:4;4729:1;4722:15"},"methodIdentifiers":{"acceptOwnership()":"79ba5097","emergencyWithdraw(uint256,address)":"2f940c70","getWalletStakedTokens(address)":"2b4bc300","isStaked(uint256)":"baa51f86","nftContract()":"d56d229d","onERC721Received(address,address,uint256,bytes)":"150b7a02","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","rescueUntrackedToken(uint256,address)":"0fa6f642","stake(uint256)":"a694fc3a","stakedAtOf(uint256)":"1b3253b0","stakedOwnerOf(uint256)":"1dcac94d","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","unstake(uint256)":"2e17de78"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nftContract_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEmergencyRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOriginalStaker\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotTokenOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyStaked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenIsTracked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenNotHeld\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenNotStaked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedNFTContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originalStaker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnAt\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakedAt\",\"type\":\"uint256\"}],\"name\":\"TokenStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstakedAt\",\"type\":\"uint256\"}],\"name\":\"TokenUnstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rescuedAt\",\"type\":\"uint256\"}],\"name\":\"UntrackedTokenRescued\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"}],\"name\":\"getWalletStakedTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"isStaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nftContract\",\"outputs\":[{\"internalType\":\"contract IERC721\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"rescueUntrackedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"stakedAtOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"stakedOwnerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Pause gates new staking only. Unstaking is always available so players can always recover their assets. emergencyWithdraw is an explicit, named, and event-emitting admin path \\u2014 it is not hidden.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"EmergencyWithdrawn(address,uint256,address,uint256)\":{\"params\":{\"originalStaker\":\"The wallet that originally staked the token.\",\"recipient\":\"The address that received the token.\",\"tokenId\":\"The affected NFT token ID.\",\"withdrawnAt\":\"Block timestamp at the moment of the withdrawal.\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"TokenStaked(address,uint256,uint256)\":{\"params\":{\"stakedAt\":\"Block timestamp at the moment of staking.\",\"staker\":\"The wallet address that owns and staked the token.\",\"tokenId\":\"The staked NFT token ID.\"}},\"TokenUnstaked(address,uint256,uint256)\":{\"params\":{\"staker\":\"The wallet address that originally staked (and receives back) the token.\",\"tokenId\":\"The unstaked NFT token ID.\",\"unstakedAt\":\"Block timestamp at the moment of unstaking.\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"params\":{\"initialOwner_\":\"Initial contract owner. Mainnet deployments should use a multisig.\",\"nftContract_\":\"Address of the TricksforBoosterNFT contract.\"}},\"emergencyWithdraw(uint256,address)\":{\"params\":{\"recipient\":\"The address to send the token to.\",\"tokenId\":\"The token ID to withdraw.\"}},\"getWalletStakedTokens(address)\":{\"details\":\"Ordering is not guaranteed. Tokens are stored in an array with swap-and-pop removal: when a token is unstaked or emergency-withdrawn, the last element in the array takes its position. Do not rely on index stability across state-changing transactions.\",\"params\":{\"wallet\":\"The address to query.\"}},\"isStaked(uint256)\":{\"params\":{\"tokenId\":\"The token ID to query.\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"params\":{\"from\":\"The address that previously owned the token (recorded as staker).\",\"tokenId\":\"The token ID being transferred.\"},\"returns\":{\"_0\":\"The ERC-721 receiver magic value confirming acceptance.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"rescueUntrackedToken(uint256,address)\":{\"params\":{\"recipient\":\"The non-zero address that receives the recovered token.\",\"tokenId\":\"The untracked token held by this contract.\"}},\"stake(uint256)\":{\"params\":{\"tokenId\":\"The token ID to stake.\"}},\"stakedAtOf(uint256)\":{\"params\":{\"tokenId\":\"The token ID to query.\"}},\"stakedOwnerOf(uint256)\":{\"params\":{\"tokenId\":\"The token ID to query.\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"},\"unstake(uint256)\":{\"params\":{\"tokenId\":\"The token ID to unstake.\"}}},\"stateVariables\":{\"_stakedAt\":{\"details\":\"Maps tokenId \\u2192 block.timestamp at which the token was staked.\"},\"_stakedBy\":{\"details\":\"Maps tokenId \\u2192 original staker address. Zero address means not staked.\"},\"_walletTokenIds\":{\"details\":\"Maps staker address \\u2192 list of currently staked token IDs.\"},\"_walletTokenIndex\":{\"details\":\"Maps tokenId \\u2192 index in _walletTokenIds[staker] for O(1) removal.\"}},\"title\":\"TricksforBoosterStaking\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidEmergencyRecipient()\":[{\"notice\":\"Emergency withdrawals can only return a tracked token to its original staker.\"}],\"NotOriginalStaker()\":[{\"notice\":\"Caller is not the original staker of this token.\"}],\"NotTokenOwner()\":[{\"notice\":\"Caller does not own the token they are trying to stake.\"}],\"TokenAlreadyStaked()\":[{\"notice\":\"Token is already staked.\"}],\"TokenIsTracked()\":[{\"notice\":\"Rescue is only available for tokens that have no staking record.\"}],\"TokenNotHeld()\":[{\"notice\":\"Rescue requires the staking contract to currently hold the token.\"}],\"TokenNotStaked()\":[{\"notice\":\"Token is not currently staked.\"}],\"UnsupportedNFTContract()\":[{\"notice\":\"Token received from an unsupported NFT contract.\"}],\"ZeroAddress()\":[{\"notice\":\"Zero address supplied where a non-zero address is required.\"}]},\"events\":{\"EmergencyWithdrawn(address,uint256,address,uint256)\":{\"notice\":\"Emitted when an owner-initiated emergency withdrawal occurs. This is the only admin path that moves a user's staked NFT without their consent. It is explicitly named, event-emitting, and documented here.\"},\"TokenStaked(address,uint256,uint256)\":{\"notice\":\"Emitted when a token is successfully staked.\"},\"TokenUnstaked(address,uint256,uint256)\":{\"notice\":\"Emitted when a token is successfully unstaked.\"},\"UntrackedTokenRescued(address,uint256,uint256)\":{\"notice\":\"Emitted when an untracked NFT sent with transferFrom is recovered by the owner.\"}},\"kind\":\"user\",\"methods\":{\"emergencyWithdraw(uint256,address)\":{\"notice\":\"Emergency withdrawal of a staked token by the contract owner. Use only in exceptional circumstances (e.g., critical contract bug). This is the only admin path that moves a user's staked NFT without their direct action. It is explicitly named, emits EmergencyWithdrawn, and is documented in this contract and the project's architecture documentation.\"},\"getWalletStakedTokens(address)\":{\"notice\":\"Returns the list of token IDs currently staked by the given wallet.\"},\"isStaked(uint256)\":{\"notice\":\"Returns true if the given token is currently staked.\"},\"nftContract()\":{\"notice\":\"The ERC-721 NFT contract whose tokens this staking contract manages.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handles the receipt of a Booster NFT transferred via safeTransferFrom. Only accepts tokens from the configured nftContract; reverts for all others. Records `from` as the staker and emits TokenStaked \\u2014 functionally equivalent to calling stake() but triggered by safeTransferFrom rather than approve+stake. Not available while paused (mirrors stake() pause behaviour).\"},\"pause()\":{\"notice\":\"Pauses new staking. Unstaking remains available while paused.\"},\"rescueUntrackedToken(uint256,address)\":{\"notice\":\"Recovers an NFT that was sent directly with transferFrom and therefore did not invoke onERC721Received or create a staking record.\"},\"stake(uint256)\":{\"notice\":\"Stakes a Booster NFT. The caller must have first approved this contract (or set approval for all) on the NFT contract. Custody of the token is transferred to this contract.\"},\"stakedAtOf(uint256)\":{\"notice\":\"Returns the block timestamp at which a token was staked. Returns zero if the token is not currently staked.\"},\"stakedOwnerOf(uint256)\":{\"notice\":\"Returns the original staker of a currently staked token. Returns the zero address if the token is not staked.\"},\"unpause()\":{\"notice\":\"Unpauses staking.\"},\"unstake(uint256)\":{\"notice\":\"Unstakes a Booster NFT and returns it to the original staker. Always available \\u2014 not gated by pause \\u2014 so players can always recover assets.\"}},\"notice\":\"Custodial staking contract for Tricksfor Booster NFTs. Players transfer their NFTs into this contract to stake them and retrieve them when they unstake. Staking state and timestamps are recorded on-chain via integration-critical events consumed by the Tricksfor backend indexer. Responsibilities: - Accepting NFT custody during staking - Emitting TokenStaked / TokenUnstaked events for backend log processing - Providing read methods (isStaked, stakedOwnerOf) consistent with event state Not responsible for: - Reward calculation or distribution - Booster tier or multiplier classification - Game logic or settlement\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TricksforBoosterStaking.sol\":\"TricksforBoosterStaking\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99\",\"dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"contracts/TricksforBoosterStaking.sol\":{\"keccak256\":\"0x3b9c56329e3811131ccbbafcdd6bd37f1e96603871606b08e3b3b078fb264854\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be76e0edbb731951fd5a577642d2d226dd1b5ce7b3100887f14983d22a0e9b16\",\"dweb:/ipfs/QmVbA1mdJuYNW85tbaeSwztcejg7fpRit3K1beVtLAMX2L\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":387,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":535,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_pendingOwner","offset":0,"slot":"1","type":"t_address"},{"astId":3968,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_paused","offset":20,"slot":"1","type":"t_bool"},{"astId":9793,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_stakedBy","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":9798,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_stakedAt","offset":0,"slot":"3","type":"t_mapping(t_uint256,t_uint256)"},{"astId":9804,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_walletTokenIds","offset":0,"slot":"4","type":"t_mapping(t_address,t_array(t_uint256)dyn_storage)"},{"astId":9809,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_walletTokenIndex","offset":0,"slot":"5","type":"t_mapping(t_uint256,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)dyn_storage":{"base":"t_uint256","encoding":"dynamic_array","label":"uint256[]","numberOfBytes":"32"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_array(t_uint256)dyn_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256[])","numberOfBytes":"32","value":"t_array(t_uint256)dyn_storage"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"errors":{"InvalidEmergencyRecipient()":[{"notice":"Emergency withdrawals can only return a tracked token to its original staker."}],"NotOriginalStaker()":[{"notice":"Caller is not the original staker of this token."}],"NotTokenOwner()":[{"notice":"Caller does not own the token they are trying to stake."}],"TokenAlreadyStaked()":[{"notice":"Token is already staked."}],"TokenIsTracked()":[{"notice":"Rescue is only available for tokens that have no staking record."}],"TokenNotHeld()":[{"notice":"Rescue requires the staking contract to currently hold the token."}],"TokenNotStaked()":[{"notice":"Token is not currently staked."}],"UnsupportedNFTContract()":[{"notice":"Token received from an unsupported NFT contract."}],"ZeroAddress()":[{"notice":"Zero address supplied where a non-zero address is required."}]},"events":{"EmergencyWithdrawn(address,uint256,address,uint256)":{"notice":"Emitted when an owner-initiated emergency withdrawal occurs. This is the only admin path that moves a user's staked NFT without their consent. It is explicitly named, event-emitting, and documented here."},"TokenStaked(address,uint256,uint256)":{"notice":"Emitted when a token is successfully staked."},"TokenUnstaked(address,uint256,uint256)":{"notice":"Emitted when a token is successfully unstaked."},"UntrackedTokenRescued(address,uint256,uint256)":{"notice":"Emitted when an untracked NFT sent with transferFrom is recovered by the owner."}},"kind":"user","methods":{"emergencyWithdraw(uint256,address)":{"notice":"Emergency withdrawal of a staked token by the contract owner. Use only in exceptional circumstances (e.g., critical contract bug). This is the only admin path that moves a user's staked NFT without their direct action. It is explicitly named, emits EmergencyWithdrawn, and is documented in this contract and the project's architecture documentation."},"getWalletStakedTokens(address)":{"notice":"Returns the list of token IDs currently staked by the given wallet."},"isStaked(uint256)":{"notice":"Returns true if the given token is currently staked."},"nftContract()":{"notice":"The ERC-721 NFT contract whose tokens this staking contract manages."},"onERC721Received(address,address,uint256,bytes)":{"notice":"Handles the receipt of a Booster NFT transferred via safeTransferFrom. Only accepts tokens from the configured nftContract; reverts for all others. Records `from` as the staker and emits TokenStaked — functionally equivalent to calling stake() but triggered by safeTransferFrom rather than approve+stake. Not available while paused (mirrors stake() pause behaviour)."},"pause()":{"notice":"Pauses new staking. Unstaking remains available while paused."},"rescueUntrackedToken(uint256,address)":{"notice":"Recovers an NFT that was sent directly with transferFrom and therefore did not invoke onERC721Received or create a staking record."},"stake(uint256)":{"notice":"Stakes a Booster NFT. The caller must have first approved this contract (or set approval for all) on the NFT contract. Custody of the token is transferred to this contract."},"stakedAtOf(uint256)":{"notice":"Returns the block timestamp at which a token was staked. Returns zero if the token is not currently staked."},"stakedOwnerOf(uint256)":{"notice":"Returns the original staker of a currently staked token. Returns the zero address if the token is not staked."},"unpause()":{"notice":"Unpauses staking."},"unstake(uint256)":{"notice":"Unstakes a Booster NFT and returns it to the original staker. Always available — not gated by pause — so players can always recover assets."}},"notice":"Custodial staking contract for Tricksfor Booster NFTs. Players transfer their NFTs into this contract to stake them and retrieve them when they unstake. Staking state and timestamps are recorded on-chain via integration-critical events consumed by the Tricksfor backend indexer. Responsibilities: - Accepting NFT custody during staking - Emitting TokenStaked / TokenUnstaked events for backend log processing - Providing read methods (isStaked, stakedOwnerOf) consistent with event state Not responsible for: - Reward calculation or distribution - Booster tier or multiplier classification - Game logic or settlement","version":1}}},"contracts/test/ReentrantERC721.sol":{"IReentrantStakingTarget":{"abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"stake(uint256)":"a694fc3a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ReentrantERC721.sol\":\"IReentrantStakingTarget\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/test/ReentrantERC721.sol\":{\"keccak256\":\"0x8ebe653ea43a215fd1ec9d1dcd88f347d972fb07a16665155eabcbfb1c8b2d3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a552d63277936a9176f59919e274068c73d1b98e5f4fd693ecf93d35f7e1d31\",\"dweb:/ipfs/QmWrZLhASr37r5BqNTLAAaySLvvsV2LvCpMtyogUu6BQvC\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"ReentrantERC721":{"abi":[{"inputs":[{"internalType":"address","name":"staking_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"attackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableAttack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staking","outputs":[{"internalType":"contract IReentrantStakingTarget","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Test-only NFT double that calls stake again from transferFrom.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_10402":{"entryPoint":null,"id":10402,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":59,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:306:30","nodeType":"YulBlock","src":"0:306:30","statements":[{"nativeSrc":"6:3:30","nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nativeSrc":"95:209:30","nodeType":"YulBlock","src":"95:209:30","statements":[{"body":{"nativeSrc":"141:16:30","nodeType":"YulBlock","src":"141:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:30","nodeType":"YulLiteral","src":"150:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:30","nodeType":"YulLiteral","src":"153:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:30","nodeType":"YulIdentifier","src":"143:6:30"},"nativeSrc":"143:12:30","nodeType":"YulFunctionCall","src":"143:12:30"},"nativeSrc":"143:12:30","nodeType":"YulExpressionStatement","src":"143:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:30","nodeType":"YulIdentifier","src":"116:7:30"},{"name":"headStart","nativeSrc":"125:9:30","nodeType":"YulIdentifier","src":"125:9:30"}],"functionName":{"name":"sub","nativeSrc":"112:3:30","nodeType":"YulIdentifier","src":"112:3:30"},"nativeSrc":"112:23:30","nodeType":"YulFunctionCall","src":"112:23:30"},{"kind":"number","nativeSrc":"137:2:30","nodeType":"YulLiteral","src":"137:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:30","nodeType":"YulIdentifier","src":"108:3:30"},"nativeSrc":"108:32:30","nodeType":"YulFunctionCall","src":"108:32:30"},"nativeSrc":"105:52:30","nodeType":"YulIf","src":"105:52:30"},{"nativeSrc":"166:29:30","nodeType":"YulVariableDeclaration","src":"166:29:30","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:30","nodeType":"YulIdentifier","src":"185:9:30"}],"functionName":{"name":"mload","nativeSrc":"179:5:30","nodeType":"YulIdentifier","src":"179:5:30"},"nativeSrc":"179:16:30","nodeType":"YulFunctionCall","src":"179:16:30"},"variables":[{"name":"value","nativeSrc":"170:5:30","nodeType":"YulTypedName","src":"170:5:30","type":""}]},{"body":{"nativeSrc":"258:16:30","nodeType":"YulBlock","src":"258:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:30","nodeType":"YulLiteral","src":"267:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:30","nodeType":"YulLiteral","src":"270:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:30","nodeType":"YulIdentifier","src":"260:6:30"},"nativeSrc":"260:12:30","nodeType":"YulFunctionCall","src":"260:12:30"},"nativeSrc":"260:12:30","nodeType":"YulExpressionStatement","src":"260:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:30","nodeType":"YulIdentifier","src":"217:5:30"},{"arguments":[{"name":"value","nativeSrc":"228:5:30","nodeType":"YulIdentifier","src":"228:5:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:30","nodeType":"YulLiteral","src":"243:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:30","nodeType":"YulLiteral","src":"248:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:30","nodeType":"YulIdentifier","src":"239:3:30"},"nativeSrc":"239:11:30","nodeType":"YulFunctionCall","src":"239:11:30"},{"kind":"number","nativeSrc":"252:1:30","nodeType":"YulLiteral","src":"252:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:30","nodeType":"YulIdentifier","src":"235:3:30"},"nativeSrc":"235:19:30","nodeType":"YulFunctionCall","src":"235:19:30"}],"functionName":{"name":"and","nativeSrc":"224:3:30","nodeType":"YulIdentifier","src":"224:3:30"},"nativeSrc":"224:31:30","nodeType":"YulFunctionCall","src":"224:31:30"}],"functionName":{"name":"eq","nativeSrc":"214:2:30","nodeType":"YulIdentifier","src":"214:2:30"},"nativeSrc":"214:42:30","nodeType":"YulFunctionCall","src":"214:42:30"}],"functionName":{"name":"iszero","nativeSrc":"207:6:30","nodeType":"YulIdentifier","src":"207:6:30"},"nativeSrc":"207:50:30","nodeType":"YulFunctionCall","src":"207:50:30"},"nativeSrc":"204:70:30","nodeType":"YulIf","src":"204:70:30"},{"nativeSrc":"283:15:30","nodeType":"YulAssignment","src":"283:15:30","value":{"name":"value","nativeSrc":"293:5:30","nodeType":"YulIdentifier","src":"293:5:30"},"variableNames":[{"name":"value0","nativeSrc":"283:6:30","nodeType":"YulIdentifier","src":"283:6:30"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:30","nodeType":"YulTypedName","src":"61:9:30","type":""},{"name":"dataEnd","nativeSrc":"72:7:30","nodeType":"YulTypedName","src":"72:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:30","nodeType":"YulTypedName","src":"84:6:30","type":""}],"src":"14:290:30"}]},"contents":"{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":30,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a0604052348015600e575f80fd5b506040516103ec3803806103ec833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516103676100855f395f8181610105015261020f01526103675ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c806321f161931461006457806323b872dd146100b257806340c10f19146100c55780634cf088d9146101005780636352211e14610144578063d7751b851461016c575b5f80fd5b6100b06001805460ff1916811790556103e75f9081526020527f332eac5de6beffe8ee7761a0342c75594c3acb5fdde0a2555227e56aa65d414180546001600160a01b03191630179055565b005b6100b06100c03660046102b8565b610189565b6100b06100d33660046102f2565b5f90815260208190526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6101277f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61012761015236600461031a565b5f908152602081905260409020546001600160a01b031690565b6001546101799060ff1681565b604051901515815260200161013b565b5f818152602081905260409020546001600160a01b038481169116146101e35760405162461bcd60e51b815260206004820152600b60248201526a3bb937b7339037bbb732b960a91b604482015260640160405180910390fd5b60015460ff161561026f576001805460ff1916905560405163534a7e1d60e11b81526103e760048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a694fc3a906024015f604051808303815f87803b158015610258575f80fd5b505af115801561026a573d5f803e3d5ffd5b505050505b5f90815260208190526040902080546001600160a01b0319166001600160a01b039290921691909117905550565b80356001600160a01b03811681146102b3575f80fd5b919050565b5f805f606084860312156102ca575f80fd5b6102d38461029d565b92506102e16020850161029d565b929592945050506040919091013590565b5f8060408385031215610303575f80fd5b61030c8361029d565b946020939093013593505050565b5f6020828403121561032a575f80fd5b503591905056fea2646970667358221220be094efbcfd99befb0cdd910374618b8ffce949b88e6c540d277bc50eb87bb4064736f6c634300081a0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3EC CODESIZE SUB DUP1 PUSH2 0x3EC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH1 0x2B SWAP2 PUSH1 0x3B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x66 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x4A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH1 0x5F JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x367 PUSH2 0x85 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x105 ADD MSTORE PUSH2 0x20F ADD MSTORE PUSH2 0x367 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x60 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x21F16193 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xD7751B85 EQ PUSH2 0x16C JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH2 0x3E7 PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 MSTORE PUSH32 0x332EAC5DE6BEFFE8EE7761A0342C75594C3ACB5FDDE0A2555227E56AA65D4141 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND ADDRESS OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B8 JUMP JUMPDEST PUSH2 0x189 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xD3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x127 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x127 PUSH2 0x152 CALLDATASIZE PUSH1 0x4 PUSH2 0x31A JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x179 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x13B JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x1E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x3BB937B7339037BBB732B9 PUSH1 0xA9 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x26F JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH4 0x534A7E1D PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x3E7 PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xA694FC3A SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x258 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CA JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x2D3 DUP5 PUSH2 0x29D JUMP JUMPDEST SWAP3 POP PUSH2 0x2E1 PUSH1 0x20 DUP6 ADD PUSH2 0x29D JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x303 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x30C DUP4 PUSH2 0x29D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE MULMOD 0x4E 0xFB 0xCF 0xD9 SWAP12 0xEF 0xB0 0xCD 0xD9 LT CALLDATACOPY CHAINID XOR 0xB8 SELFDESTRUCT 0xCE SWAP5 SWAP12 DUP9 0xE6 0xC5 BLOCKHASH 0xD2 PUSH24 0xBC50EB87BB4064736F6C634300081A003300000000000000 ","sourceMap":"215:876:29:-:0;;;395:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;435:43:29;;;215:876;;14:290:30;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:30;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:30:o;:::-;215:876:29;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@attackEnabled_10390":{"entryPoint":null,"id":10390,"parameterSlots":0,"returnSlots":0},"@enableAttack_10433":{"entryPoint":null,"id":10433,"parameterSlots":0,"returnSlots":0},"@mint_10416":{"entryPoint":null,"id":10416,"parameterSlots":2,"returnSlots":0},"@ownerOf_10445":{"entryPoint":null,"id":10445,"parameterSlots":1,"returnSlots":1},"@staking_10388":{"entryPoint":null,"id":10388,"parameterSlots":0,"returnSlots":0},"@transferFrom_10483":{"entryPoint":393,"id":10483,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":669,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":696,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":754,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":794,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IReentrantStakingTarget_$10380__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_999_by_1__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1910a1b31627cb44672fa41011dea21df90d76304ea37cd5fe77e38d944205f7__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:2277:30","nodeType":"YulBlock","src":"0:2277:30","statements":[{"nativeSrc":"6:3:30","nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nativeSrc":"63:124:30","nodeType":"YulBlock","src":"63:124:30","statements":[{"nativeSrc":"73:29:30","nodeType":"YulAssignment","src":"73:29:30","value":{"arguments":[{"name":"offset","nativeSrc":"95:6:30","nodeType":"YulIdentifier","src":"95:6:30"}],"functionName":{"name":"calldataload","nativeSrc":"82:12:30","nodeType":"YulIdentifier","src":"82:12:30"},"nativeSrc":"82:20:30","nodeType":"YulFunctionCall","src":"82:20:30"},"variableNames":[{"name":"value","nativeSrc":"73:5:30","nodeType":"YulIdentifier","src":"73:5:30"}]},{"body":{"nativeSrc":"165:16:30","nodeType":"YulBlock","src":"165:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"174:1:30","nodeType":"YulLiteral","src":"174:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"177:1:30","nodeType":"YulLiteral","src":"177:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"167:6:30","nodeType":"YulIdentifier","src":"167:6:30"},"nativeSrc":"167:12:30","nodeType":"YulFunctionCall","src":"167:12:30"},"nativeSrc":"167:12:30","nodeType":"YulExpressionStatement","src":"167:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"124:5:30","nodeType":"YulIdentifier","src":"124:5:30"},{"arguments":[{"name":"value","nativeSrc":"135:5:30","nodeType":"YulIdentifier","src":"135:5:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"150:3:30","nodeType":"YulLiteral","src":"150:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"155:1:30","nodeType":"YulLiteral","src":"155:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"146:3:30","nodeType":"YulIdentifier","src":"146:3:30"},"nativeSrc":"146:11:30","nodeType":"YulFunctionCall","src":"146:11:30"},{"kind":"number","nativeSrc":"159:1:30","nodeType":"YulLiteral","src":"159:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"142:3:30","nodeType":"YulIdentifier","src":"142:3:30"},"nativeSrc":"142:19:30","nodeType":"YulFunctionCall","src":"142:19:30"}],"functionName":{"name":"and","nativeSrc":"131:3:30","nodeType":"YulIdentifier","src":"131:3:30"},"nativeSrc":"131:31:30","nodeType":"YulFunctionCall","src":"131:31:30"}],"functionName":{"name":"eq","nativeSrc":"121:2:30","nodeType":"YulIdentifier","src":"121:2:30"},"nativeSrc":"121:42:30","nodeType":"YulFunctionCall","src":"121:42:30"}],"functionName":{"name":"iszero","nativeSrc":"114:6:30","nodeType":"YulIdentifier","src":"114:6:30"},"nativeSrc":"114:50:30","nodeType":"YulFunctionCall","src":"114:50:30"},"nativeSrc":"111:70:30","nodeType":"YulIf","src":"111:70:30"}]},"name":"abi_decode_address","nativeSrc":"14:173:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"42:6:30","nodeType":"YulTypedName","src":"42:6:30","type":""}],"returnVariables":[{"name":"value","nativeSrc":"53:5:30","nodeType":"YulTypedName","src":"53:5:30","type":""}],"src":"14:173:30"},{"body":{"nativeSrc":"296:270:30","nodeType":"YulBlock","src":"296:270:30","statements":[{"body":{"nativeSrc":"342:16:30","nodeType":"YulBlock","src":"342:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"351:1:30","nodeType":"YulLiteral","src":"351:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"354:1:30","nodeType":"YulLiteral","src":"354:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"344:6:30","nodeType":"YulIdentifier","src":"344:6:30"},"nativeSrc":"344:12:30","nodeType":"YulFunctionCall","src":"344:12:30"},"nativeSrc":"344:12:30","nodeType":"YulExpressionStatement","src":"344:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"317:7:30","nodeType":"YulIdentifier","src":"317:7:30"},{"name":"headStart","nativeSrc":"326:9:30","nodeType":"YulIdentifier","src":"326:9:30"}],"functionName":{"name":"sub","nativeSrc":"313:3:30","nodeType":"YulIdentifier","src":"313:3:30"},"nativeSrc":"313:23:30","nodeType":"YulFunctionCall","src":"313:23:30"},{"kind":"number","nativeSrc":"338:2:30","nodeType":"YulLiteral","src":"338:2:30","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"309:3:30","nodeType":"YulIdentifier","src":"309:3:30"},"nativeSrc":"309:32:30","nodeType":"YulFunctionCall","src":"309:32:30"},"nativeSrc":"306:52:30","nodeType":"YulIf","src":"306:52:30"},{"nativeSrc":"367:39:30","nodeType":"YulAssignment","src":"367:39:30","value":{"arguments":[{"name":"headStart","nativeSrc":"396:9:30","nodeType":"YulIdentifier","src":"396:9:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"377:18:30","nodeType":"YulIdentifier","src":"377:18:30"},"nativeSrc":"377:29:30","nodeType":"YulFunctionCall","src":"377:29:30"},"variableNames":[{"name":"value0","nativeSrc":"367:6:30","nodeType":"YulIdentifier","src":"367:6:30"}]},{"nativeSrc":"415:48:30","nodeType":"YulAssignment","src":"415:48:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"448:9:30","nodeType":"YulIdentifier","src":"448:9:30"},{"kind":"number","nativeSrc":"459:2:30","nodeType":"YulLiteral","src":"459:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"444:3:30","nodeType":"YulIdentifier","src":"444:3:30"},"nativeSrc":"444:18:30","nodeType":"YulFunctionCall","src":"444:18:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"425:18:30","nodeType":"YulIdentifier","src":"425:18:30"},"nativeSrc":"425:38:30","nodeType":"YulFunctionCall","src":"425:38:30"},"variableNames":[{"name":"value1","nativeSrc":"415:6:30","nodeType":"YulIdentifier","src":"415:6:30"}]},{"nativeSrc":"472:14:30","nodeType":"YulVariableDeclaration","src":"472:14:30","value":{"kind":"number","nativeSrc":"485:1:30","nodeType":"YulLiteral","src":"485:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"476:5:30","nodeType":"YulTypedName","src":"476:5:30","type":""}]},{"nativeSrc":"495:41:30","nodeType":"YulAssignment","src":"495:41:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"521:9:30","nodeType":"YulIdentifier","src":"521:9:30"},{"kind":"number","nativeSrc":"532:2:30","nodeType":"YulLiteral","src":"532:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"517:3:30","nodeType":"YulIdentifier","src":"517:3:30"},"nativeSrc":"517:18:30","nodeType":"YulFunctionCall","src":"517:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"504:12:30","nodeType":"YulIdentifier","src":"504:12:30"},"nativeSrc":"504:32:30","nodeType":"YulFunctionCall","src":"504:32:30"},"variableNames":[{"name":"value","nativeSrc":"495:5:30","nodeType":"YulIdentifier","src":"495:5:30"}]},{"nativeSrc":"545:15:30","nodeType":"YulAssignment","src":"545:15:30","value":{"name":"value","nativeSrc":"555:5:30","nodeType":"YulIdentifier","src":"555:5:30"},"variableNames":[{"name":"value2","nativeSrc":"545:6:30","nodeType":"YulIdentifier","src":"545:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"192:374:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"246:9:30","nodeType":"YulTypedName","src":"246:9:30","type":""},{"name":"dataEnd","nativeSrc":"257:7:30","nodeType":"YulTypedName","src":"257:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"269:6:30","nodeType":"YulTypedName","src":"269:6:30","type":""},{"name":"value1","nativeSrc":"277:6:30","nodeType":"YulTypedName","src":"277:6:30","type":""},{"name":"value2","nativeSrc":"285:6:30","nodeType":"YulTypedName","src":"285:6:30","type":""}],"src":"192:374:30"},{"body":{"nativeSrc":"658:213:30","nodeType":"YulBlock","src":"658:213:30","statements":[{"body":{"nativeSrc":"704:16:30","nodeType":"YulBlock","src":"704:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"713:1:30","nodeType":"YulLiteral","src":"713:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"716:1:30","nodeType":"YulLiteral","src":"716:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"706:6:30","nodeType":"YulIdentifier","src":"706:6:30"},"nativeSrc":"706:12:30","nodeType":"YulFunctionCall","src":"706:12:30"},"nativeSrc":"706:12:30","nodeType":"YulExpressionStatement","src":"706:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"679:7:30","nodeType":"YulIdentifier","src":"679:7:30"},{"name":"headStart","nativeSrc":"688:9:30","nodeType":"YulIdentifier","src":"688:9:30"}],"functionName":{"name":"sub","nativeSrc":"675:3:30","nodeType":"YulIdentifier","src":"675:3:30"},"nativeSrc":"675:23:30","nodeType":"YulFunctionCall","src":"675:23:30"},{"kind":"number","nativeSrc":"700:2:30","nodeType":"YulLiteral","src":"700:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"671:3:30","nodeType":"YulIdentifier","src":"671:3:30"},"nativeSrc":"671:32:30","nodeType":"YulFunctionCall","src":"671:32:30"},"nativeSrc":"668:52:30","nodeType":"YulIf","src":"668:52:30"},{"nativeSrc":"729:39:30","nodeType":"YulAssignment","src":"729:39:30","value":{"arguments":[{"name":"headStart","nativeSrc":"758:9:30","nodeType":"YulIdentifier","src":"758:9:30"}],"functionName":{"name":"abi_decode_address","nativeSrc":"739:18:30","nodeType":"YulIdentifier","src":"739:18:30"},"nativeSrc":"739:29:30","nodeType":"YulFunctionCall","src":"739:29:30"},"variableNames":[{"name":"value0","nativeSrc":"729:6:30","nodeType":"YulIdentifier","src":"729:6:30"}]},{"nativeSrc":"777:14:30","nodeType":"YulVariableDeclaration","src":"777:14:30","value":{"kind":"number","nativeSrc":"790:1:30","nodeType":"YulLiteral","src":"790:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"781:5:30","nodeType":"YulTypedName","src":"781:5:30","type":""}]},{"nativeSrc":"800:41:30","nodeType":"YulAssignment","src":"800:41:30","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"826:9:30","nodeType":"YulIdentifier","src":"826:9:30"},{"kind":"number","nativeSrc":"837:2:30","nodeType":"YulLiteral","src":"837:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"822:3:30","nodeType":"YulIdentifier","src":"822:3:30"},"nativeSrc":"822:18:30","nodeType":"YulFunctionCall","src":"822:18:30"}],"functionName":{"name":"calldataload","nativeSrc":"809:12:30","nodeType":"YulIdentifier","src":"809:12:30"},"nativeSrc":"809:32:30","nodeType":"YulFunctionCall","src":"809:32:30"},"variableNames":[{"name":"value","nativeSrc":"800:5:30","nodeType":"YulIdentifier","src":"800:5:30"}]},{"nativeSrc":"850:15:30","nodeType":"YulAssignment","src":"850:15:30","value":{"name":"value","nativeSrc":"860:5:30","nodeType":"YulIdentifier","src":"860:5:30"},"variableNames":[{"name":"value1","nativeSrc":"850:6:30","nodeType":"YulIdentifier","src":"850:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"571:300:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"616:9:30","nodeType":"YulTypedName","src":"616:9:30","type":""},{"name":"dataEnd","nativeSrc":"627:7:30","nodeType":"YulTypedName","src":"627:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"639:6:30","nodeType":"YulTypedName","src":"639:6:30","type":""},{"name":"value1","nativeSrc":"647:6:30","nodeType":"YulTypedName","src":"647:6:30","type":""}],"src":"571:300:30"},{"body":{"nativeSrc":"1010:102:30","nodeType":"YulBlock","src":"1010:102:30","statements":[{"nativeSrc":"1020:26:30","nodeType":"YulAssignment","src":"1020:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"1032:9:30","nodeType":"YulIdentifier","src":"1032:9:30"},{"kind":"number","nativeSrc":"1043:2:30","nodeType":"YulLiteral","src":"1043:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1028:3:30","nodeType":"YulIdentifier","src":"1028:3:30"},"nativeSrc":"1028:18:30","nodeType":"YulFunctionCall","src":"1028:18:30"},"variableNames":[{"name":"tail","nativeSrc":"1020:4:30","nodeType":"YulIdentifier","src":"1020:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1062:9:30","nodeType":"YulIdentifier","src":"1062:9:30"},{"arguments":[{"name":"value0","nativeSrc":"1077:6:30","nodeType":"YulIdentifier","src":"1077:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1093:3:30","nodeType":"YulLiteral","src":"1093:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"1098:1:30","nodeType":"YulLiteral","src":"1098:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1089:3:30","nodeType":"YulIdentifier","src":"1089:3:30"},"nativeSrc":"1089:11:30","nodeType":"YulFunctionCall","src":"1089:11:30"},{"kind":"number","nativeSrc":"1102:1:30","nodeType":"YulLiteral","src":"1102:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1085:3:30","nodeType":"YulIdentifier","src":"1085:3:30"},"nativeSrc":"1085:19:30","nodeType":"YulFunctionCall","src":"1085:19:30"}],"functionName":{"name":"and","nativeSrc":"1073:3:30","nodeType":"YulIdentifier","src":"1073:3:30"},"nativeSrc":"1073:32:30","nodeType":"YulFunctionCall","src":"1073:32:30"}],"functionName":{"name":"mstore","nativeSrc":"1055:6:30","nodeType":"YulIdentifier","src":"1055:6:30"},"nativeSrc":"1055:51:30","nodeType":"YulFunctionCall","src":"1055:51:30"},"nativeSrc":"1055:51:30","nodeType":"YulExpressionStatement","src":"1055:51:30"}]},"name":"abi_encode_tuple_t_contract$_IReentrantStakingTarget_$10380__to_t_address__fromStack_reversed","nativeSrc":"876:236:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"979:9:30","nodeType":"YulTypedName","src":"979:9:30","type":""},{"name":"value0","nativeSrc":"990:6:30","nodeType":"YulTypedName","src":"990:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1001:4:30","nodeType":"YulTypedName","src":"1001:4:30","type":""}],"src":"876:236:30"},{"body":{"nativeSrc":"1187:156:30","nodeType":"YulBlock","src":"1187:156:30","statements":[{"body":{"nativeSrc":"1233:16:30","nodeType":"YulBlock","src":"1233:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1242:1:30","nodeType":"YulLiteral","src":"1242:1:30","type":"","value":"0"},{"kind":"number","nativeSrc":"1245:1:30","nodeType":"YulLiteral","src":"1245:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1235:6:30","nodeType":"YulIdentifier","src":"1235:6:30"},"nativeSrc":"1235:12:30","nodeType":"YulFunctionCall","src":"1235:12:30"},"nativeSrc":"1235:12:30","nodeType":"YulExpressionStatement","src":"1235:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1208:7:30","nodeType":"YulIdentifier","src":"1208:7:30"},{"name":"headStart","nativeSrc":"1217:9:30","nodeType":"YulIdentifier","src":"1217:9:30"}],"functionName":{"name":"sub","nativeSrc":"1204:3:30","nodeType":"YulIdentifier","src":"1204:3:30"},"nativeSrc":"1204:23:30","nodeType":"YulFunctionCall","src":"1204:23:30"},{"kind":"number","nativeSrc":"1229:2:30","nodeType":"YulLiteral","src":"1229:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1200:3:30","nodeType":"YulIdentifier","src":"1200:3:30"},"nativeSrc":"1200:32:30","nodeType":"YulFunctionCall","src":"1200:32:30"},"nativeSrc":"1197:52:30","nodeType":"YulIf","src":"1197:52:30"},{"nativeSrc":"1258:14:30","nodeType":"YulVariableDeclaration","src":"1258:14:30","value":{"kind":"number","nativeSrc":"1271:1:30","nodeType":"YulLiteral","src":"1271:1:30","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1262:5:30","nodeType":"YulTypedName","src":"1262:5:30","type":""}]},{"nativeSrc":"1281:32:30","nodeType":"YulAssignment","src":"1281:32:30","value":{"arguments":[{"name":"headStart","nativeSrc":"1303:9:30","nodeType":"YulIdentifier","src":"1303:9:30"}],"functionName":{"name":"calldataload","nativeSrc":"1290:12:30","nodeType":"YulIdentifier","src":"1290:12:30"},"nativeSrc":"1290:23:30","nodeType":"YulFunctionCall","src":"1290:23:30"},"variableNames":[{"name":"value","nativeSrc":"1281:5:30","nodeType":"YulIdentifier","src":"1281:5:30"}]},{"nativeSrc":"1322:15:30","nodeType":"YulAssignment","src":"1322:15:30","value":{"name":"value","nativeSrc":"1332:5:30","nodeType":"YulIdentifier","src":"1332:5:30"},"variableNames":[{"name":"value0","nativeSrc":"1322:6:30","nodeType":"YulIdentifier","src":"1322:6:30"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1117:226:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1153:9:30","nodeType":"YulTypedName","src":"1153:9:30","type":""},{"name":"dataEnd","nativeSrc":"1164:7:30","nodeType":"YulTypedName","src":"1164:7:30","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1176:6:30","nodeType":"YulTypedName","src":"1176:6:30","type":""}],"src":"1117:226:30"},{"body":{"nativeSrc":"1449:102:30","nodeType":"YulBlock","src":"1449:102:30","statements":[{"nativeSrc":"1459:26:30","nodeType":"YulAssignment","src":"1459:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"1471:9:30","nodeType":"YulIdentifier","src":"1471:9:30"},{"kind":"number","nativeSrc":"1482:2:30","nodeType":"YulLiteral","src":"1482:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1467:3:30","nodeType":"YulIdentifier","src":"1467:3:30"},"nativeSrc":"1467:18:30","nodeType":"YulFunctionCall","src":"1467:18:30"},"variableNames":[{"name":"tail","nativeSrc":"1459:4:30","nodeType":"YulIdentifier","src":"1459:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1501:9:30","nodeType":"YulIdentifier","src":"1501:9:30"},{"arguments":[{"name":"value0","nativeSrc":"1516:6:30","nodeType":"YulIdentifier","src":"1516:6:30"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1532:3:30","nodeType":"YulLiteral","src":"1532:3:30","type":"","value":"160"},{"kind":"number","nativeSrc":"1537:1:30","nodeType":"YulLiteral","src":"1537:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1528:3:30","nodeType":"YulIdentifier","src":"1528:3:30"},"nativeSrc":"1528:11:30","nodeType":"YulFunctionCall","src":"1528:11:30"},{"kind":"number","nativeSrc":"1541:1:30","nodeType":"YulLiteral","src":"1541:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1524:3:30","nodeType":"YulIdentifier","src":"1524:3:30"},"nativeSrc":"1524:19:30","nodeType":"YulFunctionCall","src":"1524:19:30"}],"functionName":{"name":"and","nativeSrc":"1512:3:30","nodeType":"YulIdentifier","src":"1512:3:30"},"nativeSrc":"1512:32:30","nodeType":"YulFunctionCall","src":"1512:32:30"}],"functionName":{"name":"mstore","nativeSrc":"1494:6:30","nodeType":"YulIdentifier","src":"1494:6:30"},"nativeSrc":"1494:51:30","nodeType":"YulFunctionCall","src":"1494:51:30"},"nativeSrc":"1494:51:30","nodeType":"YulExpressionStatement","src":"1494:51:30"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1348:203:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1418:9:30","nodeType":"YulTypedName","src":"1418:9:30","type":""},{"name":"value0","nativeSrc":"1429:6:30","nodeType":"YulTypedName","src":"1429:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1440:4:30","nodeType":"YulTypedName","src":"1440:4:30","type":""}],"src":"1348:203:30"},{"body":{"nativeSrc":"1651:92:30","nodeType":"YulBlock","src":"1651:92:30","statements":[{"nativeSrc":"1661:26:30","nodeType":"YulAssignment","src":"1661:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"1673:9:30","nodeType":"YulIdentifier","src":"1673:9:30"},{"kind":"number","nativeSrc":"1684:2:30","nodeType":"YulLiteral","src":"1684:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1669:3:30","nodeType":"YulIdentifier","src":"1669:3:30"},"nativeSrc":"1669:18:30","nodeType":"YulFunctionCall","src":"1669:18:30"},"variableNames":[{"name":"tail","nativeSrc":"1661:4:30","nodeType":"YulIdentifier","src":"1661:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1703:9:30","nodeType":"YulIdentifier","src":"1703:9:30"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1728:6:30","nodeType":"YulIdentifier","src":"1728:6:30"}],"functionName":{"name":"iszero","nativeSrc":"1721:6:30","nodeType":"YulIdentifier","src":"1721:6:30"},"nativeSrc":"1721:14:30","nodeType":"YulFunctionCall","src":"1721:14:30"}],"functionName":{"name":"iszero","nativeSrc":"1714:6:30","nodeType":"YulIdentifier","src":"1714:6:30"},"nativeSrc":"1714:22:30","nodeType":"YulFunctionCall","src":"1714:22:30"}],"functionName":{"name":"mstore","nativeSrc":"1696:6:30","nodeType":"YulIdentifier","src":"1696:6:30"},"nativeSrc":"1696:41:30","nodeType":"YulFunctionCall","src":"1696:41:30"},"nativeSrc":"1696:41:30","nodeType":"YulExpressionStatement","src":"1696:41:30"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1556:187:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1620:9:30","nodeType":"YulTypedName","src":"1620:9:30","type":""},{"name":"value0","nativeSrc":"1631:6:30","nodeType":"YulTypedName","src":"1631:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1642:4:30","nodeType":"YulTypedName","src":"1642:4:30","type":""}],"src":"1556:187:30"},{"body":{"nativeSrc":"1922:161:30","nodeType":"YulBlock","src":"1922:161:30","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1939:9:30","nodeType":"YulIdentifier","src":"1939:9:30"},{"kind":"number","nativeSrc":"1950:2:30","nodeType":"YulLiteral","src":"1950:2:30","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1932:6:30","nodeType":"YulIdentifier","src":"1932:6:30"},"nativeSrc":"1932:21:30","nodeType":"YulFunctionCall","src":"1932:21:30"},"nativeSrc":"1932:21:30","nodeType":"YulExpressionStatement","src":"1932:21:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1973:9:30","nodeType":"YulIdentifier","src":"1973:9:30"},{"kind":"number","nativeSrc":"1984:2:30","nodeType":"YulLiteral","src":"1984:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1969:3:30","nodeType":"YulIdentifier","src":"1969:3:30"},"nativeSrc":"1969:18:30","nodeType":"YulFunctionCall","src":"1969:18:30"},{"kind":"number","nativeSrc":"1989:2:30","nodeType":"YulLiteral","src":"1989:2:30","type":"","value":"11"}],"functionName":{"name":"mstore","nativeSrc":"1962:6:30","nodeType":"YulIdentifier","src":"1962:6:30"},"nativeSrc":"1962:30:30","nodeType":"YulFunctionCall","src":"1962:30:30"},"nativeSrc":"1962:30:30","nodeType":"YulExpressionStatement","src":"1962:30:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2012:9:30","nodeType":"YulIdentifier","src":"2012:9:30"},{"kind":"number","nativeSrc":"2023:2:30","nodeType":"YulLiteral","src":"2023:2:30","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2008:3:30","nodeType":"YulIdentifier","src":"2008:3:30"},"nativeSrc":"2008:18:30","nodeType":"YulFunctionCall","src":"2008:18:30"},{"hexValue":"77726f6e67206f776e6572","kind":"string","nativeSrc":"2028:13:30","nodeType":"YulLiteral","src":"2028:13:30","type":"","value":"wrong owner"}],"functionName":{"name":"mstore","nativeSrc":"2001:6:30","nodeType":"YulIdentifier","src":"2001:6:30"},"nativeSrc":"2001:41:30","nodeType":"YulFunctionCall","src":"2001:41:30"},"nativeSrc":"2001:41:30","nodeType":"YulExpressionStatement","src":"2001:41:30"},{"nativeSrc":"2051:26:30","nodeType":"YulAssignment","src":"2051:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2063:9:30","nodeType":"YulIdentifier","src":"2063:9:30"},{"kind":"number","nativeSrc":"2074:2:30","nodeType":"YulLiteral","src":"2074:2:30","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2059:3:30","nodeType":"YulIdentifier","src":"2059:3:30"},"nativeSrc":"2059:18:30","nodeType":"YulFunctionCall","src":"2059:18:30"},"variableNames":[{"name":"tail","nativeSrc":"2051:4:30","nodeType":"YulIdentifier","src":"2051:4:30"}]}]},"name":"abi_encode_tuple_t_stringliteral_1910a1b31627cb44672fa41011dea21df90d76304ea37cd5fe77e38d944205f7__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1748:335:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1899:9:30","nodeType":"YulTypedName","src":"1899:9:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1913:4:30","nodeType":"YulTypedName","src":"1913:4:30","type":""}],"src":"1748:335:30"},{"body":{"nativeSrc":"2199:76:30","nodeType":"YulBlock","src":"2199:76:30","statements":[{"nativeSrc":"2209:26:30","nodeType":"YulAssignment","src":"2209:26:30","value":{"arguments":[{"name":"headStart","nativeSrc":"2221:9:30","nodeType":"YulIdentifier","src":"2221:9:30"},{"kind":"number","nativeSrc":"2232:2:30","nodeType":"YulLiteral","src":"2232:2:30","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2217:3:30","nodeType":"YulIdentifier","src":"2217:3:30"},"nativeSrc":"2217:18:30","nodeType":"YulFunctionCall","src":"2217:18:30"},"variableNames":[{"name":"tail","nativeSrc":"2209:4:30","nodeType":"YulIdentifier","src":"2209:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2251:9:30","nodeType":"YulIdentifier","src":"2251:9:30"},{"name":"value0","nativeSrc":"2262:6:30","nodeType":"YulIdentifier","src":"2262:6:30"}],"functionName":{"name":"mstore","nativeSrc":"2244:6:30","nodeType":"YulIdentifier","src":"2244:6:30"},"nativeSrc":"2244:25:30","nodeType":"YulFunctionCall","src":"2244:25:30"},"nativeSrc":"2244:25:30","nodeType":"YulExpressionStatement","src":"2244:25:30"}]},"name":"abi_encode_tuple_t_rational_999_by_1__to_t_uint256__fromStack_reversed","nativeSrc":"2088:187:30","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2168:9:30","nodeType":"YulTypedName","src":"2168:9:30","type":""},{"name":"value0","nativeSrc":"2179:6:30","nodeType":"YulTypedName","src":"2179:6:30","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2190:4:30","nodeType":"YulTypedName","src":"2190:4:30","type":""}],"src":"2088:187:30"}]},"contents":"{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let value := 0\n value := calldataload(add(headStart, 64))\n value2 := value\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := 0\n value := calldataload(add(headStart, 32))\n value1 := value\n }\n function abi_encode_tuple_t_contract$_IReentrantStakingTarget_$10380__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_stringliteral_1910a1b31627cb44672fa41011dea21df90d76304ea37cd5fe77e38d944205f7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 11)\n mstore(add(headStart, 64), \"wrong owner\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_rational_999_by_1__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}","id":30,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"10388":[{"length":32,"start":261},{"length":32,"start":527}]},"linkReferences":{},"object":"608060405234801561000f575f80fd5b5060043610610060575f3560e01c806321f161931461006457806323b872dd146100b257806340c10f19146100c55780634cf088d9146101005780636352211e14610144578063d7751b851461016c575b5f80fd5b6100b06001805460ff1916811790556103e75f9081526020527f332eac5de6beffe8ee7761a0342c75594c3acb5fdde0a2555227e56aa65d414180546001600160a01b03191630179055565b005b6100b06100c03660046102b8565b610189565b6100b06100d33660046102f2565b5f90815260208190526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6101277f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61012761015236600461031a565b5f908152602081905260409020546001600160a01b031690565b6001546101799060ff1681565b604051901515815260200161013b565b5f818152602081905260409020546001600160a01b038481169116146101e35760405162461bcd60e51b815260206004820152600b60248201526a3bb937b7339037bbb732b960a91b604482015260640160405180910390fd5b60015460ff161561026f576001805460ff1916905560405163534a7e1d60e11b81526103e760048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a694fc3a906024015f604051808303815f87803b158015610258575f80fd5b505af115801561026a573d5f803e3d5ffd5b505050505b5f90815260208190526040902080546001600160a01b0319166001600160a01b039290921691909117905550565b80356001600160a01b03811681146102b3575f80fd5b919050565b5f805f606084860312156102ca575f80fd5b6102d38461029d565b92506102e16020850161029d565b929592945050506040919091013590565b5f8060408385031215610303575f80fd5b61030c8361029d565b946020939093013593505050565b5f6020828403121561032a575f80fd5b503591905056fea2646970667358221220be094efbcfd99befb0cdd910374618b8ffce949b88e6c540d277bc50eb87bb4064736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x60 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x21F16193 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xD7751B85 EQ PUSH2 0x16C JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH2 0x3E7 PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 MSTORE PUSH32 0x332EAC5DE6BEFFE8EE7761A0342C75594C3ACB5FDDE0A2555227E56AA65D4141 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND ADDRESS OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B8 JUMP JUMPDEST PUSH2 0x189 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xD3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x127 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x127 PUSH2 0x152 CALLDATASIZE PUSH1 0x4 PUSH2 0x31A JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x179 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x13B JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x1E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x3BB937B7339037BBB732B9 PUSH1 0xA9 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x26F JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH4 0x534A7E1D PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x3E7 PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xA694FC3A SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x258 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CA JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x2D3 DUP5 PUSH2 0x29D JUMP JUMPDEST SWAP3 POP PUSH2 0x2E1 PUSH1 0x20 DUP6 ADD PUSH2 0x29D JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x303 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x30C DUP4 PUSH2 0x29D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE MULMOD 0x4E 0xFB 0xCF 0xD9 SWAP12 0xEF 0xB0 0xCD 0xD9 LT CALLDATACOPY CHAINID XOR 0xB8 SELFDESTRUCT 0xCE SWAP5 SWAP12 DUP9 0xE6 0xC5 BLOCKHASH 0xD2 PUSH24 0xBC50EB87BB4064736F6C634300081A003300000000000000 ","sourceMap":"215:876:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;587:108;;646:4;630:20;;-1:-1:-1;;630:20:29;;;;;668:3;630:13;660:12;;;;;;:28;;-1:-1:-1;;;;;;660:28:29;683:4;660:28;;;587:108;;;813:276;;;;;;:::i;:::-;;:::i;491:90::-;;;;;;:::i;:::-;553:7;:16;;;;;;;;;;:21;;-1:-1:-1;;;;;;553:21:29;-1:-1:-1;;;;;553:21:29;;;;;;;;;;491:90;309:48;;;;;;;;-1:-1:-1;;;;;1073:32:30;;;1055:51;;1043:2;1028:18;309:48:29;;;;;;;;701:106;;;;;;:::i;:::-;758:7;784:16;;;;;;;;;;;-1:-1:-1;;;;;784:16:29;;701:106;363:25;;;;;;;;;;;;1721:14:30;;1714:22;1696:41;;1684:2;1669:18;363:25:29;1556:187:30;813:276:29;905:7;:16;;;;;;;;;;;-1:-1:-1;;;;;905:24:29;;;:16;;:24;897:48;;;;-1:-1:-1;;;897:48:29;;1950:2:30;897:48:29;;;1932:21:30;1989:2;1969:18;;;1962:30;-1:-1:-1;;;2008:18:30;;;2001:41;2059:18;;897:48:29;;;;;;;;959:13;;;;955:97;;;988:13;:21;;-1:-1:-1;;988:21:29;;;1023:18;;-1:-1:-1;;;1023:18:29;;1037:3;1023:18;;;2244:25:30;1023:7:29;-1:-1:-1;;;;;1023:13:29;;;;2217:18:30;;1023::29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;955:97;1061:7;:16;;;;;;;;;;:21;;-1:-1:-1;;;;;;1061:21:29;-1:-1:-1;;;;;1061:21:29;;;;;;;;;;-1:-1:-1;813:276:29:o;14:173:30:-;82:20;;-1:-1:-1;;;;;131:31:30;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:374::-;269:6;277;285;338:2;326:9;317:7;313:23;309:32;306:52;;;354:1;351;344:12;306:52;377:29;396:9;377:29;:::i;:::-;367:39;;425:38;459:2;448:9;444:18;425:38;:::i;:::-;192:374;;415:48;;-1:-1:-1;;;532:2:30;517:18;;;;504:32;;192:374::o;571:300::-;639:6;647;700:2;688:9;679:7;675:23;671:32;668:52;;;716:1;713;706:12;668:52;739:29;758:9;739:29;:::i;:::-;729:39;837:2;822:18;;;;809:32;;-1:-1:-1;;;571:300:30:o;1117:226::-;1176:6;1229:2;1217:9;1208:7;1204:23;1200:32;1197:52;;;1245:1;1242;1235:12;1197:52;-1:-1:-1;1290:23:30;;1117:226;-1:-1:-1;1117:226:30:o"},"methodIdentifiers":{"attackEnabled()":"d7751b85","enableAttack()":"21f16193","mint(address,uint256)":"40c10f19","ownerOf(uint256)":"6352211e","staking()":"4cf088d9","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"attackEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableAttack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"staking\",\"outputs\":[{\"internalType\":\"contract IReentrantStakingTarget\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Test-only NFT double that calls stake again from transferFrom.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ReentrantERC721.sol\":\"ReentrantERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/test/ReentrantERC721.sol\":{\"keccak256\":\"0x8ebe653ea43a215fd1ec9d1dcd88f347d972fb07a16665155eabcbfb1c8b2d3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a552d63277936a9176f59919e274068c73d1b98e5f4fd693ecf93d35f7e1d31\",\"dweb:/ipfs/QmWrZLhASr37r5BqNTLAAaySLvvsV2LvCpMtyogUu6BQvC\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":10385,"contract":"contracts/test/ReentrantERC721.sol:ReentrantERC721","label":"_owners","offset":0,"slot":"0","type":"t_mapping(t_uint256,t_address)"},{"astId":10390,"contract":"contracts/test/ReentrantERC721.sol:ReentrantERC721","label":"attackEnabled","offset":0,"slot":"1","type":"t_bool"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}}},"sources":{"@openzeppelin/contracts/access/AccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","exportedSymbols":{"AccessControl":[295],"Context":[3907],"ERC165":[5838],"IAccessControl":[378]},"id":296,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:0"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"./IAccessControl.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":296,"sourceUnit":379,"src":"134:52:0","symbolAliases":[{"foreign":{"id":2,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"142:14:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":296,"sourceUnit":3908,"src":"187:45:0","symbolAliases":[{"foreign":{"id":4,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"195:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../utils/introspection/ERC165.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":296,"sourceUnit":5839,"src":"233:57:0","symbolAliases":[{"foreign":{"id":6,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5838,"src":"241:6:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":9,"name":"Context","nameLocations":["1988:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":3907,"src":"1988:7:0"},"id":10,"nodeType":"InheritanceSpecifier","src":"1988:7:0"},{"baseName":{"id":11,"name":"IAccessControl","nameLocations":["1997:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1997:14:0"},"id":12,"nodeType":"InheritanceSpecifier","src":"1997:14:0"},{"baseName":{"id":13,"name":"ERC165","nameLocations":["2013:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":5838,"src":"2013:6:0"},"id":14,"nodeType":"InheritanceSpecifier","src":"2013:6:0"}],"canonicalName":"AccessControl","contractDependencies":[],"contractKind":"contract","documentation":{"id":8,"nodeType":"StructuredDocumentation","src":"292:1660:0","text":" @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 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 ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\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 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 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."},"fullyImplemented":true,"id":295,"linearizedBaseContracts":[295,5838,5850,378,3907],"name":"AccessControl","nameLocation":"1971:13:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"AccessControl.RoleData","id":21,"members":[{"constant":false,"id":18,"mutability":"mutable","name":"hasRole","nameLocation":"2085:7:0","nodeType":"VariableDeclaration","scope":21,"src":"2052:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":17,"keyName":"account","keyNameLocation":"2068:7:0","keyType":{"id":15,"name":"address","nodeType":"ElementaryTypeName","src":"2060:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2052:32:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":16,"name":"bool","nodeType":"ElementaryTypeName","src":"2079:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":20,"mutability":"mutable","name":"adminRole","nameLocation":"2110:9:0","nodeType":"VariableDeclaration","scope":21,"src":"2102:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2102:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"2033:8:0","nodeType":"StructDefinition","scope":295,"src":"2026:100:0","visibility":"public"},{"constant":false,"id":26,"mutability":"mutable","name":"_roles","nameLocation":"2174:6:0","nodeType":"VariableDeclaration","scope":295,"src":"2132:48:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData)"},"typeName":{"id":25,"keyName":"role","keyNameLocation":"2148:4:0","keyType":{"id":22,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2140:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2132:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":24,"nodeType":"UserDefinedTypeName","pathNode":{"id":23,"name":"RoleData","nameLocations":["2156:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":21,"src":"2156:8:0"},"referencedDeclaration":21,"src":"2156:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage_ptr","typeString":"struct AccessControl.RoleData"}}},"visibility":"private"},{"constant":true,"functionSelector":"a217fddf","id":29,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2211:18:0","nodeType":"VariableDeclaration","scope":295,"src":"2187:49:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":27,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2187:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":28,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2232:4:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"body":{"id":39,"nodeType":"Block","src":"2454:44:0","statements":[{"expression":{"arguments":[{"id":35,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"2475:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":34,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[93,114],"referencedDeclaration":93,"src":"2464:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":36,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2464:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37,"nodeType":"ExpressionStatement","src":"2464:16:0"},{"id":38,"nodeType":"PlaceholderStatement","src":"2490:1:0"}]},"documentation":{"id":30,"nodeType":"StructuredDocumentation","src":"2243:174:0","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role."},"id":40,"name":"onlyRole","nameLocation":"2431:8:0","nodeType":"ModifierDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32,"mutability":"mutable","name":"role","nameLocation":"2448:4:0","nodeType":"VariableDeclaration","scope":40,"src":"2440:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2440:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2439:14:0"},"src":"2422:76:0","virtual":false,"visibility":"internal"},{"baseFunctions":[5837],"body":{"id":61,"nodeType":"Block","src":"2622:111:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":59,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":54,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":49,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43,"src":"2639:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":51,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"2659:14:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$378_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$378_$","typeString":"type(contract IAccessControl)"}],"id":50,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2654:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":52,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2654:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$378","typeString":"type(contract IAccessControl)"}},"id":53,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2675:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"2654:32:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2639:47:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":57,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43,"src":"2714:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":55,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2690:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControl_$295_$","typeString":"type(contract super AccessControl)"}},"id":56,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2696:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":5837,"src":"2690:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":58,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2690:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2639:87:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":48,"id":60,"nodeType":"Return","src":"2632:94:0"}]},"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"2504:22:0","text":"@inheritdoc ERC165"},"functionSelector":"01ffc9a7","id":62,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2540:17:0","nodeType":"FunctionDefinition","overrides":{"id":45,"nodeType":"OverrideSpecifier","overrides":[],"src":"2598:8:0"},"parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43,"mutability":"mutable","name":"interfaceId","nameLocation":"2565:11:0","nodeType":"VariableDeclaration","scope":62,"src":"2558:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":42,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2558:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2557:20:0"},"returnParameters":{"id":48,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":62,"src":"2616:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":46,"name":"bool","nodeType":"ElementaryTypeName","src":"2616:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2615:6:0"},"scope":295,"src":"2531:202:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[345],"body":{"id":79,"nodeType":"Block","src":"2903:53:0","statements":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":72,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"2920:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":74,"indexExpression":{"id":73,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"2927:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2920:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":75,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2933:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":18,"src":"2920:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":77,"indexExpression":{"id":76,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2941:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2920:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":71,"id":78,"nodeType":"Return","src":"2913:36:0"}]},"documentation":{"id":63,"nodeType":"StructuredDocumentation","src":"2739:76:0","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":80,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"2829:7:0","nodeType":"FunctionDefinition","parameters":{"id":68,"nodeType":"ParameterList","parameters":[{"constant":false,"id":65,"mutability":"mutable","name":"role","nameLocation":"2845:4:0","nodeType":"VariableDeclaration","scope":80,"src":"2837:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":64,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2837:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":67,"mutability":"mutable","name":"account","nameLocation":"2859:7:0","nodeType":"VariableDeclaration","scope":80,"src":"2851:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":66,"name":"address","nodeType":"ElementaryTypeName","src":"2851:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2836:31:0"},"returnParameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80,"src":"2897:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":69,"name":"bool","nodeType":"ElementaryTypeName","src":"2897:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2896:6:0"},"scope":295,"src":"2820:136:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":92,"nodeType":"Block","src":"3221:47:0","statements":[{"expression":{"arguments":[{"id":87,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"3242:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":88,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"3248:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3248:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":86,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[93,114],"referencedDeclaration":114,"src":"3231:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":90,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3231:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91,"nodeType":"ExpressionStatement","src":"3231:30:0"}]},"documentation":{"id":81,"nodeType":"StructuredDocumentation","src":"2962:198:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier."},"id":93,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"3174:10:0","nodeType":"FunctionDefinition","parameters":{"id":84,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"mutability":"mutable","name":"role","nameLocation":"3193:4:0","nodeType":"VariableDeclaration","scope":93,"src":"3185:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3185:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3184:14:0"},"returnParameters":{"id":85,"nodeType":"ParameterList","parameters":[],"src":"3221:0:0"},"scope":295,"src":"3165:103:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":113,"nodeType":"Block","src":"3471:124:0","statements":[{"condition":{"id":105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3485:23:0","subExpression":{"arguments":[{"id":102,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"3494:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":103,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"3500:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":101,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"3486:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3486:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":112,"nodeType":"IfStatement","src":"3481:108:0","trueBody":{"id":111,"nodeType":"Block","src":"3510:79:0","statements":[{"errorCall":{"arguments":[{"id":107,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"3564:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":108,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"3573:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":106,"name":"AccessControlUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"3531:32:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$_t_error_$","typeString":"function (address,bytes32) pure returns (error)"}},"id":109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3531:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":110,"nodeType":"RevertStatement","src":"3524:54:0"}]}}]},"documentation":{"id":94,"nodeType":"StructuredDocumentation","src":"3274:119:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`."},"id":114,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"3407:10:0","nodeType":"FunctionDefinition","parameters":{"id":99,"nodeType":"ParameterList","parameters":[{"constant":false,"id":96,"mutability":"mutable","name":"role","nameLocation":"3426:4:0","nodeType":"VariableDeclaration","scope":114,"src":"3418:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":95,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3418:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":98,"mutability":"mutable","name":"account","nameLocation":"3440:7:0","nodeType":"VariableDeclaration","scope":114,"src":"3432:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"3432:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3417:31:0"},"returnParameters":{"id":100,"nodeType":"ParameterList","parameters":[],"src":"3471:0:0"},"scope":295,"src":"3398:197:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[353],"body":{"id":127,"nodeType":"Block","src":"3850:46:0","statements":[{"expression":{"expression":{"baseExpression":{"id":122,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"3867:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":124,"indexExpression":{"id":123,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117,"src":"3874:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3867:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3880:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":20,"src":"3867:22:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":121,"id":126,"nodeType":"Return","src":"3860:29:0"}]},"documentation":{"id":115,"nodeType":"StructuredDocumentation","src":"3601:170:0","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":128,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"3785:12:0","nodeType":"FunctionDefinition","parameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"role","nameLocation":"3806:4:0","nodeType":"VariableDeclaration","scope":128,"src":"3798:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":116,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3798:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3797:14:0"},"returnParameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":128,"src":"3841:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":119,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3841:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3840:9:0"},"scope":295,"src":"3776:120:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[361],"body":{"id":146,"nodeType":"Block","src":"4286:42:0","statements":[{"expression":{"arguments":[{"id":142,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":131,"src":"4307:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":143,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":133,"src":"4313:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":141,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":256,"src":"4296:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4296:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":145,"nodeType":"ExpressionStatement","src":"4296:25:0"}]},"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"3902:285:0","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","id":147,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":137,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":131,"src":"4279:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"4266:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4266:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":139,"kind":"modifierInvocation","modifierName":{"id":135,"name":"onlyRole","nameLocations":["4257:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4257:8:0"},"nodeType":"ModifierInvocation","src":"4257:28:0"}],"name":"grantRole","nameLocation":"4201:9:0","nodeType":"FunctionDefinition","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"role","nameLocation":"4219:4:0","nodeType":"VariableDeclaration","scope":147,"src":"4211:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":130,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4211:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"account","nameLocation":"4233:7:0","nodeType":"VariableDeclaration","scope":147,"src":"4225:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":132,"name":"address","nodeType":"ElementaryTypeName","src":"4225:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4210:31:0"},"returnParameters":{"id":140,"nodeType":"ParameterList","parameters":[],"src":"4286:0:0"},"scope":295,"src":"4192:136:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[369],"body":{"id":165,"nodeType":"Block","src":"4703:43:0","statements":[{"expression":{"arguments":[{"id":161,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"4725:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":162,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":152,"src":"4731:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":160,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"4713:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4713:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":164,"nodeType":"ExpressionStatement","src":"4713:26:0"}]},"documentation":{"id":148,"nodeType":"StructuredDocumentation","src":"4334:269:0","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","id":166,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":156,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"4696:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":155,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"4683:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4683:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":158,"kind":"modifierInvocation","modifierName":{"id":154,"name":"onlyRole","nameLocations":["4674:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4674:8:0"},"nodeType":"ModifierInvocation","src":"4674:28:0"}],"name":"revokeRole","nameLocation":"4617:10:0","nodeType":"FunctionDefinition","parameters":{"id":153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":150,"mutability":"mutable","name":"role","nameLocation":"4636:4:0","nodeType":"VariableDeclaration","scope":166,"src":"4628:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":149,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4628:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":152,"mutability":"mutable","name":"account","nameLocation":"4650:7:0","nodeType":"VariableDeclaration","scope":166,"src":"4642:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":151,"name":"address","nodeType":"ElementaryTypeName","src":"4642:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4627:31:0"},"returnParameters":{"id":159,"nodeType":"ParameterList","parameters":[],"src":"4703:0:0"},"scope":295,"src":"4608:138:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[377],"body":{"id":188,"nodeType":"Block","src":"5373:166:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":174,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5387:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":175,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"5409:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5409:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5387:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":182,"nodeType":"IfStatement","src":"5383:102:0","trueBody":{"id":181,"nodeType":"Block","src":"5423:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":178,"name":"AccessControlBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":308,"src":"5444:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5444:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":180,"nodeType":"RevertStatement","src":"5437:37:0"}]}},{"expression":{"arguments":[{"id":184,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"5507:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":185,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5513:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":183,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"5495:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5495:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":187,"nodeType":"ExpressionStatement","src":"5495:37:0"}]},"documentation":{"id":167,"nodeType":"StructuredDocumentation","src":"4752:537:0","text":" @dev Revokes `role` from the calling account.\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 If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","id":189,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"5303:12:0","nodeType":"FunctionDefinition","parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":169,"mutability":"mutable","name":"role","nameLocation":"5324:4:0","nodeType":"VariableDeclaration","scope":189,"src":"5316:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":168,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5316:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":171,"mutability":"mutable","name":"callerConfirmation","nameLocation":"5338:18:0","nodeType":"VariableDeclaration","scope":189,"src":"5330:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"5330:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5315:42:0"},"returnParameters":{"id":173,"nodeType":"ParameterList","parameters":[],"src":"5373:0:0"},"scope":295,"src":"5294:245:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":216,"nodeType":"Block","src":"5737:174:0","statements":[{"assignments":[198],"declarations":[{"constant":false,"id":198,"mutability":"mutable","name":"previousAdminRole","nameLocation":"5755:17:0","nodeType":"VariableDeclaration","scope":216,"src":"5747:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":197,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5747:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":202,"initialValue":{"arguments":[{"id":200,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"5788:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":199,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"5775:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5775:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5747:46:0"},{"expression":{"id":208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":203,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"5803:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":205,"indexExpression":{"id":204,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"5810:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5803:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5816:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":20,"src":"5803:22:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":207,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"5828:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5803:34:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":209,"nodeType":"ExpressionStatement","src":"5803:34:0"},{"eventCall":{"arguments":[{"id":211,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"5869:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":212,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"5875:17:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":213,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"5894:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":210,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":317,"src":"5852:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5852:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":215,"nodeType":"EmitStatement","src":"5847:57:0"}]},"documentation":{"id":190,"nodeType":"StructuredDocumentation","src":"5545:114:0","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":217,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"5673:13:0","nodeType":"FunctionDefinition","parameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"role","nameLocation":"5695:4:0","nodeType":"VariableDeclaration","scope":217,"src":"5687:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5687:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":194,"mutability":"mutable","name":"adminRole","nameLocation":"5709:9:0","nodeType":"VariableDeclaration","scope":217,"src":"5701:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":193,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5701:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5686:33:0"},"returnParameters":{"id":196,"nodeType":"ParameterList","parameters":[],"src":"5737:0:0"},"scope":295,"src":"5664:247:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":255,"nodeType":"Block","src":"6228:233:0","statements":[{"condition":{"id":231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6242:23:0","subExpression":{"arguments":[{"id":228,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"6251:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":229,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":222,"src":"6257:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":227,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"6243:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6243:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":253,"nodeType":"Block","src":"6418:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6439:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":226,"id":252,"nodeType":"Return","src":"6432:12:0"}]},"id":254,"nodeType":"IfStatement","src":"6238:217:0","trueBody":{"id":250,"nodeType":"Block","src":"6267:145:0","statements":[{"expression":{"id":239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":232,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"6281:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":234,"indexExpression":{"id":233,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"6288:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6281:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6294:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":18,"src":"6281:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":237,"indexExpression":{"id":236,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":222,"src":"6302:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6281:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6313:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6281:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":240,"nodeType":"ExpressionStatement","src":"6281:36:0"},{"eventCall":{"arguments":[{"id":242,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"6348:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":243,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":222,"src":"6354:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":244,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"6363:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6363:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":241,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"6336:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6336:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":247,"nodeType":"EmitStatement","src":"6331:45:0"},{"expression":{"hexValue":"74727565","id":248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6397:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":226,"id":249,"nodeType":"Return","src":"6390:11:0"}]}}]},"documentation":{"id":218,"nodeType":"StructuredDocumentation","src":"5917:223:0","text":" @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"id":256,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"6154:10:0","nodeType":"FunctionDefinition","parameters":{"id":223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":220,"mutability":"mutable","name":"role","nameLocation":"6173:4:0","nodeType":"VariableDeclaration","scope":256,"src":"6165:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":219,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6165:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":222,"mutability":"mutable","name":"account","nameLocation":"6187:7:0","nodeType":"VariableDeclaration","scope":256,"src":"6179:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":221,"name":"address","nodeType":"ElementaryTypeName","src":"6179:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6164:31:0"},"returnParameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":256,"src":"6222:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":224,"name":"bool","nodeType":"ElementaryTypeName","src":"6222:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6221:6:0"},"scope":295,"src":"6145:316:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":293,"nodeType":"Block","src":"6782:233:0","statements":[{"condition":{"arguments":[{"id":267,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"6804:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":268,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"6810:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":266,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"6796:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6796:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":291,"nodeType":"Block","src":"6972:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6993:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":265,"id":290,"nodeType":"Return","src":"6986:12:0"}]},"id":292,"nodeType":"IfStatement","src":"6792:217:0","trueBody":{"id":288,"nodeType":"Block","src":"6820:146:0","statements":[{"expression":{"id":277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":270,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"6834:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":272,"indexExpression":{"id":271,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"6841:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6834:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6847:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":18,"src":"6834:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":275,"indexExpression":{"id":274,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"6855:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6834:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6866:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6834:37:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":278,"nodeType":"ExpressionStatement","src":"6834:37:0"},{"eventCall":{"arguments":[{"id":280,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"6902:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":281,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"6908:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":282,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"6917:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6917:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":279,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":335,"src":"6890:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6890:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":285,"nodeType":"EmitStatement","src":"6885:45:0"},{"expression":{"hexValue":"74727565","id":286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6951:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":265,"id":287,"nodeType":"Return","src":"6944:11:0"}]}}]},"documentation":{"id":257,"nodeType":"StructuredDocumentation","src":"6467:226:0","text":" @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"id":294,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"6707:11:0","nodeType":"FunctionDefinition","parameters":{"id":262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":259,"mutability":"mutable","name":"role","nameLocation":"6727:4:0","nodeType":"VariableDeclaration","scope":294,"src":"6719:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":258,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6719:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":261,"mutability":"mutable","name":"account","nameLocation":"6741:7:0","nodeType":"VariableDeclaration","scope":294,"src":"6733:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":260,"name":"address","nodeType":"ElementaryTypeName","src":"6733:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6718:31:0"},"returnParameters":{"id":265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":264,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":294,"src":"6776:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":263,"name":"bool","nodeType":"ElementaryTypeName","src":"6776:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6775:6:0"},"scope":295,"src":"6698:317:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":296,"src":"1953:5064:0","usedErrors":[305,308],"usedEvents":[317,326,335]}],"src":"108:6910:0"},"id":0},"@openzeppelin/contracts/access/IAccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[378]},"id":379,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":297,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"109:24:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":298,"nodeType":"StructuredDocumentation","src":"135:90:1","text":" @dev External interface of AccessControl declared to support ERC-165 detection."},"fullyImplemented":false,"id":378,"linearizedBaseContracts":[378],"name":"IAccessControl","nameLocation":"236:14:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":299,"nodeType":"StructuredDocumentation","src":"257:56:1","text":" @dev The `account` is missing a role."},"errorSelector":"e2517d3f","id":305,"name":"AccessControlUnauthorizedAccount","nameLocation":"324:32:1","nodeType":"ErrorDefinition","parameters":{"id":304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":301,"mutability":"mutable","name":"account","nameLocation":"365:7:1","nodeType":"VariableDeclaration","scope":305,"src":"357:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":300,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":303,"mutability":"mutable","name":"neededRole","nameLocation":"382:10:1","nodeType":"VariableDeclaration","scope":305,"src":"374:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":302,"name":"bytes32","nodeType":"ElementaryTypeName","src":"374:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"356:37:1"},"src":"318:76:1"},{"documentation":{"id":306,"nodeType":"StructuredDocumentation","src":"400:148:1","text":" @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."},"errorSelector":"6697b232","id":308,"name":"AccessControlBadConfirmation","nameLocation":"559:28:1","nodeType":"ErrorDefinition","parameters":{"id":307,"nodeType":"ParameterList","parameters":[],"src":"587:2:1"},"src":"553:37:1"},{"anonymous":false,"documentation":{"id":309,"nodeType":"StructuredDocumentation","src":"596:254:1","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted to signal this."},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":317,"name":"RoleAdminChanged","nameLocation":"861:16:1","nodeType":"EventDefinition","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":311,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"894:4:1","nodeType":"VariableDeclaration","scope":317,"src":"878:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":310,"name":"bytes32","nodeType":"ElementaryTypeName","src":"878:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":313,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"916:17:1","nodeType":"VariableDeclaration","scope":317,"src":"900:33:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":312,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":315,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"951:12:1","nodeType":"VariableDeclaration","scope":317,"src":"935:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":314,"name":"bytes32","nodeType":"ElementaryTypeName","src":"935:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"877:87:1"},"src":"855:110:1"},{"anonymous":false,"documentation":{"id":318,"nodeType":"StructuredDocumentation","src":"971:295:1","text":" @dev Emitted when `account` is granted `role`.\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}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":326,"name":"RoleGranted","nameLocation":"1277:11:1","nodeType":"EventDefinition","parameters":{"id":325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":320,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1305:4:1","nodeType":"VariableDeclaration","scope":326,"src":"1289:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":319,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1289:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":322,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1327:7:1","nodeType":"VariableDeclaration","scope":326,"src":"1311:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":321,"name":"address","nodeType":"ElementaryTypeName","src":"1311:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":324,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1352:6:1","nodeType":"VariableDeclaration","scope":326,"src":"1336:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":323,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1288:71:1"},"src":"1271:89:1"},{"anonymous":false,"documentation":{"id":327,"nodeType":"StructuredDocumentation","src":"1366:275:1","text":" @dev Emitted when `account` is revoked `role`.\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`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":335,"name":"RoleRevoked","nameLocation":"1652:11:1","nodeType":"EventDefinition","parameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":329,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1680:4:1","nodeType":"VariableDeclaration","scope":335,"src":"1664:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1664:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":331,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1702:7:1","nodeType":"VariableDeclaration","scope":335,"src":"1686:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":330,"name":"address","nodeType":"ElementaryTypeName","src":"1686:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":333,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1727:6:1","nodeType":"VariableDeclaration","scope":335,"src":"1711:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":332,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1663:71:1"},"src":"1646:89:1"},{"documentation":{"id":336,"nodeType":"StructuredDocumentation","src":"1741:76:1","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":345,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1831:7:1","nodeType":"FunctionDefinition","parameters":{"id":341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"role","nameLocation":"1847:4:1","nodeType":"VariableDeclaration","scope":345,"src":"1839:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1839:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":340,"mutability":"mutable","name":"account","nameLocation":"1861:7:1","nodeType":"VariableDeclaration","scope":345,"src":"1853:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":339,"name":"address","nodeType":"ElementaryTypeName","src":"1853:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1838:31:1"},"returnParameters":{"id":344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":345,"src":"1893:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":342,"name":"bool","nodeType":"ElementaryTypeName","src":"1893:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1892:6:1"},"scope":378,"src":"1822:77:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":346,"nodeType":"StructuredDocumentation","src":"1905:184:1","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","id":353,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"2103:12:1","nodeType":"FunctionDefinition","parameters":{"id":349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"role","nameLocation":"2124:4:1","nodeType":"VariableDeclaration","scope":353,"src":"2116:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":347,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2116:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2115:14:1"},"returnParameters":{"id":352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":353,"src":"2153:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":350,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2153:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2152:9:1"},"scope":378,"src":"2094:68:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":354,"nodeType":"StructuredDocumentation","src":"2168:239:1","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":361,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2421:9:1","nodeType":"FunctionDefinition","parameters":{"id":359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":356,"mutability":"mutable","name":"role","nameLocation":"2439:4:1","nodeType":"VariableDeclaration","scope":361,"src":"2431:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":355,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2431:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":358,"mutability":"mutable","name":"account","nameLocation":"2453:7:1","nodeType":"VariableDeclaration","scope":361,"src":"2445:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"2445:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2430:31:1"},"returnParameters":{"id":360,"nodeType":"ParameterList","parameters":[],"src":"2470:0:1"},"scope":378,"src":"2412:59:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":362,"nodeType":"StructuredDocumentation","src":"2477:223:1","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":369,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2714:10:1","nodeType":"FunctionDefinition","parameters":{"id":367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":364,"mutability":"mutable","name":"role","nameLocation":"2733:4:1","nodeType":"VariableDeclaration","scope":369,"src":"2725:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2725:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":366,"mutability":"mutable","name":"account","nameLocation":"2747:7:1","nodeType":"VariableDeclaration","scope":369,"src":"2739:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":365,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2724:31:1"},"returnParameters":{"id":368,"nodeType":"ParameterList","parameters":[],"src":"2764:0:1"},"scope":378,"src":"2705:60:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":370,"nodeType":"StructuredDocumentation","src":"2771:491:1","text":" @dev Revokes `role` from the calling account.\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 If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`."},"functionSelector":"36568abe","id":377,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"3276:12:1","nodeType":"FunctionDefinition","parameters":{"id":375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":372,"mutability":"mutable","name":"role","nameLocation":"3297:4:1","nodeType":"VariableDeclaration","scope":377,"src":"3289:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":371,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3289:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":374,"mutability":"mutable","name":"callerConfirmation","nameLocation":"3311:18:1","nodeType":"VariableDeclaration","scope":377,"src":"3303:26:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":373,"name":"address","nodeType":"ElementaryTypeName","src":"3303:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3288:42:1"},"returnParameters":{"id":376,"nodeType":"ParameterList","parameters":[],"src":"3339:0:1"},"scope":378,"src":"3267:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":379,"src":"226:3116:1","usedErrors":[305,308],"usedEvents":[317,326,335]}],"src":"109:3234:1"},"id":1},"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[3907],"Ownable":[526]},"id":527,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":380,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:2"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":382,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":527,"sourceUnit":3908,"src":"128:45:2","symbolAliases":[{"foreign":{"id":381,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"136:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":384,"name":"Context","nameLocations":["692:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":3907,"src":"692:7:2"},"id":385,"nodeType":"InheritanceSpecifier","src":"692:7:2"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":383,"nodeType":"StructuredDocumentation","src":"175:487:2","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":526,"linearizedBaseContracts":[526,3907],"name":"Ownable","nameLocation":"681:7:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":387,"mutability":"mutable","name":"_owner","nameLocation":"722:6:2","nodeType":"VariableDeclaration","scope":526,"src":"706:22:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":386,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"documentation":{"id":388,"nodeType":"StructuredDocumentation","src":"735:85:2","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","id":392,"name":"OwnableUnauthorizedAccount","nameLocation":"831:26:2","nodeType":"ErrorDefinition","parameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":390,"mutability":"mutable","name":"account","nameLocation":"866:7:2","nodeType":"VariableDeclaration","scope":392,"src":"858:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":389,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"857:17:2"},"src":"825:50:2"},{"documentation":{"id":393,"nodeType":"StructuredDocumentation","src":"881:82:2","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","id":397,"name":"OwnableInvalidOwner","nameLocation":"974:19:2","nodeType":"ErrorDefinition","parameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"mutability":"mutable","name":"owner","nameLocation":"1002:5:2","nodeType":"VariableDeclaration","scope":397,"src":"994:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":394,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"993:15:2"},"src":"968:41:2"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":403,"name":"OwnershipTransferred","nameLocation":"1021:20:2","nodeType":"EventDefinition","parameters":{"id":402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":399,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1058:13:2","nodeType":"VariableDeclaration","scope":403,"src":"1042:29:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":398,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":401,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1089:8:2","nodeType":"VariableDeclaration","scope":403,"src":"1073:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":400,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1041:57:2"},"src":"1015:84:2"},{"body":{"id":428,"nodeType":"Block","src":"1259:153:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":409,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"1273:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1289:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":410,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:2","typeDescriptions":{}}},"id":413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1289:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:26:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":423,"nodeType":"IfStatement","src":"1269:95:2","trueBody":{"id":422,"nodeType":"Block","src":"1301:63:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1350:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:2","typeDescriptions":{}}},"id":419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":415,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"1322:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":421,"nodeType":"RevertStatement","src":"1315:38:2"}]}},{"expression":{"arguments":[{"id":425,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"1392:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":424,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"1373:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":427,"nodeType":"ExpressionStatement","src":"1373:32:2"}]},"documentation":{"id":404,"nodeType":"StructuredDocumentation","src":"1105:115:2","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"id":429,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":406,"mutability":"mutable","name":"initialOwner","nameLocation":"1245:12:2","nodeType":"VariableDeclaration","scope":429,"src":"1237:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":405,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:22:2"},"returnParameters":{"id":408,"nodeType":"ParameterList","parameters":[],"src":"1259:0:2"},"scope":526,"src":"1225:187:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":436,"nodeType":"Block","src":"1521:41:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":432,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"1531:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":434,"nodeType":"ExpressionStatement","src":"1531:13:2"},{"id":435,"nodeType":"PlaceholderStatement","src":"1554:1:2"}]},"documentation":{"id":430,"nodeType":"StructuredDocumentation","src":"1418:77:2","text":" @dev Throws if called by any account other than the owner."},"id":437,"name":"onlyOwner","nameLocation":"1509:9:2","nodeType":"ModifierDefinition","parameters":{"id":431,"nodeType":"ParameterList","parameters":[],"src":"1518:2:2"},"src":"1500:62:2","virtual":false,"visibility":"internal"},{"body":{"id":445,"nodeType":"Block","src":"1693:30:2","statements":[{"expression":{"id":443,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"1710:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":442,"id":444,"nodeType":"Return","src":"1703:13:2"}]},"documentation":{"id":438,"nodeType":"StructuredDocumentation","src":"1568:65:2","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":446,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1647:5:2","nodeType":"FunctionDefinition","parameters":{"id":439,"nodeType":"ParameterList","parameters":[],"src":"1652:2:2"},"returnParameters":{"id":442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":446,"src":"1684:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":440,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:9:2"},"scope":526,"src":"1638:85:2","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":462,"nodeType":"Block","src":"1841:117:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":450,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":446,"src":"1855:5:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:7:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":452,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"1866:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":461,"nodeType":"IfStatement","src":"1851:101:2","trueBody":{"id":460,"nodeType":"Block","src":"1880:72:2","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":456,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"1928:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":455,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"1901:26:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":459,"nodeType":"RevertStatement","src":"1894:47:2"}]}}]},"documentation":{"id":447,"nodeType":"StructuredDocumentation","src":"1729:62:2","text":" @dev Throws if the sender is not the owner."},"id":463,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1805:11:2","nodeType":"FunctionDefinition","parameters":{"id":448,"nodeType":"ParameterList","parameters":[],"src":"1816:2:2"},"returnParameters":{"id":449,"nodeType":"ParameterList","parameters":[],"src":"1841:0:2"},"scope":526,"src":"1796:162:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":476,"nodeType":"Block","src":"2347:47:2","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2384:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":470,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:2","typeDescriptions":{}}},"id":473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":469,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"2357:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":475,"nodeType":"ExpressionStatement","src":"2357:30:2"}]},"documentation":{"id":464,"nodeType":"StructuredDocumentation","src":"1964:324:2","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":477,"implemented":true,"kind":"function","modifiers":[{"id":467,"kind":"modifierInvocation","modifierName":{"id":466,"name":"onlyOwner","nameLocations":["2337:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"2337:9:2"},"nodeType":"ModifierInvocation","src":"2337:9:2"}],"name":"renounceOwnership","nameLocation":"2302:17:2","nodeType":"FunctionDefinition","parameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"2319:2:2"},"returnParameters":{"id":468,"nodeType":"ParameterList","parameters":[],"src":"2347:0:2"},"scope":526,"src":"2293:101:2","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":504,"nodeType":"Block","src":"2613:145:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":485,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2627:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2639:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":486,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:2","typeDescriptions":{}}},"id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2627:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":499,"nodeType":"IfStatement","src":"2623:91:2","trueBody":{"id":498,"nodeType":"Block","src":"2651:63:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:2","typeDescriptions":{}}},"id":495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":491,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"2672:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2672:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":497,"nodeType":"RevertStatement","src":"2665:38:2"}]}},{"expression":{"arguments":[{"id":501,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2742:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":500,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"2723:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":503,"nodeType":"ExpressionStatement","src":"2723:28:2"}]},"documentation":{"id":478,"nodeType":"StructuredDocumentation","src":"2400:138:2","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":505,"implemented":true,"kind":"function","modifiers":[{"id":483,"kind":"modifierInvocation","modifierName":{"id":482,"name":"onlyOwner","nameLocations":["2603:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"2603:9:2"},"nodeType":"ModifierInvocation","src":"2603:9:2"}],"name":"transferOwnership","nameLocation":"2552:17:2","nodeType":"FunctionDefinition","parameters":{"id":481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":480,"mutability":"mutable","name":"newOwner","nameLocation":"2578:8:2","nodeType":"VariableDeclaration","scope":505,"src":"2570:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":479,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:18:2"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[],"src":"2613:0:2"},"scope":526,"src":"2543:215:2","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":524,"nodeType":"Block","src":"2975:124:2","statements":[{"assignments":[512],"declarations":[{"constant":false,"id":512,"mutability":"mutable","name":"oldOwner","nameLocation":"2993:8:2","nodeType":"VariableDeclaration","scope":524,"src":"2985:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":511,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":514,"initialValue":{"id":513,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"3004:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2985:25:2"},{"expression":{"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":515,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"3020:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":516,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"3029:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3020:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":518,"nodeType":"ExpressionStatement","src":"3020:17:2"},{"eventCall":{"arguments":[{"id":520,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":512,"src":"3073:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":521,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"3083:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":519,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"3052:20:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":523,"nodeType":"EmitStatement","src":"3047:45:2"}]},"documentation":{"id":506,"nodeType":"StructuredDocumentation","src":"2764:143:2","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":525,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2921:18:2","nodeType":"FunctionDefinition","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":508,"mutability":"mutable","name":"newOwner","nameLocation":"2948:8:2","nodeType":"VariableDeclaration","scope":525,"src":"2940:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":507,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2939:18:2"},"returnParameters":{"id":510,"nodeType":"ParameterList","parameters":[],"src":"2975:0:2"},"scope":526,"src":"2912:187:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":527,"src":"663:2438:2","usedErrors":[392,397],"usedEvents":[403]}],"src":"102:3000:2"},"id":2},"@openzeppelin/contracts/access/Ownable2Step.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable2Step.sol","exportedSymbols":{"Ownable":[526],"Ownable2Step":[612]},"id":613,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":528,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:3"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"./Ownable.sol","id":530,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":613,"sourceUnit":527,"src":"133:38:3","symbolAliases":[{"foreign":{"id":529,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"141:7:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":532,"name":"Ownable","nameLocations":["1018:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":526,"src":"1018:7:3"},"id":533,"nodeType":"InheritanceSpecifier","src":"1018:7:3"}],"canonicalName":"Ownable2Step","contractDependencies":[],"contractKind":"contract","documentation":{"id":531,"nodeType":"StructuredDocumentation","src":"173:810:3","text":" @dev Contract module which provides access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n This extension of the {Ownable} contract includes a two-step mechanism to transfer\n ownership, where the new owner must call {acceptOwnership} in order to replace the\n old one. This can help prevent common mistakes, such as transfers of ownership to\n incorrect accounts, or to contracts that are unable to interact with the\n permission system.\n The initial owner is specified at deployment time in the constructor for `Ownable`. This\n can later be changed with {transferOwnership} and {acceptOwnership}.\n This module is used through inheritance. It will make available all functions\n from parent (Ownable)."},"fullyImplemented":true,"id":612,"linearizedBaseContracts":[612,526,3907],"name":"Ownable2Step","nameLocation":"1002:12:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":535,"mutability":"mutable","name":"_pendingOwner","nameLocation":"1048:13:3","nodeType":"VariableDeclaration","scope":612,"src":"1032:29:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":534,"name":"address","nodeType":"ElementaryTypeName","src":"1032:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700","id":541,"name":"OwnershipTransferStarted","nameLocation":"1074:24:3","nodeType":"EventDefinition","parameters":{"id":540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":537,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1115:13:3","nodeType":"VariableDeclaration","scope":541,"src":"1099:29:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":536,"name":"address","nodeType":"ElementaryTypeName","src":"1099:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":539,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1146:8:3","nodeType":"VariableDeclaration","scope":541,"src":"1130:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":538,"name":"address","nodeType":"ElementaryTypeName","src":"1130:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1098:57:3"},"src":"1068:88:3"},{"body":{"id":549,"nodeType":"Block","src":"1294:37:3","statements":[{"expression":{"id":547,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"1311:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":546,"id":548,"nodeType":"Return","src":"1304:20:3"}]},"documentation":{"id":542,"nodeType":"StructuredDocumentation","src":"1162:65:3","text":" @dev Returns the address of the pending owner."},"functionSelector":"e30c3978","id":550,"implemented":true,"kind":"function","modifiers":[],"name":"pendingOwner","nameLocation":"1241:12:3","nodeType":"FunctionDefinition","parameters":{"id":543,"nodeType":"ParameterList","parameters":[],"src":"1253:2:3"},"returnParameters":{"id":546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":550,"src":"1285:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":544,"name":"address","nodeType":"ElementaryTypeName","src":"1285:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1284:9:3"},"scope":612,"src":"1232:99:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[505],"body":{"id":569,"nodeType":"Block","src":"1728:99:3","statements":[{"expression":{"id":561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":559,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"1738:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":560,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"1754:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1738:24:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":562,"nodeType":"ExpressionStatement","src":"1738:24:3"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":564,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":446,"src":"1802:5:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1802:7:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":566,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"1811:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":563,"name":"OwnershipTransferStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"1777:24:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1777:43:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":568,"nodeType":"EmitStatement","src":"1772:48:3"}]},"documentation":{"id":551,"nodeType":"StructuredDocumentation","src":"1337:307:3","text":" @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n Can only be called by the current owner.\n Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"functionSelector":"f2fde38b","id":570,"implemented":true,"kind":"function","modifiers":[{"id":557,"kind":"modifierInvocation","modifierName":{"id":556,"name":"onlyOwner","nameLocations":["1718:9:3"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"1718:9:3"},"nodeType":"ModifierInvocation","src":"1718:9:3"}],"name":"transferOwnership","nameLocation":"1658:17:3","nodeType":"FunctionDefinition","overrides":{"id":555,"nodeType":"OverrideSpecifier","overrides":[],"src":"1709:8:3"},"parameters":{"id":554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"newOwner","nameLocation":"1684:8:3","nodeType":"VariableDeclaration","scope":570,"src":"1676:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":552,"name":"address","nodeType":"ElementaryTypeName","src":"1676:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1675:18:3"},"returnParameters":{"id":558,"nodeType":"ParameterList","parameters":[],"src":"1728:0:3"},"scope":612,"src":"1649:178:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[525],"body":{"id":586,"nodeType":"Block","src":"2083:81:3","statements":[{"expression":{"id":578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"2093:20:3","subExpression":{"id":577,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"2100:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":579,"nodeType":"ExpressionStatement","src":"2093:20:3"},{"expression":{"arguments":[{"id":583,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"2148:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":580,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2123:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Ownable2Step_$612_$","typeString":"type(contract super Ownable2Step)"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2129:18:3","memberName":"_transferOwnership","nodeType":"MemberAccess","referencedDeclaration":525,"src":"2123:24:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2123:34:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":585,"nodeType":"ExpressionStatement","src":"2123:34:3"}]},"documentation":{"id":571,"nodeType":"StructuredDocumentation","src":"1833:173:3","text":" @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n Internal function without access restriction."},"id":587,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2020:18:3","nodeType":"FunctionDefinition","overrides":{"id":575,"nodeType":"OverrideSpecifier","overrides":[],"src":"2074:8:3"},"parameters":{"id":574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":573,"mutability":"mutable","name":"newOwner","nameLocation":"2047:8:3","nodeType":"VariableDeclaration","scope":587,"src":"2039:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":572,"name":"address","nodeType":"ElementaryTypeName","src":"2039:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2038:18:3"},"returnParameters":{"id":576,"nodeType":"ParameterList","parameters":[],"src":"2083:0:3"},"scope":612,"src":"2011:153:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":610,"nodeType":"Block","src":"2286:187:3","statements":[{"assignments":[592],"declarations":[{"constant":false,"id":592,"mutability":"mutable","name":"sender","nameLocation":"2304:6:3","nodeType":"VariableDeclaration","scope":610,"src":"2296:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":591,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":595,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":593,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"2313:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2313:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2296:29:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":596,"name":"pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"2339:12:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2339:14:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":598,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"2357:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2339:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":605,"nodeType":"IfStatement","src":"2335:96:3","trueBody":{"id":604,"nodeType":"Block","src":"2365:66:3","statements":[{"errorCall":{"arguments":[{"id":601,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"2413:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":600,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"2386:26:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2386:34:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":603,"nodeType":"RevertStatement","src":"2379:41:3"}]}},{"expression":{"arguments":[{"id":607,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"2459:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":606,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[587],"referencedDeclaration":587,"src":"2440:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2440:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":609,"nodeType":"ExpressionStatement","src":"2440:26:3"}]},"documentation":{"id":588,"nodeType":"StructuredDocumentation","src":"2170:69:3","text":" @dev The new owner accepts the ownership transfer."},"functionSelector":"79ba5097","id":611,"implemented":true,"kind":"function","modifiers":[],"name":"acceptOwnership","nameLocation":"2253:15:3","nodeType":"FunctionDefinition","parameters":{"id":589,"nodeType":"ParameterList","parameters":[],"src":"2268:2:3"},"returnParameters":{"id":590,"nodeType":"ParameterList","parameters":[],"src":"2286:0:3"},"scope":612,"src":"2244:229:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":613,"src":"984:1491:3","usedErrors":[392,397],"usedEvents":[403,541]}],"src":"107:2369:3"},"id":3},"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol","exportedSymbols":{"AccessControl":[295],"AccessControlDefaultAdminRules":[1331],"IAccessControl":[378],"IAccessControlDefaultAdminRules":[1430],"IERC165":[5850],"IERC5313":[1460],"Math":[7507],"SafeCast":[9272]},"id":1332,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":614,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"136:24:4"},{"absolutePath":"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol","file":"./IAccessControlDefaultAdminRules.sol","id":616,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":1431,"src":"162:86:4","symbolAliases":[{"foreign":{"id":615,"name":"IAccessControlDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1430,"src":"170:31:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","file":"../AccessControl.sol","id":619,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":296,"src":"249:67:4","symbolAliases":[{"foreign":{"id":617,"name":"AccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"257:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":618,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"272:14:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"../../utils/math/SafeCast.sol","id":621,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":9273,"src":"317:55:4","symbolAliases":[{"foreign":{"id":620,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"325:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"../../utils/math/Math.sol","id":623,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":7508,"src":"373:47:4","symbolAliases":[{"foreign":{"id":622,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"381:4:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5313.sol","file":"../../interfaces/IERC5313.sol","id":625,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":1461,"src":"421:55:4","symbolAliases":[{"foreign":{"id":624,"name":"IERC5313","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"429:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":627,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":5851,"src":"477:62:4","symbolAliases":[{"foreign":{"id":626,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"485:7:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":629,"name":"IAccessControlDefaultAdminRules","nameLocations":["1905:31:4"],"nodeType":"IdentifierPath","referencedDeclaration":1430,"src":"1905:31:4"},"id":630,"nodeType":"InheritanceSpecifier","src":"1905:31:4"},{"baseName":{"id":631,"name":"IERC5313","nameLocations":["1938:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1460,"src":"1938:8:4"},"id":632,"nodeType":"InheritanceSpecifier","src":"1938:8:4"},{"baseName":{"id":633,"name":"AccessControl","nameLocations":["1948:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":295,"src":"1948:13:4"},"id":634,"nodeType":"InheritanceSpecifier","src":"1948:13:4"}],"canonicalName":"AccessControlDefaultAdminRules","contractDependencies":[],"contractKind":"contract","documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"541:1311:4","text":" @dev Extension of {AccessControl} that allows specifying special rules to manage\n the `DEFAULT_ADMIN_ROLE` holder, which is a sensitive role with special permissions\n over other roles that may potentially have privileged rights in the system.\n If a specific role doesn't have an admin role assigned, the holder of the\n `DEFAULT_ADMIN_ROLE` will have the ability to grant it and revoke it.\n This contract implements the following risk mitigations on top of {AccessControl}:\n * Only one account holds the `DEFAULT_ADMIN_ROLE` since deployment until it's potentially renounced.\n * Enforces a 2-step process to transfer the `DEFAULT_ADMIN_ROLE` to another account.\n * Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted.\n * The delay can be changed by scheduling, see {changeDefaultAdminDelay}.\n * Role transfers must wait at least one block after scheduling before it can be accepted.\n * It is not possible to use another role to manage the `DEFAULT_ADMIN_ROLE`.\n Example usage:\n ```solidity\n contract MyToken is AccessControlDefaultAdminRules {\n constructor() AccessControlDefaultAdminRules(\n 3 days,\n msg.sender // Explicit initial `DEFAULT_ADMIN_ROLE` holder\n ) {}\n }\n ```"},"fullyImplemented":true,"id":1331,"linearizedBaseContracts":[1331,295,5838,5850,1460,1430,378,3907],"name":"AccessControlDefaultAdminRules","nameLocation":"1871:30:4","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":636,"mutability":"mutable","name":"_pendingDefaultAdmin","nameLocation":"2043:20:4","nodeType":"VariableDeclaration","scope":1331,"src":"2027:36:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":635,"name":"address","nodeType":"ElementaryTypeName","src":"2027:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":638,"mutability":"mutable","name":"_pendingDefaultAdminSchedule","nameLocation":"2084:28:4","nodeType":"VariableDeclaration","scope":1331,"src":"2069:43:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":637,"name":"uint48","nodeType":"ElementaryTypeName","src":"2069:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"private"},{"constant":false,"id":640,"mutability":"mutable","name":"_currentDelay","nameLocation":"2148:13:4","nodeType":"VariableDeclaration","scope":1331,"src":"2133:28:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":639,"name":"uint48","nodeType":"ElementaryTypeName","src":"2133:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"private"},{"constant":false,"id":642,"mutability":"mutable","name":"_currentDefaultAdmin","nameLocation":"2183:20:4","nodeType":"VariableDeclaration","scope":1331,"src":"2167:36:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":641,"name":"address","nodeType":"ElementaryTypeName","src":"2167:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":644,"mutability":"mutable","name":"_pendingDelay","nameLocation":"2284:13:4","nodeType":"VariableDeclaration","scope":1331,"src":"2269:28:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":643,"name":"uint48","nodeType":"ElementaryTypeName","src":"2269:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"private"},{"constant":false,"id":646,"mutability":"mutable","name":"_pendingDelaySchedule","nameLocation":"2318:21:4","nodeType":"VariableDeclaration","scope":1331,"src":"2303:36:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":645,"name":"uint48","nodeType":"ElementaryTypeName","src":"2303:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"private"},{"body":{"id":678,"nodeType":"Block","src":"2526:230:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":654,"name":"initialDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"2540:19:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2571:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2563:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":655,"name":"address","nodeType":"ElementaryTypeName","src":"2563:7:4","typeDescriptions":{}}},"id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2563:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2540:33:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":668,"nodeType":"IfStatement","src":"2536:115:4","trueBody":{"id":667,"nodeType":"Block","src":"2575:76:4","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2637:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2629:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":661,"name":"address","nodeType":"ElementaryTypeName","src":"2629:7:4","typeDescriptions":{}}},"id":664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2629:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":660,"name":"AccessControlInvalidDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1343,"src":"2596:32:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2596:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":666,"nodeType":"RevertStatement","src":"2589:51:4"}]}},{"expression":{"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":669,"name":"_currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":640,"src":"2660:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":670,"name":"initialDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":649,"src":"2676:12:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"2660:28:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":672,"nodeType":"ExpressionStatement","src":"2660:28:4"},{"expression":{"arguments":[{"id":674,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"2709:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":675,"name":"initialDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"2729:19:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":673,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[865],"referencedDeclaration":865,"src":"2698:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2698:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":677,"nodeType":"ExpressionStatement","src":"2698:51:4"}]},"documentation":{"id":647,"nodeType":"StructuredDocumentation","src":"2360:99:4","text":" @dev Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address."},"id":679,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":649,"mutability":"mutable","name":"initialDelay","nameLocation":"2483:12:4","nodeType":"VariableDeclaration","scope":679,"src":"2476:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":648,"name":"uint48","nodeType":"ElementaryTypeName","src":"2476:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":651,"mutability":"mutable","name":"initialDefaultAdmin","nameLocation":"2505:19:4","nodeType":"VariableDeclaration","scope":679,"src":"2497:27:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":650,"name":"address","nodeType":"ElementaryTypeName","src":"2497:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2475:50:4"},"returnParameters":{"id":653,"nodeType":"ParameterList","parameters":[],"src":"2526:0:4"},"scope":1331,"src":"2464:292:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[62],"body":{"id":700,"nodeType":"Block","src":"2881:128:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":688,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"2898:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":690,"name":"IAccessControlDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1430,"src":"2918:31:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControlDefaultAdminRules_$1430_$","typeString":"type(contract IAccessControlDefaultAdminRules)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControlDefaultAdminRules_$1430_$","typeString":"type(contract IAccessControlDefaultAdminRules)"}],"id":689,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2913:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2913:37:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControlDefaultAdminRules_$1430","typeString":"type(contract IAccessControlDefaultAdminRules)"}},"id":692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2951:11:4","memberName":"interfaceId","nodeType":"MemberAccess","src":"2913:49:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2898:64:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":696,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"2990:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":694,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2966:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2972:17:4","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":62,"src":"2966:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2966:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2898:104:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":687,"id":699,"nodeType":"Return","src":"2891:111:4"}]},"documentation":{"id":680,"nodeType":"StructuredDocumentation","src":"2762:23:4","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":701,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2799:17:4","nodeType":"FunctionDefinition","overrides":{"id":684,"nodeType":"OverrideSpecifier","overrides":[],"src":"2857:8:4"},"parameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"mutability":"mutable","name":"interfaceId","nameLocation":"2824:11:4","nodeType":"VariableDeclaration","scope":701,"src":"2817:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":681,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2817:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2816:20:4"},"returnParameters":{"id":687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":686,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":701,"src":"2875:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":685,"name":"bool","nodeType":"ElementaryTypeName","src":"2875:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2874:6:4"},"scope":1331,"src":"2790:219:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1459],"body":{"id":710,"nodeType":"Block","src":"3099:38:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":707,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"3116:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3116:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":706,"id":709,"nodeType":"Return","src":"3109:21:4"}]},"documentation":{"id":702,"nodeType":"StructuredDocumentation","src":"3015:24:4","text":"@inheritdoc IERC5313"},"functionSelector":"8da5cb5b","id":711,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"3053:5:4","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[],"src":"3058:2:4"},"returnParameters":{"id":706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":711,"src":"3090:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":704,"name":"address","nodeType":"ElementaryTypeName","src":"3090:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3089:9:4"},"scope":1331,"src":"3044:93:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[147,361],"body":{"id":737,"nodeType":"Block","src":"3405:160:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":722,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"3419:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":723,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"3427:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3419:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":729,"nodeType":"IfStatement","src":"3415:104:4","trueBody":{"id":728,"nodeType":"Block","src":"3447:72:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":725,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"3468:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3468:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":727,"nodeType":"RevertStatement","src":"3461:47:4"}]}},{"expression":{"arguments":[{"id":733,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"3544:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":734,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"3550:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":730,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"3528:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3534:9:4","memberName":"grantRole","nodeType":"MemberAccess","referencedDeclaration":147,"src":"3528:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3528:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":736,"nodeType":"ExpressionStatement","src":"3528:30:4"}]},"documentation":{"id":712,"nodeType":"StructuredDocumentation","src":"3207:88:4","text":" @dev See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"functionSelector":"2f2ff15d","id":738,"implemented":true,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"3309:9:4","nodeType":"FunctionDefinition","overrides":{"id":720,"nodeType":"OverrideSpecifier","overrides":[{"id":718,"name":"AccessControl","nameLocations":["3374:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":295,"src":"3374:13:4"},{"id":719,"name":"IAccessControl","nameLocations":["3389:14:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3389:14:4"}],"src":"3365:39:4"},"parameters":{"id":717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":714,"mutability":"mutable","name":"role","nameLocation":"3327:4:4","nodeType":"VariableDeclaration","scope":738,"src":"3319:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":713,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3319:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":716,"mutability":"mutable","name":"account","nameLocation":"3341:7:4","nodeType":"VariableDeclaration","scope":738,"src":"3333:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":715,"name":"address","nodeType":"ElementaryTypeName","src":"3333:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3318:31:4"},"returnParameters":{"id":721,"nodeType":"ParameterList","parameters":[],"src":"3405:0:4"},"scope":1331,"src":"3300:265:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[166,369],"body":{"id":764,"nodeType":"Block","src":"3771:161:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":749,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"3785:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":750,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"3793:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3785:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":756,"nodeType":"IfStatement","src":"3781:104:4","trueBody":{"id":755,"nodeType":"Block","src":"3813:72:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":752,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"3834:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3834:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":754,"nodeType":"RevertStatement","src":"3827:47:4"}]}},{"expression":{"arguments":[{"id":760,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"3911:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":761,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":743,"src":"3917:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":757,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"3894:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3900:10:4","memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":166,"src":"3894:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3894:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":763,"nodeType":"ExpressionStatement","src":"3894:31:4"}]},"documentation":{"id":739,"nodeType":"StructuredDocumentation","src":"3571:89:4","text":" @dev See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"functionSelector":"d547741f","id":765,"implemented":true,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"3674:10:4","nodeType":"FunctionDefinition","overrides":{"id":747,"nodeType":"OverrideSpecifier","overrides":[{"id":745,"name":"AccessControl","nameLocations":["3740:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":295,"src":"3740:13:4"},{"id":746,"name":"IAccessControl","nameLocations":["3755:14:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3755:14:4"}],"src":"3731:39:4"},"parameters":{"id":744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":741,"mutability":"mutable","name":"role","nameLocation":"3693:4:4","nodeType":"VariableDeclaration","scope":765,"src":"3685:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":740,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3685:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":743,"mutability":"mutable","name":"account","nameLocation":"3707:7:4","nodeType":"VariableDeclaration","scope":765,"src":"3699:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":742,"name":"address","nodeType":"ElementaryTypeName","src":"3699:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3684:31:4"},"returnParameters":{"id":748,"nodeType":"ParameterList","parameters":[],"src":"3771:0:4"},"scope":1331,"src":"3665:267:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[189,377],"body":{"id":825,"nodeType":"Block","src":"4725:458:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":776,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"4739:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":777,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"4747:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4739:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":779,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":770,"src":"4769:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":780,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"4780:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4780:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4769:25:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4739:55:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":817,"nodeType":"IfStatement","src":"4735:399:4","trueBody":{"id":816,"nodeType":"Block","src":"4796:338:4","statements":[{"assignments":[785,787],"declarations":[{"constant":false,"id":785,"mutability":"mutable","name":"newDefaultAdmin","nameLocation":"4819:15:4","nodeType":"VariableDeclaration","scope":816,"src":"4811:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":784,"name":"address","nodeType":"ElementaryTypeName","src":"4811:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":787,"mutability":"mutable","name":"schedule","nameLocation":"4843:8:4","nodeType":"VariableDeclaration","scope":816,"src":"4836:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":786,"name":"uint48","nodeType":"ElementaryTypeName","src":"4836:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":790,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":788,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"4855:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4855:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"4810:66:4"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":791,"name":"newDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"4894:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4921:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4913:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":792,"name":"address","nodeType":"ElementaryTypeName","src":"4913:7:4","typeDescriptions":{}}},"id":795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4913:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4894:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4927:25:4","subExpression":{"arguments":[{"id":798,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"4943:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":797,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"4928:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4928:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4894:58:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4956:29:4","subExpression":{"arguments":[{"id":803,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"4976:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":802,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"4957:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4957:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4894:91:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":812,"nodeType":"IfStatement","src":"4890:185:4","trueBody":{"id":811,"nodeType":"Block","src":"4987:88:4","statements":[{"errorCall":{"arguments":[{"id":808,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"5051:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":807,"name":"AccessControlEnforcedDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1351,"src":"5012:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint48_$returns$_t_error_$","typeString":"function (uint48) pure returns (error)"}},"id":809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5012:48:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":810,"nodeType":"RevertStatement","src":"5005:55:4"}]}},{"expression":{"id":814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5088:35:4","subExpression":{"id":813,"name":"_pendingDefaultAdminSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"5095:28:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":815,"nodeType":"ExpressionStatement","src":"5088:35:4"}]}},{"expression":{"arguments":[{"id":821,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"5162:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":822,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":770,"src":"5168:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":818,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"5143:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5149:12:4","memberName":"renounceRole","nodeType":"MemberAccess","referencedDeclaration":189,"src":"5143:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5143:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":824,"nodeType":"ExpressionStatement","src":"5143:33:4"}]},"documentation":{"id":766,"nodeType":"StructuredDocumentation","src":"3938:674:4","text":" @dev See {AccessControl-renounceRole}.\n For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling\n {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule\n has also passed when calling this function.\n After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions.\n NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin},\n thereby disabling any functionality that is only available for it, and the possibility of reassigning a\n non-administrated role."},"functionSelector":"36568abe","id":826,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"4626:12:4","nodeType":"FunctionDefinition","overrides":{"id":774,"nodeType":"OverrideSpecifier","overrides":[{"id":772,"name":"AccessControl","nameLocations":["4694:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":295,"src":"4694:13:4"},{"id":773,"name":"IAccessControl","nameLocations":["4709:14:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"4709:14:4"}],"src":"4685:39:4"},"parameters":{"id":771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":768,"mutability":"mutable","name":"role","nameLocation":"4647:4:4","nodeType":"VariableDeclaration","scope":826,"src":"4639:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":767,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4639:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":770,"mutability":"mutable","name":"account","nameLocation":"4661:7:4","nodeType":"VariableDeclaration","scope":826,"src":"4653:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":769,"name":"address","nodeType":"ElementaryTypeName","src":"4653:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4638:31:4"},"returnParameters":{"id":775,"nodeType":"ParameterList","parameters":[],"src":"4725:0:4"},"scope":1331,"src":"4617:566:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[256],"body":{"id":864,"nodeType":"Block","src":"5703:278:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":837,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"5717:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":838,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5725:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5717:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":857,"nodeType":"IfStatement","src":"5713:214:4","trueBody":{"id":856,"nodeType":"Block","src":"5745:182:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":840,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"5763:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5763:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5789:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5781:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":842,"name":"address","nodeType":"ElementaryTypeName","src":"5781:7:4","typeDescriptions":{}}},"id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5781:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5763:28:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":851,"nodeType":"IfStatement","src":"5759:114:4","trueBody":{"id":850,"nodeType":"Block","src":"5793:80:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":847,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"5818:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5818:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":849,"nodeType":"RevertStatement","src":"5811:47:4"}]}},{"expression":{"id":854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":852,"name":"_currentDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":642,"src":"5886:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":853,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"5909:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5886:30:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":855,"nodeType":"ExpressionStatement","src":"5886:30:4"}]}},{"expression":{"arguments":[{"id":860,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"5960:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":861,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"5966:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":858,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"5943:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5949:10:4","memberName":"_grantRole","nodeType":"MemberAccess","referencedDeclaration":256,"src":"5943:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5943:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":836,"id":863,"nodeType":"Return","src":"5936:38:4"}]},"documentation":{"id":827,"nodeType":"StructuredDocumentation","src":"5189:417:4","text":" @dev See {AccessControl-_grantRole}.\n For `DEFAULT_ADMIN_ROLE`, it only allows granting if there isn't already a {defaultAdmin} or if the\n role has been previously renounced.\n NOTE: Exposing this function through another mechanism may make the `DEFAULT_ADMIN_ROLE`\n assignable again. Make sure to guarantee this is the expected behavior in your implementation."},"id":865,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"5620:10:4","nodeType":"FunctionDefinition","overrides":{"id":833,"nodeType":"OverrideSpecifier","overrides":[],"src":"5679:8:4"},"parameters":{"id":832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"role","nameLocation":"5639:4:4","nodeType":"VariableDeclaration","scope":865,"src":"5631:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":828,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5631:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":831,"mutability":"mutable","name":"account","nameLocation":"5653:7:4","nodeType":"VariableDeclaration","scope":865,"src":"5645:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":830,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5630:31:4"},"returnParameters":{"id":836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":865,"src":"5697:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":834,"name":"bool","nodeType":"ElementaryTypeName","src":"5697:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5696:6:4"},"scope":1331,"src":"5611:370:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[294],"body":{"id":895,"nodeType":"Block","src":"6114:178:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":876,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"6128:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":877,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"6136:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6128:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":879,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":870,"src":"6158:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":880,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"6169:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6169:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6158:25:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6128:55:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"6124:113:4","trueBody":{"id":887,"nodeType":"Block","src":"6185:52:4","statements":[{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6199:27:4","subExpression":{"id":884,"name":"_currentDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":642,"src":"6206:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":886,"nodeType":"ExpressionStatement","src":"6199:27:4"}]}},{"expression":{"arguments":[{"id":891,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"6271:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":892,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":870,"src":"6277:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":889,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"6253:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6259:11:4","memberName":"_revokeRole","nodeType":"MemberAccess","referencedDeclaration":294,"src":"6253:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6253:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":875,"id":894,"nodeType":"Return","src":"6246:39:4"}]},"documentation":{"id":866,"nodeType":"StructuredDocumentation","src":"5987:29:4","text":"@inheritdoc AccessControl"},"id":896,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"6030:11:4","nodeType":"FunctionDefinition","overrides":{"id":872,"nodeType":"OverrideSpecifier","overrides":[],"src":"6090:8:4"},"parameters":{"id":871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":868,"mutability":"mutable","name":"role","nameLocation":"6050:4:4","nodeType":"VariableDeclaration","scope":896,"src":"6042:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":867,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6042:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":870,"mutability":"mutable","name":"account","nameLocation":"6064:7:4","nodeType":"VariableDeclaration","scope":896,"src":"6056:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":869,"name":"address","nodeType":"ElementaryTypeName","src":"6056:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6041:31:4"},"returnParameters":{"id":875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":896,"src":"6108:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":873,"name":"bool","nodeType":"ElementaryTypeName","src":"6108:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6107:6:4"},"scope":1331,"src":"6021:271:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[217],"body":{"id":920,"nodeType":"Block","src":"6477:166:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":905,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":899,"src":"6491:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":906,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"6499:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6491:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":912,"nodeType":"IfStatement","src":"6487:104:4","trueBody":{"id":911,"nodeType":"Block","src":"6519:72:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":908,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"6540:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6540:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":910,"nodeType":"RevertStatement","src":"6533:47:4"}]}},{"expression":{"arguments":[{"id":916,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":899,"src":"6620:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":917,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"6626:9:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":913,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"6600:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6606:13:4","memberName":"_setRoleAdmin","nodeType":"MemberAccess","referencedDeclaration":217,"src":"6600:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6600:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":919,"nodeType":"ExpressionStatement","src":"6600:36:4"}]},"documentation":{"id":897,"nodeType":"StructuredDocumentation","src":"6298:92:4","text":" @dev See {AccessControl-_setRoleAdmin}. Reverts for `DEFAULT_ADMIN_ROLE`."},"id":921,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"6404:13:4","nodeType":"FunctionDefinition","overrides":{"id":903,"nodeType":"OverrideSpecifier","overrides":[],"src":"6468:8:4"},"parameters":{"id":902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":899,"mutability":"mutable","name":"role","nameLocation":"6426:4:4","nodeType":"VariableDeclaration","scope":921,"src":"6418:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6418:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":901,"mutability":"mutable","name":"adminRole","nameLocation":"6440:9:4","nodeType":"VariableDeclaration","scope":921,"src":"6432:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":900,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6432:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6417:33:4"},"returnParameters":{"id":904,"nodeType":"ParameterList","parameters":[],"src":"6477:0:4"},"scope":1331,"src":"6395:248:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1377],"body":{"id":929,"nodeType":"Block","src":"6829:44:4","statements":[{"expression":{"id":927,"name":"_currentDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":642,"src":"6846:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":926,"id":928,"nodeType":"Return","src":"6839:27:4"}]},"documentation":{"id":922,"nodeType":"StructuredDocumentation","src":"6715:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"84ef8ffc","id":930,"implemented":true,"kind":"function","modifiers":[],"name":"defaultAdmin","nameLocation":"6776:12:4","nodeType":"FunctionDefinition","parameters":{"id":923,"nodeType":"ParameterList","parameters":[],"src":"6788:2:4"},"returnParameters":{"id":926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":930,"src":"6820:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":924,"name":"address","nodeType":"ElementaryTypeName","src":"6820:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6819:9:4"},"scope":1331,"src":"6767:106:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1385],"body":{"id":942,"nodeType":"Block","src":"7026:76:4","statements":[{"expression":{"components":[{"id":938,"name":"_pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"7044:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":939,"name":"_pendingDefaultAdminSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"7066:28:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":940,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7043:52:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"functionReturnParameters":937,"id":941,"nodeType":"Return","src":"7036:59:4"}]},"documentation":{"id":931,"nodeType":"StructuredDocumentation","src":"6879:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"cf6eefb7","id":943,"implemented":true,"kind":"function","modifiers":[],"name":"pendingDefaultAdmin","nameLocation":"6940:19:4","nodeType":"FunctionDefinition","parameters":{"id":932,"nodeType":"ParameterList","parameters":[],"src":"6959:2:4"},"returnParameters":{"id":937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":934,"mutability":"mutable","name":"newAdmin","nameLocation":"6999:8:4","nodeType":"VariableDeclaration","scope":943,"src":"6991:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":933,"name":"address","nodeType":"ElementaryTypeName","src":"6991:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":936,"mutability":"mutable","name":"schedule","nameLocation":"7016:8:4","nodeType":"VariableDeclaration","scope":943,"src":"7009:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":935,"name":"uint48","nodeType":"ElementaryTypeName","src":"7009:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6990:35:4"},"scope":1331,"src":"6931:171:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1391],"body":{"id":965,"nodeType":"Block","src":"7226:163:4","statements":[{"assignments":[950],"declarations":[{"constant":false,"id":950,"mutability":"mutable","name":"schedule","nameLocation":"7243:8:4","nodeType":"VariableDeclaration","scope":965,"src":"7236:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":949,"name":"uint48","nodeType":"ElementaryTypeName","src":"7236:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":952,"initialValue":{"id":951,"name":"_pendingDelaySchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"7254:21:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"7236:39:4"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":954,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"7308:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":953,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"7293:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7293:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":957,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"7340:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":956,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"7321:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7321:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7293:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":960,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7292:58:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":962,"name":"_currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":640,"src":"7369:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7292:90:4","trueExpression":{"id":961,"name":"_pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"7353:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":948,"id":964,"nodeType":"Return","src":"7285:97:4"}]},"documentation":{"id":944,"nodeType":"StructuredDocumentation","src":"7108:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"cc8463c8","id":966,"implemented":true,"kind":"function","modifiers":[],"name":"defaultAdminDelay","nameLocation":"7169:17:4","nodeType":"FunctionDefinition","parameters":{"id":945,"nodeType":"ParameterList","parameters":[],"src":"7186:2:4"},"returnParameters":{"id":948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":966,"src":"7218:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":946,"name":"uint48","nodeType":"ElementaryTypeName","src":"7218:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7217:8:4"},"scope":1331,"src":"7160:229:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1399],"body":{"id":995,"nodeType":"Block","src":"7546:162:4","statements":[{"expression":{"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":974,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":972,"src":"7556:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":975,"name":"_pendingDelaySchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"7567:21:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"7556:32:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":977,"nodeType":"ExpressionStatement","src":"7556:32:4"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":979,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":972,"src":"7621:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":978,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"7606:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7606:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7634:29:4","subExpression":{"arguments":[{"id":982,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":972,"src":"7654:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":981,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"7635:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7635:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7606:57:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":986,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7605:59:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"hexValue":"30","id":990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7696:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7699:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":992,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7695:6:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 0,int_const 0)"}},"id":993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7605:96:4","trueExpression":{"components":[{"id":987,"name":"_pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"7668:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":988,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":972,"src":"7683:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7667:25:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"functionReturnParameters":973,"id":994,"nodeType":"Return","src":"7598:103:4"}]},"documentation":{"id":967,"nodeType":"StructuredDocumentation","src":"7395:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"a1eda53c","id":996,"implemented":true,"kind":"function","modifiers":[],"name":"pendingDefaultAdminDelay","nameLocation":"7456:24:4","nodeType":"FunctionDefinition","parameters":{"id":968,"nodeType":"ParameterList","parameters":[],"src":"7480:2:4"},"returnParameters":{"id":973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":970,"mutability":"mutable","name":"newDelay","nameLocation":"7519:8:4","nodeType":"VariableDeclaration","scope":996,"src":"7512:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":969,"name":"uint48","nodeType":"ElementaryTypeName","src":"7512:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":972,"mutability":"mutable","name":"schedule","nameLocation":"7536:8:4","nodeType":"VariableDeclaration","scope":996,"src":"7529:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":971,"name":"uint48","nodeType":"ElementaryTypeName","src":"7529:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7511:34:4"},"scope":1331,"src":"7447:261:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1429],"body":{"id":1004,"nodeType":"Block","src":"7844:30:4","statements":[{"expression":{"hexValue":"35","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7861:6:4","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_432000_by_1","typeString":"int_const 432000"},"value":"5"},"functionReturnParameters":1001,"id":1003,"nodeType":"Return","src":"7854:13:4"}]},"documentation":{"id":997,"nodeType":"StructuredDocumentation","src":"7714:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"022d63fb","id":1005,"implemented":true,"kind":"function","modifiers":[],"name":"defaultAdminDelayIncreaseWait","nameLocation":"7775:29:4","nodeType":"FunctionDefinition","parameters":{"id":998,"nodeType":"ParameterList","parameters":[],"src":"7804:2:4"},"returnParameters":{"id":1001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1005,"src":"7836:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":999,"name":"uint48","nodeType":"ElementaryTypeName","src":"7836:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7835:8:4"},"scope":1331,"src":"7766:108:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1405],"body":{"id":1018,"nodeType":"Block","src":"8150:53:4","statements":[{"expression":{"arguments":[{"id":1015,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1008,"src":"8187:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1014,"name":"_beginDefaultAdminTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1047,"src":"8160:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8160:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1017,"nodeType":"ExpressionStatement","src":"8160:36:4"}]},"documentation":{"id":1006,"nodeType":"StructuredDocumentation","src":"8001:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"634e93da","id":1019,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1011,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"8130:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1012,"kind":"modifierInvocation","modifierName":{"id":1010,"name":"onlyRole","nameLocations":["8121:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"8121:8:4"},"nodeType":"ModifierInvocation","src":"8121:28:4"}],"name":"beginDefaultAdminTransfer","nameLocation":"8062:25:4","nodeType":"FunctionDefinition","parameters":{"id":1009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1008,"mutability":"mutable","name":"newAdmin","nameLocation":"8096:8:4","nodeType":"VariableDeclaration","scope":1019,"src":"8088:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1007,"name":"address","nodeType":"ElementaryTypeName","src":"8088:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8087:18:4"},"returnParameters":{"id":1013,"nodeType":"ParameterList","parameters":[],"src":"8150:0:4"},"scope":1331,"src":"8053:150:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1046,"nodeType":"Block","src":"8401:217:4","statements":[{"assignments":[1026],"declarations":[{"constant":false,"id":1026,"mutability":"mutable","name":"newSchedule","nameLocation":"8418:11:4","nodeType":"VariableDeclaration","scope":1046,"src":"8411:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1025,"name":"uint48","nodeType":"ElementaryTypeName","src":"8411:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1035,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1029,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"8450:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8456:9:4","memberName":"timestamp","nodeType":"MemberAccess","src":"8450:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1027,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"8432:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":1028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8441:8:4","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":8262,"src":"8432:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8432:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1032,"name":"defaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"8469:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8469:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"8432:56:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"8411:77:4"},{"expression":{"arguments":[{"id":1037,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"8522:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1038,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"8532:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1036,"name":"_setPendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1264,"src":"8498:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint48_$returns$__$","typeString":"function (address,uint48)"}},"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8498:46:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1040,"nodeType":"ExpressionStatement","src":"8498:46:4"},{"eventCall":{"arguments":[{"id":1042,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"8589:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1043,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"8599:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1041,"name":"DefaultAdminTransferScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1358,"src":"8559:29:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint48_$returns$__$","typeString":"function (address,uint48)"}},"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8559:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1045,"nodeType":"EmitStatement","src":"8554:57:4"}]},"documentation":{"id":1020,"nodeType":"StructuredDocumentation","src":"8209:116:4","text":" @dev See {beginDefaultAdminTransfer}.\n Internal function without access restriction."},"id":1047,"implemented":true,"kind":"function","modifiers":[],"name":"_beginDefaultAdminTransfer","nameLocation":"8339:26:4","nodeType":"FunctionDefinition","parameters":{"id":1023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1022,"mutability":"mutable","name":"newAdmin","nameLocation":"8374:8:4","nodeType":"VariableDeclaration","scope":1047,"src":"8366:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1021,"name":"address","nodeType":"ElementaryTypeName","src":"8366:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8365:18:4"},"returnParameters":{"id":1024,"nodeType":"ParameterList","parameters":[],"src":"8401:0:4"},"scope":1331,"src":"8330:288:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1409],"body":{"id":1057,"nodeType":"Block","src":"8758:46:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1054,"name":"_cancelDefaultAdminTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1071,"src":"8768:27:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8768:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1056,"nodeType":"ExpressionStatement","src":"8768:29:4"}]},"documentation":{"id":1048,"nodeType":"StructuredDocumentation","src":"8624:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"d602b9fd","id":1058,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1051,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"8738:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1052,"kind":"modifierInvocation","modifierName":{"id":1050,"name":"onlyRole","nameLocations":["8729:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"8729:8:4"},"nodeType":"ModifierInvocation","src":"8729:28:4"}],"name":"cancelDefaultAdminTransfer","nameLocation":"8685:26:4","nodeType":"FunctionDefinition","parameters":{"id":1049,"nodeType":"ParameterList","parameters":[],"src":"8711:2:4"},"returnParameters":{"id":1053,"nodeType":"ParameterList","parameters":[],"src":"8758:0:4"},"scope":1331,"src":"8676:128:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1070,"nodeType":"Block","src":"8988:55:4","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9030:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1064,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9022:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1063,"name":"address","nodeType":"ElementaryTypeName","src":"9022:7:4","typeDescriptions":{}}},"id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9022:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":1067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9034:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1062,"name":"_setPendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1264,"src":"8998:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint48_$returns$__$","typeString":"function (address,uint48)"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8998:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1069,"nodeType":"ExpressionStatement","src":"8998:38:4"}]},"documentation":{"id":1059,"nodeType":"StructuredDocumentation","src":"8810:117:4","text":" @dev See {cancelDefaultAdminTransfer}.\n Internal function without access restriction."},"id":1071,"implemented":true,"kind":"function","modifiers":[],"name":"_cancelDefaultAdminTransfer","nameLocation":"8941:27:4","nodeType":"FunctionDefinition","parameters":{"id":1060,"nodeType":"ParameterList","parameters":[],"src":"8968:2:4"},"returnParameters":{"id":1061,"nodeType":"ParameterList","parameters":[],"src":"8988:0:4"},"scope":1331,"src":"8932:111:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1413],"body":{"id":1094,"nodeType":"Block","src":"9154:291:4","statements":[{"assignments":[1076,null],"declarations":[{"constant":false,"id":1076,"mutability":"mutable","name":"newDefaultAdmin","nameLocation":"9173:15:4","nodeType":"VariableDeclaration","scope":1094,"src":"9165:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1075,"name":"address","nodeType":"ElementaryTypeName","src":"9165:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":1079,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1077,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"9194:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9194:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"9164:51:4"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1080,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"9229:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9229:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1082,"name":"newDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"9245:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9229:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1090,"nodeType":"IfStatement","src":"9225:175:4","trueBody":{"id":1089,"nodeType":"Block","src":"9262:138:4","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1085,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"9376:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9376:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1084,"name":"AccessControlInvalidDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1343,"src":"9343:32:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9343:46:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1088,"nodeType":"RevertStatement","src":"9336:53:4"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1091,"name":"_acceptDefaultAdminTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"9409:27:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9409:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1093,"nodeType":"ExpressionStatement","src":"9409:29:4"}]},"documentation":{"id":1072,"nodeType":"StructuredDocumentation","src":"9049:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"cefc1429","id":1095,"implemented":true,"kind":"function","modifiers":[],"name":"acceptDefaultAdminTransfer","nameLocation":"9110:26:4","nodeType":"FunctionDefinition","parameters":{"id":1073,"nodeType":"ParameterList","parameters":[],"src":"9136:2:4"},"returnParameters":{"id":1074,"nodeType":"ParameterList","parameters":[],"src":"9154:0:4"},"scope":1331,"src":"9101:344:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1138,"nodeType":"Block","src":"9629:418:4","statements":[{"assignments":[1100,1102],"declarations":[{"constant":false,"id":1100,"mutability":"mutable","name":"newAdmin","nameLocation":"9648:8:4","nodeType":"VariableDeclaration","scope":1138,"src":"9640:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1099,"name":"address","nodeType":"ElementaryTypeName","src":"9640:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1102,"mutability":"mutable","name":"schedule","nameLocation":"9665:8:4","nodeType":"VariableDeclaration","scope":1138,"src":"9658:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1101,"name":"uint48","nodeType":"ElementaryTypeName","src":"9658:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1105,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1103,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"9677:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":1104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9677:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"9639:59:4"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9712:25:4","subExpression":{"arguments":[{"id":1107,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"9728:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1106,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"9713:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":1108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9713:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9741:29:4","subExpression":{"arguments":[{"id":1111,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"9761:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1110,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9742:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9742:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9712:58:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1120,"nodeType":"IfStatement","src":"9708:144:4","trueBody":{"id":1119,"nodeType":"Block","src":"9772:80:4","statements":[{"errorCall":{"arguments":[{"id":1116,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"9832:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1115,"name":"AccessControlEnforcedDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1351,"src":"9793:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint48_$returns$_t_error_$","typeString":"function (uint48) pure returns (error)"}},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9793:48:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1118,"nodeType":"RevertStatement","src":"9786:55:4"}]}},{"expression":{"arguments":[{"id":1122,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"9873:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1123,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"9893:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9893:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1121,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[896],"referencedDeclaration":896,"src":"9861:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1126,"nodeType":"ExpressionStatement","src":"9861:47:4"},{"expression":{"arguments":[{"id":1128,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"9929:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1129,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"9949:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1127,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[865],"referencedDeclaration":865,"src":"9918:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":1130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9918:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1131,"nodeType":"ExpressionStatement","src":"9918:40:4"},{"expression":{"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9968:27:4","subExpression":{"id":1132,"name":"_pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"9975:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1134,"nodeType":"ExpressionStatement","src":"9968:27:4"},{"expression":{"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10005:35:4","subExpression":{"id":1135,"name":"_pendingDefaultAdminSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"10012:28:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1137,"nodeType":"ExpressionStatement","src":"10005:35:4"}]},"documentation":{"id":1096,"nodeType":"StructuredDocumentation","src":"9451:117:4","text":" @dev See {acceptDefaultAdminTransfer}.\n Internal function without access restriction."},"id":1139,"implemented":true,"kind":"function","modifiers":[],"name":"_acceptDefaultAdminTransfer","nameLocation":"9582:27:4","nodeType":"FunctionDefinition","parameters":{"id":1097,"nodeType":"ParameterList","parameters":[],"src":"9609:2:4"},"returnParameters":{"id":1098,"nodeType":"ParameterList","parameters":[],"src":"9629:0:4"},"scope":1331,"src":"9573:474:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1419],"body":{"id":1152,"nodeType":"Block","src":"10330:51:4","statements":[{"expression":{"arguments":[{"id":1149,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"10365:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1148,"name":"_changeDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"10340:24:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$returns$__$","typeString":"function (uint48)"}},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10340:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1151,"nodeType":"ExpressionStatement","src":"10340:34:4"}]},"documentation":{"id":1140,"nodeType":"StructuredDocumentation","src":"10184:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"649a5ec7","id":1153,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1145,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"10310:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1146,"kind":"modifierInvocation","modifierName":{"id":1144,"name":"onlyRole","nameLocations":["10301:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"10301:8:4"},"nodeType":"ModifierInvocation","src":"10301:28:4"}],"name":"changeDefaultAdminDelay","nameLocation":"10245:23:4","nodeType":"FunctionDefinition","parameters":{"id":1143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1142,"mutability":"mutable","name":"newDelay","nameLocation":"10276:8:4","nodeType":"VariableDeclaration","scope":1153,"src":"10269:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1141,"name":"uint48","nodeType":"ElementaryTypeName","src":"10269:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"10268:17:4"},"returnParameters":{"id":1147,"nodeType":"ParameterList","parameters":[],"src":"10330:0:4"},"scope":1331,"src":"10236:145:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1181,"nodeType":"Block","src":"10574:220:4","statements":[{"assignments":[1160],"declarations":[{"constant":false,"id":1160,"mutability":"mutable","name":"newSchedule","nameLocation":"10591:11:4","nodeType":"VariableDeclaration","scope":1181,"src":"10584:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1159,"name":"uint48","nodeType":"ElementaryTypeName","src":"10584:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1170,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1163,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"10623:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10629:9:4","memberName":"timestamp","nodeType":"MemberAccess","src":"10623:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1161,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"10605:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10614:8:4","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":8262,"src":"10605:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":1165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10605:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":1167,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"10659:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1166,"name":"_delayChangeWait","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"10642:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_uint48_$","typeString":"function (uint48) view returns (uint48)"}},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10642:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"10605:63:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"10584:84:4"},{"expression":{"arguments":[{"id":1172,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"10695:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":1173,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"10705:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1171,"name":"_setPendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"10678:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (uint48,uint48)"}},"id":1174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10678:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1175,"nodeType":"ExpressionStatement","src":"10678:39:4"},{"eventCall":{"arguments":[{"id":1177,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"10765:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":1178,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"10775:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1176,"name":"DefaultAdminDelayChangeScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"10732:32:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (uint48,uint48)"}},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10732:55:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1180,"nodeType":"EmitStatement","src":"10727:60:4"}]},"documentation":{"id":1154,"nodeType":"StructuredDocumentation","src":"10387:114:4","text":" @dev See {changeDefaultAdminDelay}.\n Internal function without access restriction."},"id":1182,"implemented":true,"kind":"function","modifiers":[],"name":"_changeDefaultAdminDelay","nameLocation":"10515:24:4","nodeType":"FunctionDefinition","parameters":{"id":1157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1156,"mutability":"mutable","name":"newDelay","nameLocation":"10547:8:4","nodeType":"VariableDeclaration","scope":1182,"src":"10540:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1155,"name":"uint48","nodeType":"ElementaryTypeName","src":"10540:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"10539:17:4"},"returnParameters":{"id":1158,"nodeType":"ParameterList","parameters":[],"src":"10574:0:4"},"scope":1331,"src":"10506:288:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1423],"body":{"id":1192,"nodeType":"Block","src":"10933:45:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1189,"name":"_rollbackDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"10943:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10943:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1191,"nodeType":"ExpressionStatement","src":"10943:28:4"}]},"documentation":{"id":1183,"nodeType":"StructuredDocumentation","src":"10800:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"0aa6220b","id":1193,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1186,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"10913:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1187,"kind":"modifierInvocation","modifierName":{"id":1185,"name":"onlyRole","nameLocations":["10904:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"10904:8:4"},"nodeType":"ModifierInvocation","src":"10904:28:4"}],"name":"rollbackDefaultAdminDelay","nameLocation":"10861:25:4","nodeType":"FunctionDefinition","parameters":{"id":1184,"nodeType":"ParameterList","parameters":[],"src":"10886:2:4"},"returnParameters":{"id":1188,"nodeType":"ParameterList","parameters":[],"src":"10933:0:4"},"scope":1331,"src":"10852:126:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1202,"nodeType":"Block","src":"11160:39:4","statements":[{"expression":{"arguments":[{"hexValue":"30","id":1198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11187:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11190:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1197,"name":"_setPendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"11170:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (uint48,uint48)"}},"id":1200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11170:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1201,"nodeType":"ExpressionStatement","src":"11170:22:4"}]},"documentation":{"id":1194,"nodeType":"StructuredDocumentation","src":"10984:116:4","text":" @dev See {rollbackDefaultAdminDelay}.\n Internal function without access restriction."},"id":1203,"implemented":true,"kind":"function","modifiers":[],"name":"_rollbackDefaultAdminDelay","nameLocation":"11114:26:4","nodeType":"FunctionDefinition","parameters":{"id":1195,"nodeType":"ParameterList","parameters":[],"src":"11140:2:4"},"returnParameters":{"id":1196,"nodeType":"ParameterList","parameters":[],"src":"11160:0:4"},"scope":1331,"src":"11105:94:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1233,"nodeType":"Block","src":"11628:1167:4","statements":[{"assignments":[1212],"declarations":[{"constant":false,"id":1212,"mutability":"mutable","name":"currentDelay","nameLocation":"11645:12:4","nodeType":"VariableDeclaration","scope":1233,"src":"11638:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1211,"name":"uint48","nodeType":"ElementaryTypeName","src":"11638:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1215,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1213,"name":"defaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"11660:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":1214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11660:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"11638:41:4"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1216,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"12598:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1217,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1212,"src":"12609:12:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12598:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1228,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1212,"src":"12765:12:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1229,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"12780:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12765:23:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12598:190:4","trueExpression":{"arguments":[{"arguments":[{"id":1223,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"12656:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1224,"name":"defaultAdminDelayIncreaseWait","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1005,"src":"12666:29:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12666:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":1221,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"12647:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12652:3:4","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"12647:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12647:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12640:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":1219,"name":"uint48","nodeType":"ElementaryTypeName","src":"12640:6:4","typeDescriptions":{}}},"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12640:59:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":1210,"id":1232,"nodeType":"Return","src":"12579:209:4"}]},"documentation":{"id":1204,"nodeType":"StructuredDocumentation","src":"11205:336:4","text":" @dev Returns the amount of seconds to wait after the `newDelay` will\n become the new {defaultAdminDelay}.\n The value returned guarantees that if the delay is reduced, it will go into effect\n after a wait that honors the previously set delay.\n See {defaultAdminDelayIncreaseWait}."},"id":1234,"implemented":true,"kind":"function","modifiers":[],"name":"_delayChangeWait","nameLocation":"11555:16:4","nodeType":"FunctionDefinition","parameters":{"id":1207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1206,"mutability":"mutable","name":"newDelay","nameLocation":"11579:8:4","nodeType":"VariableDeclaration","scope":1234,"src":"11572:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1205,"name":"uint48","nodeType":"ElementaryTypeName","src":"11572:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"11571:17:4"},"returnParameters":{"id":1210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1234,"src":"11620:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1208,"name":"uint48","nodeType":"ElementaryTypeName","src":"11620:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"11619:8:4"},"scope":1331,"src":"11546:1249:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1263,"nodeType":"Block","src":"13068:446:4","statements":[{"assignments":[null,1243],"declarations":[null,{"constant":false,"id":1243,"mutability":"mutable","name":"oldSchedule","nameLocation":"13088:11:4","nodeType":"VariableDeclaration","scope":1263,"src":"13081:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1242,"name":"uint48","nodeType":"ElementaryTypeName","src":"13081:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1246,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1244,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"13103:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13103:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"13078:46:4"},{"expression":{"id":1249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1247,"name":"_pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"13135:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1248,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"13158:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13135:31:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1250,"nodeType":"ExpressionStatement","src":"13135:31:4"},{"expression":{"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1251,"name":"_pendingDefaultAdminSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"13176:28:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1252,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"13207:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"13176:42:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1254,"nodeType":"ExpressionStatement","src":"13176:42:4"},{"condition":{"arguments":[{"id":1256,"name":"oldSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"13345:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1255,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"13330:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":1257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13330:27:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1262,"nodeType":"IfStatement","src":"13326:182:4","trueBody":{"id":1261,"nodeType":"Block","src":"13359:149:4","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1258,"name":"DefaultAdminTransferCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"13467:28:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13467:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1260,"nodeType":"EmitStatement","src":"13462:35:4"}]}}]},"documentation":{"id":1235,"nodeType":"StructuredDocumentation","src":"12842:142:4","text":" @dev Setter of the tuple for pending admin and its schedule.\n May emit a {DefaultAdminTransferCanceled} event."},"id":1264,"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingDefaultAdmin","nameLocation":"12998:23:4","nodeType":"FunctionDefinition","parameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1237,"mutability":"mutable","name":"newAdmin","nameLocation":"13030:8:4","nodeType":"VariableDeclaration","scope":1264,"src":"13022:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1236,"name":"address","nodeType":"ElementaryTypeName","src":"13022:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1239,"mutability":"mutable","name":"newSchedule","nameLocation":"13047:11:4","nodeType":"VariableDeclaration","scope":1264,"src":"13040:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1238,"name":"uint48","nodeType":"ElementaryTypeName","src":"13040:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"13021:38:4"},"returnParameters":{"id":1241,"nodeType":"ParameterList","parameters":[],"src":"13068:0:4"},"scope":1331,"src":"12989:525:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1302,"nodeType":"Block","src":"13741:514:4","statements":[{"assignments":[1273],"declarations":[{"constant":false,"id":1273,"mutability":"mutable","name":"oldSchedule","nameLocation":"13758:11:4","nodeType":"VariableDeclaration","scope":1302,"src":"13751:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1272,"name":"uint48","nodeType":"ElementaryTypeName","src":"13751:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1275,"initialValue":{"id":1274,"name":"_pendingDelaySchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"13772:21:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"13751:42:4"},{"condition":{"arguments":[{"id":1277,"name":"oldSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1273,"src":"13823:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1276,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"13808:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":1278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13808:27:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1293,"nodeType":"IfStatement","src":"13804:365:4","trueBody":{"id":1292,"nodeType":"Block","src":"13837:332:4","statements":[{"condition":{"arguments":[{"id":1280,"name":"oldSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1273,"src":"13874:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1279,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"13855:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13855:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1290,"nodeType":"Block","src":"14003:156:4","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1287,"name":"DefaultAdminDelayChangeCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"14111:31:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14111:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1289,"nodeType":"EmitStatement","src":"14106:38:4"}]},"id":1291,"nodeType":"IfStatement","src":"13851:308:4","trueBody":{"id":1286,"nodeType":"Block","src":"13888:109:4","statements":[{"expression":{"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1282,"name":"_currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":640,"src":"13953:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1283,"name":"_pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"13969:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"13953:29:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1285,"nodeType":"ExpressionStatement","src":"13953:29:4"}]}}]}},{"expression":{"id":1296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1294,"name":"_pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"14179:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1295,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1267,"src":"14195:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14179:24:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1297,"nodeType":"ExpressionStatement","src":"14179:24:4"},{"expression":{"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1298,"name":"_pendingDelaySchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"14213:21:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1299,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"14237:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14213:35:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1301,"nodeType":"ExpressionStatement","src":"14213:35:4"}]},"documentation":{"id":1265,"nodeType":"StructuredDocumentation","src":"13520:145:4","text":" @dev Setter of the tuple for pending delay and its schedule.\n May emit a {DefaultAdminDelayChangeCanceled} event."},"id":1303,"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingDelay","nameLocation":"13679:16:4","nodeType":"FunctionDefinition","parameters":{"id":1270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1267,"mutability":"mutable","name":"newDelay","nameLocation":"13703:8:4","nodeType":"VariableDeclaration","scope":1303,"src":"13696:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1266,"name":"uint48","nodeType":"ElementaryTypeName","src":"13696:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":1269,"mutability":"mutable","name":"newSchedule","nameLocation":"13720:11:4","nodeType":"VariableDeclaration","scope":1303,"src":"13713:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1268,"name":"uint48","nodeType":"ElementaryTypeName","src":"13713:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"13695:37:4"},"returnParameters":{"id":1271,"nodeType":"ParameterList","parameters":[],"src":"13741:0:4"},"scope":1331,"src":"13670:585:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1315,"nodeType":"Block","src":"14468:37:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1311,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1306,"src":"14485:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14497:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14485:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1310,"id":1314,"nodeType":"Return","src":"14478:20:4"}]},"documentation":{"id":1304,"nodeType":"StructuredDocumentation","src":"14302:92:4","text":" @dev Defines if a `schedule` is considered set. For consistency purposes."},"id":1316,"implemented":true,"kind":"function","modifiers":[],"name":"_isScheduleSet","nameLocation":"14408:14:4","nodeType":"FunctionDefinition","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1306,"mutability":"mutable","name":"schedule","nameLocation":"14430:8:4","nodeType":"VariableDeclaration","scope":1316,"src":"14423:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1305,"name":"uint48","nodeType":"ElementaryTypeName","src":"14423:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14422:17:4"},"returnParameters":{"id":1310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1316,"src":"14462:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1308,"name":"bool","nodeType":"ElementaryTypeName","src":"14462:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14461:6:4"},"scope":1331,"src":"14399:106:4","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1329,"nodeType":"Block","src":"14684:50:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1324,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"14701:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1325,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"14712:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14718:9:4","memberName":"timestamp","nodeType":"MemberAccess","src":"14712:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14701:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1323,"id":1328,"nodeType":"Return","src":"14694:33:4"}]},"documentation":{"id":1317,"nodeType":"StructuredDocumentation","src":"14511:95:4","text":" @dev Defines if a `schedule` is considered passed. For consistency purposes."},"id":1330,"implemented":true,"kind":"function","modifiers":[],"name":"_hasSchedulePassed","nameLocation":"14620:18:4","nodeType":"FunctionDefinition","parameters":{"id":1320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1319,"mutability":"mutable","name":"schedule","nameLocation":"14646:8:4","nodeType":"VariableDeclaration","scope":1330,"src":"14639:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1318,"name":"uint48","nodeType":"ElementaryTypeName","src":"14639:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14638:17:4"},"returnParameters":{"id":1323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1322,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1330,"src":"14678:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1321,"name":"bool","nodeType":"ElementaryTypeName","src":"14678:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14677:6:4"},"scope":1331,"src":"14611:123:4","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":1332,"src":"1853:12883:4","usedErrors":[305,308,1343,1346,1351,7517],"usedEvents":[317,326,335,1358,1361,1368,1371]}],"src":"136:14601:4"},"id":4},"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol","exportedSymbols":{"IAccessControl":[378],"IAccessControlDefaultAdminRules":[1430]},"id":1431,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1333,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"137:24:5"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"../IAccessControl.sol","id":1335,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1431,"sourceUnit":379,"src":"163:53:5","symbolAliases":[{"foreign":{"id":1334,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"171:14:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1337,"name":"IAccessControl","nameLocations":["371:14:5"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"371:14:5"},"id":1338,"nodeType":"InheritanceSpecifier","src":"371:14:5"}],"canonicalName":"IAccessControlDefaultAdminRules","contractDependencies":[],"contractKind":"interface","documentation":{"id":1336,"nodeType":"StructuredDocumentation","src":"218:107:5","text":" @dev External interface of AccessControlDefaultAdminRules declared to support ERC-165 detection."},"fullyImplemented":false,"id":1430,"linearizedBaseContracts":[1430,378],"name":"IAccessControlDefaultAdminRules","nameLocation":"336:31:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1339,"nodeType":"StructuredDocumentation","src":"392:75:5","text":" @dev The new default admin is not a valid default admin."},"errorSelector":"c22c8022","id":1343,"name":"AccessControlInvalidDefaultAdmin","nameLocation":"478:32:5","nodeType":"ErrorDefinition","parameters":{"id":1342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1341,"mutability":"mutable","name":"defaultAdmin","nameLocation":"519:12:5","nodeType":"VariableDeclaration","scope":1343,"src":"511:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1340,"name":"address","nodeType":"ElementaryTypeName","src":"511:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"510:22:5"},"src":"472:61:5"},{"documentation":{"id":1344,"nodeType":"StructuredDocumentation","src":"539:299:5","text":" @dev At least one of the following rules was violated:\n - The `DEFAULT_ADMIN_ROLE` must only be managed by itself.\n - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time.\n - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps."},"errorSelector":"3fc3c27a","id":1346,"name":"AccessControlEnforcedDefaultAdminRules","nameLocation":"849:38:5","nodeType":"ErrorDefinition","parameters":{"id":1345,"nodeType":"ParameterList","parameters":[],"src":"887:2:5"},"src":"843:47:5"},{"documentation":{"id":1347,"nodeType":"StructuredDocumentation","src":"896:221:5","text":" @dev The delay for transferring the default admin delay is enforced and\n the operation must wait until `schedule`.\n NOTE: `schedule` can be 0 indicating there's no transfer scheduled."},"errorSelector":"19ca5ebb","id":1351,"name":"AccessControlEnforcedDefaultAdminDelay","nameLocation":"1128:38:5","nodeType":"ErrorDefinition","parameters":{"id":1350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1349,"mutability":"mutable","name":"schedule","nameLocation":"1174:8:5","nodeType":"VariableDeclaration","scope":1351,"src":"1167:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1348,"name":"uint48","nodeType":"ElementaryTypeName","src":"1167:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1166:17:5"},"src":"1122:62:5"},{"anonymous":false,"documentation":{"id":1352,"nodeType":"StructuredDocumentation","src":"1190:232:5","text":" @dev Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next\n address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule`\n passes."},"eventSelector":"3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed6","id":1358,"name":"DefaultAdminTransferScheduled","nameLocation":"1433:29:5","nodeType":"EventDefinition","parameters":{"id":1357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1354,"indexed":true,"mutability":"mutable","name":"newAdmin","nameLocation":"1479:8:5","nodeType":"VariableDeclaration","scope":1358,"src":"1463:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1353,"name":"address","nodeType":"ElementaryTypeName","src":"1463:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1356,"indexed":false,"mutability":"mutable","name":"acceptSchedule","nameLocation":"1496:14:5","nodeType":"VariableDeclaration","scope":1358,"src":"1489:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1355,"name":"uint48","nodeType":"ElementaryTypeName","src":"1489:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1462:49:5"},"src":"1427:85:5"},{"anonymous":false,"documentation":{"id":1359,"nodeType":"StructuredDocumentation","src":"1518:123:5","text":" @dev Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule."},"eventSelector":"8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109","id":1361,"name":"DefaultAdminTransferCanceled","nameLocation":"1652:28:5","nodeType":"EventDefinition","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[],"src":"1680:2:5"},"src":"1646:37:5"},{"anonymous":false,"documentation":{"id":1362,"nodeType":"StructuredDocumentation","src":"1689:201:5","text":" @dev Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next\n delay to be applied between default admin transfer after `effectSchedule` has passed."},"eventSelector":"f1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b","id":1368,"name":"DefaultAdminDelayChangeScheduled","nameLocation":"1901:32:5","nodeType":"EventDefinition","parameters":{"id":1367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1364,"indexed":false,"mutability":"mutable","name":"newDelay","nameLocation":"1941:8:5","nodeType":"VariableDeclaration","scope":1368,"src":"1934:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1363,"name":"uint48","nodeType":"ElementaryTypeName","src":"1934:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":1366,"indexed":false,"mutability":"mutable","name":"effectSchedule","nameLocation":"1958:14:5","nodeType":"VariableDeclaration","scope":1368,"src":"1951:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1365,"name":"uint48","nodeType":"ElementaryTypeName","src":"1951:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1933:40:5"},"src":"1895:79:5"},{"anonymous":false,"documentation":{"id":1369,"nodeType":"StructuredDocumentation","src":"1980:103:5","text":" @dev Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass."},"eventSelector":"2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5","id":1371,"name":"DefaultAdminDelayChangeCanceled","nameLocation":"2094:31:5","nodeType":"EventDefinition","parameters":{"id":1370,"nodeType":"ParameterList","parameters":[],"src":"2125:2:5"},"src":"2088:40:5"},{"documentation":{"id":1372,"nodeType":"StructuredDocumentation","src":"2134:87:5","text":" @dev Returns the address of the current `DEFAULT_ADMIN_ROLE` holder."},"functionSelector":"84ef8ffc","id":1377,"implemented":false,"kind":"function","modifiers":[],"name":"defaultAdmin","nameLocation":"2235:12:5","nodeType":"FunctionDefinition","parameters":{"id":1373,"nodeType":"ParameterList","parameters":[],"src":"2247:2:5"},"returnParameters":{"id":1376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1377,"src":"2273:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1374,"name":"address","nodeType":"ElementaryTypeName","src":"2273:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2272:9:5"},"scope":1430,"src":"2226:56:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1378,"nodeType":"StructuredDocumentation","src":"2288:443:5","text":" @dev Returns a tuple of a `newAdmin` and an accept schedule.\n After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role\n by calling {acceptDefaultAdminTransfer}, completing the role transfer.\n A zero value only in `acceptSchedule` indicates no pending admin transfer.\n NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced."},"functionSelector":"cf6eefb7","id":1385,"implemented":false,"kind":"function","modifiers":[],"name":"pendingDefaultAdmin","nameLocation":"2745:19:5","nodeType":"FunctionDefinition","parameters":{"id":1379,"nodeType":"ParameterList","parameters":[],"src":"2764:2:5"},"returnParameters":{"id":1384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1381,"mutability":"mutable","name":"newAdmin","nameLocation":"2798:8:5","nodeType":"VariableDeclaration","scope":1385,"src":"2790:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1380,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1383,"mutability":"mutable","name":"acceptSchedule","nameLocation":"2815:14:5","nodeType":"VariableDeclaration","scope":1385,"src":"2808:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1382,"name":"uint48","nodeType":"ElementaryTypeName","src":"2808:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2789:41:5"},"scope":1430,"src":"2736:95:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1386,"nodeType":"StructuredDocumentation","src":"2837:451:5","text":" @dev Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started.\n This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set\n the acceptance schedule.\n NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this\n function returns the new delay. See {changeDefaultAdminDelay}."},"functionSelector":"cc8463c8","id":1391,"implemented":false,"kind":"function","modifiers":[],"name":"defaultAdminDelay","nameLocation":"3302:17:5","nodeType":"FunctionDefinition","parameters":{"id":1387,"nodeType":"ParameterList","parameters":[],"src":"3319:2:5"},"returnParameters":{"id":1390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1389,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1391,"src":"3345:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1388,"name":"uint48","nodeType":"ElementaryTypeName","src":"3345:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3344:8:5"},"scope":1430,"src":"3293:60:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1392,"nodeType":"StructuredDocumentation","src":"3359:482:5","text":" @dev Returns a tuple of `newDelay` and an effect schedule.\n After the `schedule` passes, the `newDelay` will get into effect immediately for every\n new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}.\n A zero value only in `effectSchedule` indicates no pending delay change.\n NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay}\n will be zero after the effect schedule."},"functionSelector":"a1eda53c","id":1399,"implemented":false,"kind":"function","modifiers":[],"name":"pendingDefaultAdminDelay","nameLocation":"3855:24:5","nodeType":"FunctionDefinition","parameters":{"id":1393,"nodeType":"ParameterList","parameters":[],"src":"3879:2:5"},"returnParameters":{"id":1398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1395,"mutability":"mutable","name":"newDelay","nameLocation":"3912:8:5","nodeType":"VariableDeclaration","scope":1399,"src":"3905:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1394,"name":"uint48","nodeType":"ElementaryTypeName","src":"3905:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":1397,"mutability":"mutable","name":"effectSchedule","nameLocation":"3929:14:5","nodeType":"VariableDeclaration","scope":1399,"src":"3922:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1396,"name":"uint48","nodeType":"ElementaryTypeName","src":"3922:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3904:40:5"},"scope":1430,"src":"3846:99:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1400,"nodeType":"StructuredDocumentation","src":"3951:334:5","text":" @dev Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance\n after the current timestamp plus a {defaultAdminDelay}.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n Emits a {DefaultAdminTransferScheduled} event."},"functionSelector":"634e93da","id":1405,"implemented":false,"kind":"function","modifiers":[],"name":"beginDefaultAdminTransfer","nameLocation":"4299:25:5","nodeType":"FunctionDefinition","parameters":{"id":1403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1402,"mutability":"mutable","name":"newAdmin","nameLocation":"4333:8:5","nodeType":"VariableDeclaration","scope":1405,"src":"4325:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1401,"name":"address","nodeType":"ElementaryTypeName","src":"4325:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4324:18:5"},"returnParameters":{"id":1404,"nodeType":"ParameterList","parameters":[],"src":"4351:0:5"},"scope":1430,"src":"4290:62:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1406,"nodeType":"StructuredDocumentation","src":"4358:364:5","text":" @dev Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}.\n A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n May emit a {DefaultAdminTransferCanceled} event."},"functionSelector":"d602b9fd","id":1409,"implemented":false,"kind":"function","modifiers":[],"name":"cancelDefaultAdminTransfer","nameLocation":"4736:26:5","nodeType":"FunctionDefinition","parameters":{"id":1407,"nodeType":"ParameterList","parameters":[],"src":"4762:2:5"},"returnParameters":{"id":1408,"nodeType":"ParameterList","parameters":[],"src":"4773:0:5"},"scope":1430,"src":"4727:47:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1410,"nodeType":"StructuredDocumentation","src":"4780:539:5","text":" @dev Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}.\n After calling the function:\n - `DEFAULT_ADMIN_ROLE` should be granted to the caller.\n - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder.\n - {pendingDefaultAdmin} should be reset to zero values.\n Requirements:\n - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`.\n - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed."},"functionSelector":"cefc1429","id":1413,"implemented":false,"kind":"function","modifiers":[],"name":"acceptDefaultAdminTransfer","nameLocation":"5333:26:5","nodeType":"FunctionDefinition","parameters":{"id":1411,"nodeType":"ParameterList","parameters":[],"src":"5359:2:5"},"returnParameters":{"id":1412,"nodeType":"ParameterList","parameters":[],"src":"5370:0:5"},"scope":1430,"src":"5324:47:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1414,"nodeType":"StructuredDocumentation","src":"5377:1414:5","text":" @dev Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting\n into effect after the current timestamp plus a {defaultAdminDelay}.\n This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this\n method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay}\n set before calling.\n The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then\n calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin}\n complete transfer (including acceptance).\n The schedule is designed for two scenarios:\n - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by\n {defaultAdminDelayIncreaseWait}.\n - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`.\n A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event."},"functionSelector":"649a5ec7","id":1419,"implemented":false,"kind":"function","modifiers":[],"name":"changeDefaultAdminDelay","nameLocation":"6805:23:5","nodeType":"FunctionDefinition","parameters":{"id":1417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1416,"mutability":"mutable","name":"newDelay","nameLocation":"6836:8:5","nodeType":"VariableDeclaration","scope":1419,"src":"6829:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1415,"name":"uint48","nodeType":"ElementaryTypeName","src":"6829:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6828:17:5"},"returnParameters":{"id":1418,"nodeType":"ParameterList","parameters":[],"src":"6854:0:5"},"scope":1430,"src":"6796:59:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1420,"nodeType":"StructuredDocumentation","src":"6861:231:5","text":" @dev Cancels a scheduled {defaultAdminDelay} change.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n May emit a {DefaultAdminDelayChangeCanceled} event."},"functionSelector":"0aa6220b","id":1423,"implemented":false,"kind":"function","modifiers":[],"name":"rollbackDefaultAdminDelay","nameLocation":"7106:25:5","nodeType":"FunctionDefinition","parameters":{"id":1421,"nodeType":"ParameterList","parameters":[],"src":"7131:2:5"},"returnParameters":{"id":1422,"nodeType":"ParameterList","parameters":[],"src":"7142:0:5"},"scope":1430,"src":"7097:46:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1424,"nodeType":"StructuredDocumentation","src":"7149:954:5","text":" @dev Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay})\n to take effect. Default to 5 days.\n When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with\n the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds)\n that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can\n be overridden for a custom {defaultAdminDelay} increase scheduling.\n IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise,\n there's a risk of setting a high new delay that goes into effect almost immediately without the\n possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds)."},"functionSelector":"022d63fb","id":1429,"implemented":false,"kind":"function","modifiers":[],"name":"defaultAdminDelayIncreaseWait","nameLocation":"8117:29:5","nodeType":"FunctionDefinition","parameters":{"id":1425,"nodeType":"ParameterList","parameters":[],"src":"8146:2:5"},"returnParameters":{"id":1428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1427,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1429,"src":"8172:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1426,"name":"uint48","nodeType":"ElementaryTypeName","src":"8172:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"8171:8:5"},"scope":1430,"src":"8108:72:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1431,"src":"326:7856:5","usedErrors":[305,308,1343,1346,1351],"usedEvents":[317,326,335,1358,1361,1368,1371]}],"src":"137:8046:5"},"id":5},"@openzeppelin/contracts/interfaces/IERC2981.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC2981.sol","exportedSymbols":{"IERC165":[5850],"IERC2981":[1450]},"id":1451,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1432,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"107:24:6"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","id":1434,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1451,"sourceUnit":5851,"src":"133:59:6","symbolAliases":[{"foreign":{"id":1433,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"141:7:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1436,"name":"IERC165","nameLocations":["476:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":5850,"src":"476:7:6"},"id":1437,"nodeType":"InheritanceSpecifier","src":"476:7:6"}],"canonicalName":"IERC2981","contractDependencies":[],"contractKind":"interface","documentation":{"id":1435,"nodeType":"StructuredDocumentation","src":"194:259:6","text":" @dev Interface for the NFT Royalty Standard.\n A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\n support for royalty payments across all NFT marketplaces and ecosystem participants."},"fullyImplemented":false,"id":1450,"linearizedBaseContracts":[1450,5850],"name":"IERC2981","nameLocation":"464:8:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1438,"nodeType":"StructuredDocumentation","src":"490:473:6","text":" @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\n exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\n NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the\n royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers."},"functionSelector":"2a55205a","id":1449,"implemented":false,"kind":"function","modifiers":[],"name":"royaltyInfo","nameLocation":"977:11:6","nodeType":"FunctionDefinition","parameters":{"id":1443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1440,"mutability":"mutable","name":"tokenId","nameLocation":"1006:7:6","nodeType":"VariableDeclaration","scope":1449,"src":"998:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"998:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1442,"mutability":"mutable","name":"salePrice","nameLocation":"1031:9:6","nodeType":"VariableDeclaration","scope":1449,"src":"1023:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1441,"name":"uint256","nodeType":"ElementaryTypeName","src":"1023:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"988:58:6"},"returnParameters":{"id":1448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1445,"mutability":"mutable","name":"receiver","nameLocation":"1078:8:6","nodeType":"VariableDeclaration","scope":1449,"src":"1070:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1444,"name":"address","nodeType":"ElementaryTypeName","src":"1070:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1447,"mutability":"mutable","name":"royaltyAmount","nameLocation":"1096:13:6","nodeType":"VariableDeclaration","scope":1449,"src":"1088:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1446,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1069:41:6"},"scope":1450,"src":"968:143:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1451,"src":"454:659:6","usedErrors":[],"usedEvents":[]}],"src":"107:1007:6"},"id":6},"@openzeppelin/contracts/interfaces/IERC5313.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5313.sol","exportedSymbols":{"IERC5313":[1460]},"id":1461,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1452,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"107:25:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC5313","contractDependencies":[],"contractKind":"interface","documentation":{"id":1453,"nodeType":"StructuredDocumentation","src":"134:164:7","text":" @dev Interface for the Light Contract Ownership Standard.\n A standardized minimal interface required to identify an account that controls a contract"},"fullyImplemented":false,"id":1460,"linearizedBaseContracts":[1460],"name":"IERC5313","nameLocation":"309:8:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1454,"nodeType":"StructuredDocumentation","src":"324:54:7","text":" @dev Gets the address of the owner."},"functionSelector":"8da5cb5b","id":1459,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"392:5:7","nodeType":"FunctionDefinition","parameters":{"id":1455,"nodeType":"ParameterList","parameters":[],"src":"397:2:7"},"returnParameters":{"id":1458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1459,"src":"423:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1456,"name":"address","nodeType":"ElementaryTypeName","src":"423:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"422:9:7"},"scope":1460,"src":"383:49:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1461,"src":"299:135:7","usedErrors":[],"usedEvents":[]}],"src":"107:328:7"},"id":7},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[1597],"IERC20Errors":[1502],"IERC721Errors":[1550]},"id":1598,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1462,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"113:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1463,"nodeType":"StructuredDocumentation","src":"139:141:8","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"id":1502,"linearizedBaseContracts":[1502],"name":"IERC20Errors","nameLocation":"291:12:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1464,"nodeType":"StructuredDocumentation","src":"310:309:8","text":" @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."},"errorSelector":"e450d38c","id":1472,"name":"ERC20InsufficientBalance","nameLocation":"630:24:8","nodeType":"ErrorDefinition","parameters":{"id":1471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1466,"mutability":"mutable","name":"sender","nameLocation":"663:6:8","nodeType":"VariableDeclaration","scope":1472,"src":"655:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1465,"name":"address","nodeType":"ElementaryTypeName","src":"655:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1468,"mutability":"mutable","name":"balance","nameLocation":"679:7:8","nodeType":"VariableDeclaration","scope":1472,"src":"671:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1467,"name":"uint256","nodeType":"ElementaryTypeName","src":"671:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1470,"mutability":"mutable","name":"needed","nameLocation":"696:6:8","nodeType":"VariableDeclaration","scope":1472,"src":"688:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1469,"name":"uint256","nodeType":"ElementaryTypeName","src":"688:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:49:8"},"src":"624:80:8"},{"documentation":{"id":1473,"nodeType":"StructuredDocumentation","src":"710:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":1477,"name":"ERC20InvalidSender","nameLocation":"873:18:8","nodeType":"ErrorDefinition","parameters":{"id":1476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1475,"mutability":"mutable","name":"sender","nameLocation":"900:6:8","nodeType":"VariableDeclaration","scope":1477,"src":"892:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1474,"name":"address","nodeType":"ElementaryTypeName","src":"892:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"891:16:8"},"src":"867:41:8"},{"documentation":{"id":1478,"nodeType":"StructuredDocumentation","src":"914:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":1482,"name":"ERC20InvalidReceiver","nameLocation":"1084:20:8","nodeType":"ErrorDefinition","parameters":{"id":1481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1480,"mutability":"mutable","name":"receiver","nameLocation":"1113:8:8","nodeType":"VariableDeclaration","scope":1482,"src":"1105:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1479,"name":"address","nodeType":"ElementaryTypeName","src":"1105:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1104:18:8"},"src":"1078:45:8"},{"documentation":{"id":1483,"nodeType":"StructuredDocumentation","src":"1129:345:8","text":" @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."},"errorSelector":"fb8f41b2","id":1491,"name":"ERC20InsufficientAllowance","nameLocation":"1485:26:8","nodeType":"ErrorDefinition","parameters":{"id":1490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1485,"mutability":"mutable","name":"spender","nameLocation":"1520:7:8","nodeType":"VariableDeclaration","scope":1491,"src":"1512:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1484,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1487,"mutability":"mutable","name":"allowance","nameLocation":"1537:9:8","nodeType":"VariableDeclaration","scope":1491,"src":"1529:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1486,"name":"uint256","nodeType":"ElementaryTypeName","src":"1529:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1489,"mutability":"mutable","name":"needed","nameLocation":"1556:6:8","nodeType":"VariableDeclaration","scope":1491,"src":"1548:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1488,"name":"uint256","nodeType":"ElementaryTypeName","src":"1548:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1511:52:8"},"src":"1479:85:8"},{"documentation":{"id":1492,"nodeType":"StructuredDocumentation","src":"1570:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":1496,"name":"ERC20InvalidApprover","nameLocation":"1755:20:8","nodeType":"ErrorDefinition","parameters":{"id":1495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1494,"mutability":"mutable","name":"approver","nameLocation":"1784:8:8","nodeType":"VariableDeclaration","scope":1496,"src":"1776:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1493,"name":"address","nodeType":"ElementaryTypeName","src":"1776:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1775:18:8"},"src":"1749:45:8"},{"documentation":{"id":1497,"nodeType":"StructuredDocumentation","src":"1800:195:8","text":" @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."},"errorSelector":"94280d62","id":1501,"name":"ERC20InvalidSpender","nameLocation":"2006:19:8","nodeType":"ErrorDefinition","parameters":{"id":1500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1499,"mutability":"mutable","name":"spender","nameLocation":"2034:7:8","nodeType":"VariableDeclaration","scope":1501,"src":"2026:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1498,"name":"address","nodeType":"ElementaryTypeName","src":"2026:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2025:17:8"},"src":"2000:43:8"}],"scope":1598,"src":"281:1764:8","usedErrors":[1472,1477,1482,1491,1496,1501],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1503,"nodeType":"StructuredDocumentation","src":"2047:143:8","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"id":1550,"linearizedBaseContracts":[1550],"name":"IERC721Errors","nameLocation":"2201:13:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1504,"nodeType":"StructuredDocumentation","src":"2221:220:8","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":1508,"name":"ERC721InvalidOwner","nameLocation":"2452:18:8","nodeType":"ErrorDefinition","parameters":{"id":1507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1506,"mutability":"mutable","name":"owner","nameLocation":"2479:5:8","nodeType":"VariableDeclaration","scope":1508,"src":"2471:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1505,"name":"address","nodeType":"ElementaryTypeName","src":"2471:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2470:15:8"},"src":"2446:40:8"},{"documentation":{"id":1509,"nodeType":"StructuredDocumentation","src":"2492:132:8","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":1513,"name":"ERC721NonexistentToken","nameLocation":"2635:22:8","nodeType":"ErrorDefinition","parameters":{"id":1512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1511,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:8","nodeType":"VariableDeclaration","scope":1513,"src":"2658:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1510,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2657:17:8"},"src":"2629:46:8"},{"documentation":{"id":1514,"nodeType":"StructuredDocumentation","src":"2681:289:8","text":" @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."},"errorSelector":"64283d7b","id":1522,"name":"ERC721IncorrectOwner","nameLocation":"2981:20:8","nodeType":"ErrorDefinition","parameters":{"id":1521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1516,"mutability":"mutable","name":"sender","nameLocation":"3010:6:8","nodeType":"VariableDeclaration","scope":1522,"src":"3002:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1515,"name":"address","nodeType":"ElementaryTypeName","src":"3002:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1518,"mutability":"mutable","name":"tokenId","nameLocation":"3026:7:8","nodeType":"VariableDeclaration","scope":1522,"src":"3018:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1517,"name":"uint256","nodeType":"ElementaryTypeName","src":"3018:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1520,"mutability":"mutable","name":"owner","nameLocation":"3043:5:8","nodeType":"VariableDeclaration","scope":1522,"src":"3035:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1519,"name":"address","nodeType":"ElementaryTypeName","src":"3035:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3001:48:8"},"src":"2975:75:8"},{"documentation":{"id":1523,"nodeType":"StructuredDocumentation","src":"3056:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":1527,"name":"ERC721InvalidSender","nameLocation":"3219:19:8","nodeType":"ErrorDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1525,"mutability":"mutable","name":"sender","nameLocation":"3247:6:8","nodeType":"VariableDeclaration","scope":1527,"src":"3239:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1524,"name":"address","nodeType":"ElementaryTypeName","src":"3239:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3238:16:8"},"src":"3213:42:8"},{"documentation":{"id":1528,"nodeType":"StructuredDocumentation","src":"3261:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":1532,"name":"ERC721InvalidReceiver","nameLocation":"3431:21:8","nodeType":"ErrorDefinition","parameters":{"id":1531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1530,"mutability":"mutable","name":"receiver","nameLocation":"3461:8:8","nodeType":"VariableDeclaration","scope":1532,"src":"3453:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1529,"name":"address","nodeType":"ElementaryTypeName","src":"3453:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3452:18:8"},"src":"3425:46:8"},{"documentation":{"id":1533,"nodeType":"StructuredDocumentation","src":"3477:247:8","text":" @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."},"errorSelector":"177e802f","id":1539,"name":"ERC721InsufficientApproval","nameLocation":"3735:26:8","nodeType":"ErrorDefinition","parameters":{"id":1538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1535,"mutability":"mutable","name":"operator","nameLocation":"3770:8:8","nodeType":"VariableDeclaration","scope":1539,"src":"3762:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1534,"name":"address","nodeType":"ElementaryTypeName","src":"3762:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1537,"mutability":"mutable","name":"tokenId","nameLocation":"3788:7:8","nodeType":"VariableDeclaration","scope":1539,"src":"3780:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1536,"name":"uint256","nodeType":"ElementaryTypeName","src":"3780:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3761:35:8"},"src":"3729:68:8"},{"documentation":{"id":1540,"nodeType":"StructuredDocumentation","src":"3803:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":1544,"name":"ERC721InvalidApprover","nameLocation":"3988:21:8","nodeType":"ErrorDefinition","parameters":{"id":1543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1542,"mutability":"mutable","name":"approver","nameLocation":"4018:8:8","nodeType":"VariableDeclaration","scope":1544,"src":"4010:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1541,"name":"address","nodeType":"ElementaryTypeName","src":"4010:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4009:18:8"},"src":"3982:46:8"},{"documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"4034:197:8","text":" @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."},"errorSelector":"5b08ba18","id":1549,"name":"ERC721InvalidOperator","nameLocation":"4242:21:8","nodeType":"ErrorDefinition","parameters":{"id":1548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1547,"mutability":"mutable","name":"operator","nameLocation":"4272:8:8","nodeType":"VariableDeclaration","scope":1549,"src":"4264:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1546,"name":"address","nodeType":"ElementaryTypeName","src":"4264:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4263:18:8"},"src":"4236:46:8"}],"scope":1598,"src":"2191:2093:8","usedErrors":[1508,1513,1522,1527,1532,1539,1544,1549],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1551,"nodeType":"StructuredDocumentation","src":"4286:145:8","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"id":1597,"linearizedBaseContracts":[1597],"name":"IERC1155Errors","nameLocation":"4442:14:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1552,"nodeType":"StructuredDocumentation","src":"4463:361:8","text":" @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."},"errorSelector":"03dee4c5","id":1562,"name":"ERC1155InsufficientBalance","nameLocation":"4835:26:8","nodeType":"ErrorDefinition","parameters":{"id":1561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1554,"mutability":"mutable","name":"sender","nameLocation":"4870:6:8","nodeType":"VariableDeclaration","scope":1562,"src":"4862:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1553,"name":"address","nodeType":"ElementaryTypeName","src":"4862:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1556,"mutability":"mutable","name":"balance","nameLocation":"4886:7:8","nodeType":"VariableDeclaration","scope":1562,"src":"4878:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1555,"name":"uint256","nodeType":"ElementaryTypeName","src":"4878:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1558,"mutability":"mutable","name":"needed","nameLocation":"4903:6:8","nodeType":"VariableDeclaration","scope":1562,"src":"4895:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1557,"name":"uint256","nodeType":"ElementaryTypeName","src":"4895:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1560,"mutability":"mutable","name":"tokenId","nameLocation":"4919:7:8","nodeType":"VariableDeclaration","scope":1562,"src":"4911:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1559,"name":"uint256","nodeType":"ElementaryTypeName","src":"4911:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4861:66:8"},"src":"4829:99:8"},{"documentation":{"id":1563,"nodeType":"StructuredDocumentation","src":"4934:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":1567,"name":"ERC1155InvalidSender","nameLocation":"5097:20:8","nodeType":"ErrorDefinition","parameters":{"id":1566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1565,"mutability":"mutable","name":"sender","nameLocation":"5126:6:8","nodeType":"VariableDeclaration","scope":1567,"src":"5118:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1564,"name":"address","nodeType":"ElementaryTypeName","src":"5118:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5117:16:8"},"src":"5091:43:8"},{"documentation":{"id":1568,"nodeType":"StructuredDocumentation","src":"5140:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":1572,"name":"ERC1155InvalidReceiver","nameLocation":"5310:22:8","nodeType":"ErrorDefinition","parameters":{"id":1571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1570,"mutability":"mutable","name":"receiver","nameLocation":"5341:8:8","nodeType":"VariableDeclaration","scope":1572,"src":"5333:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1569,"name":"address","nodeType":"ElementaryTypeName","src":"5333:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5332:18:8"},"src":"5304:47:8"},{"documentation":{"id":1573,"nodeType":"StructuredDocumentation","src":"5357:256:8","text":" @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."},"errorSelector":"e237d922","id":1579,"name":"ERC1155MissingApprovalForAll","nameLocation":"5624:28:8","nodeType":"ErrorDefinition","parameters":{"id":1578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1575,"mutability":"mutable","name":"operator","nameLocation":"5661:8:8","nodeType":"VariableDeclaration","scope":1579,"src":"5653:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1574,"name":"address","nodeType":"ElementaryTypeName","src":"5653:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1577,"mutability":"mutable","name":"owner","nameLocation":"5679:5:8","nodeType":"VariableDeclaration","scope":1579,"src":"5671:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"5671:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5652:33:8"},"src":"5618:68:8"},{"documentation":{"id":1580,"nodeType":"StructuredDocumentation","src":"5692:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":1584,"name":"ERC1155InvalidApprover","nameLocation":"5877:22:8","nodeType":"ErrorDefinition","parameters":{"id":1583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1582,"mutability":"mutable","name":"approver","nameLocation":"5908:8:8","nodeType":"VariableDeclaration","scope":1584,"src":"5900:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1581,"name":"address","nodeType":"ElementaryTypeName","src":"5900:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5899:18:8"},"src":"5871:47:8"},{"documentation":{"id":1585,"nodeType":"StructuredDocumentation","src":"5924:197:8","text":" @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."},"errorSelector":"ced3e100","id":1589,"name":"ERC1155InvalidOperator","nameLocation":"6132:22:8","nodeType":"ErrorDefinition","parameters":{"id":1588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1587,"mutability":"mutable","name":"operator","nameLocation":"6163:8:8","nodeType":"VariableDeclaration","scope":1589,"src":"6155:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1586,"name":"address","nodeType":"ElementaryTypeName","src":"6155:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6154:18:8"},"src":"6126:47:8"},{"documentation":{"id":1590,"nodeType":"StructuredDocumentation","src":"6179:280:8","text":" @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"},"errorSelector":"5b059991","id":1596,"name":"ERC1155InvalidArrayLength","nameLocation":"6470:25:8","nodeType":"ErrorDefinition","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1592,"mutability":"mutable","name":"idsLength","nameLocation":"6504:9:8","nodeType":"VariableDeclaration","scope":1596,"src":"6496:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1591,"name":"uint256","nodeType":"ElementaryTypeName","src":"6496:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1594,"mutability":"mutable","name":"valuesLength","nameLocation":"6523:12:8","nodeType":"VariableDeclaration","scope":1596,"src":"6515:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1593,"name":"uint256","nodeType":"ElementaryTypeName","src":"6515:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6495:41:8"},"src":"6464:73:8"}],"scope":1598,"src":"4432:2107:8","usedErrors":[1562,1567,1572,1579,1584,1589,1596],"usedEvents":[]}],"src":"113:6427:8"},"id":8},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","exportedSymbols":{"Context":[3907],"ERC165":[5838],"ERC721":[2569],"ERC721Utils":[2809],"IERC165":[5850],"IERC721":[2686],"IERC721Errors":[1550],"IERC721Metadata":[2732],"Strings":[5814]},"id":2570,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1599,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"107:24:9"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":1601,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":2687,"src":"133:38:9","symbolAliases":[{"foreign":{"id":1600,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"141:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","id":1603,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":2733,"src":"172:65:9","symbolAliases":[{"foreign":{"id":1602,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"180:15:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol","file":"./utils/ERC721Utils.sol","id":1605,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":2810,"src":"238:52:9","symbolAliases":[{"foreign":{"id":1604,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"246:11:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":1607,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":3908,"src":"291:48:9","symbolAliases":[{"foreign":{"id":1606,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"299:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","id":1609,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":5815,"src":"340:48:9","symbolAliases":[{"foreign":{"id":1608,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5814,"src":"348:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":1612,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":5839,"src":"389:69:9","symbolAliases":[{"foreign":{"id":1610,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"397:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1611,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5838,"src":"406:6:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":1614,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":1598,"src":"459:66:9","symbolAliases":[{"foreign":{"id":1613,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"467:13:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1616,"name":"Context","nameLocations":["803:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":3907,"src":"803:7:9"},"id":1617,"nodeType":"InheritanceSpecifier","src":"803:7:9"},{"baseName":{"id":1618,"name":"ERC165","nameLocations":["812:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":5838,"src":"812:6:9"},"id":1619,"nodeType":"InheritanceSpecifier","src":"812:6:9"},{"baseName":{"id":1620,"name":"IERC721","nameLocations":["820:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2686,"src":"820:7:9"},"id":1621,"nodeType":"InheritanceSpecifier","src":"820:7:9"},{"baseName":{"id":1622,"name":"IERC721Metadata","nameLocations":["829:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":2732,"src":"829:15:9"},"id":1623,"nodeType":"InheritanceSpecifier","src":"829:15:9"},{"baseName":{"id":1624,"name":"IERC721Errors","nameLocations":["846:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":1550,"src":"846:13:9"},"id":1625,"nodeType":"InheritanceSpecifier","src":"846:13:9"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1615,"nodeType":"StructuredDocumentation","src":"527:247:9","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"id":2569,"linearizedBaseContracts":[2569,1550,2732,2686,5838,5850,3907],"name":"ERC721","nameLocation":"793:6:9","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1628,"libraryName":{"id":1626,"name":"Strings","nameLocations":["872:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":5814,"src":"872:7:9"},"nodeType":"UsingForDirective","src":"866:26:9","typeName":{"id":1627,"name":"uint256","nodeType":"ElementaryTypeName","src":"884:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":1630,"mutability":"mutable","name":"_name","nameLocation":"931:5:9","nodeType":"VariableDeclaration","scope":2569,"src":"916:20:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1629,"name":"string","nodeType":"ElementaryTypeName","src":"916:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":1632,"mutability":"mutable","name":"_symbol","nameLocation":"978:7:9","nodeType":"VariableDeclaration","scope":2569,"src":"963:22:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1631,"name":"string","nodeType":"ElementaryTypeName","src":"963:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":1636,"mutability":"mutable","name":"_owners","nameLocation":"1036:7:9","nodeType":"VariableDeclaration","scope":2569,"src":"992:51:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1635,"keyName":"tokenId","keyNameLocation":"1008:7:9","keyType":{"id":1633,"name":"uint256","nodeType":"ElementaryTypeName","src":"1000:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"992:35:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1634,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":1640,"mutability":"mutable","name":"_balances","nameLocation":"1092:9:9","nodeType":"VariableDeclaration","scope":2569,"src":"1050:51:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1639,"keyName":"owner","keyNameLocation":"1066:5:9","keyType":{"id":1637,"name":"address","nodeType":"ElementaryTypeName","src":"1058:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1050:33:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1638,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":1644,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1152:15:9","nodeType":"VariableDeclaration","scope":2569,"src":"1108:59:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1643,"keyName":"tokenId","keyNameLocation":"1124:7:9","keyType":{"id":1641,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1108:35:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1642,"name":"address","nodeType":"ElementaryTypeName","src":"1135:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":1650,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1242:18:9","nodeType":"VariableDeclaration","scope":2569,"src":"1174:86:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1649,"keyName":"owner","keyNameLocation":"1190:5:9","keyType":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"1182:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1174:59:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1648,"keyName":"operator","keyNameLocation":"1215:8:9","keyType":{"id":1646,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1199:33:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1647,"name":"bool","nodeType":"ElementaryTypeName","src":"1227:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":1666,"nodeType":"Block","src":"1436:57:9","statements":[{"expression":{"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1658,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"1446:5:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1659,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1653,"src":"1454:5:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1446:13:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1661,"nodeType":"ExpressionStatement","src":"1446:13:9"},{"expression":{"id":1664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1662,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"1469:7:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1663,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1655,"src":"1479:7:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1469:17:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1665,"nodeType":"ExpressionStatement","src":"1469:17:9"}]},"documentation":{"id":1651,"nodeType":"StructuredDocumentation","src":"1267:108:9","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":1667,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1653,"mutability":"mutable","name":"name_","nameLocation":"1406:5:9","nodeType":"VariableDeclaration","scope":1667,"src":"1392:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1652,"name":"string","nodeType":"ElementaryTypeName","src":"1392:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1655,"mutability":"mutable","name":"symbol_","nameLocation":"1427:7:9","nodeType":"VariableDeclaration","scope":1667,"src":"1413:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1654,"name":"string","nodeType":"ElementaryTypeName","src":"1413:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1391:44:9"},"returnParameters":{"id":1657,"nodeType":"ParameterList","parameters":[],"src":"1436:0:9"},"scope":2569,"src":"1380:113:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[5837,5849],"body":{"id":1697,"nodeType":"Block","src":"1635:192:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1678,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"1664:11:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1680,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"1684:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$2686_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$2686_$","typeString":"type(contract IERC721)"}],"id":1679,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1679:4:9","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1679:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$2686","typeString":"type(contract IERC721)"}},"id":1682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1693:11:9","memberName":"interfaceId","nodeType":"MemberAccess","src":"1679:25:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1664:40:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1684,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"1720:11:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1686,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"1740:15:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$2732_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$2732_$","typeString":"type(contract IERC721Metadata)"}],"id":1685,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1735:4:9","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1735:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$2732","typeString":"type(contract IERC721Metadata)"}},"id":1688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1757:11:9","memberName":"interfaceId","nodeType":"MemberAccess","src":"1735:33:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1720:48:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1664:104:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1693,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"1808:11:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1691,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1784:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2569_$","typeString":"type(contract super ERC721)"}},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1790:17:9","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":5837,"src":"1784:23:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1784:36:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1664:156:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1677,"id":1696,"nodeType":"Return","src":"1645:175:9"}]},"documentation":{"id":1668,"nodeType":"StructuredDocumentation","src":"1499:23:9","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":1698,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1536:17:9","nodeType":"FunctionDefinition","overrides":{"id":1674,"nodeType":"OverrideSpecifier","overrides":[{"id":1672,"name":"ERC165","nameLocations":["1603:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":5838,"src":"1603:6:9"},{"id":1673,"name":"IERC165","nameLocations":["1611:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":5850,"src":"1611:7:9"}],"src":"1594:25:9"},"parameters":{"id":1671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1670,"mutability":"mutable","name":"interfaceId","nameLocation":"1561:11:9","nodeType":"VariableDeclaration","scope":1698,"src":"1554:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1669,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1554:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1553:20:9"},"returnParameters":{"id":1677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1698,"src":"1629:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1675,"name":"bool","nodeType":"ElementaryTypeName","src":"1629:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1628:6:9"},"scope":2569,"src":"1527:300:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2611],"body":{"id":1725,"nodeType":"Block","src":"1933:136:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1706,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1701,"src":"1947:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1964:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1956:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1707,"name":"address","nodeType":"ElementaryTypeName","src":"1956:7:9","typeDescriptions":{}}},"id":1710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1956:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1947:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1720,"nodeType":"IfStatement","src":"1943:87:9","trueBody":{"id":1719,"nodeType":"Block","src":"1968:62:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2016:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2008:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1713,"name":"address","nodeType":"ElementaryTypeName","src":"2008:7:9","typeDescriptions":{}}},"id":1716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2008:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1712,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"1989:18:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1989:30:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1718,"nodeType":"RevertStatement","src":"1982:37:9"}]}},{"expression":{"baseExpression":{"id":1721,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"2046:9:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1723,"indexExpression":{"id":1722,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1701,"src":"2056:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2046:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1705,"id":1724,"nodeType":"Return","src":"2039:23:9"}]},"documentation":{"id":1699,"nodeType":"StructuredDocumentation","src":"1833:23:9","text":"@inheritdoc IERC721"},"functionSelector":"70a08231","id":1726,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1870:9:9","nodeType":"FunctionDefinition","parameters":{"id":1702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1701,"mutability":"mutable","name":"owner","nameLocation":"1888:5:9","nodeType":"VariableDeclaration","scope":1726,"src":"1880:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1700,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1879:15:9"},"returnParameters":{"id":1705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1726,"src":"1924:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1703,"name":"uint256","nodeType":"ElementaryTypeName","src":"1924:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1923:9:9"},"scope":2569,"src":"1861:208:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2619],"body":{"id":1738,"nodeType":"Block","src":"2175:46:9","statements":[{"expression":{"arguments":[{"id":1735,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1729,"src":"2206:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1734,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"2192:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2192:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1733,"id":1737,"nodeType":"Return","src":"2185:29:9"}]},"documentation":{"id":1727,"nodeType":"StructuredDocumentation","src":"2075:23:9","text":"@inheritdoc IERC721"},"functionSelector":"6352211e","id":1739,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2112:7:9","nodeType":"FunctionDefinition","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1729,"mutability":"mutable","name":"tokenId","nameLocation":"2128:7:9","nodeType":"VariableDeclaration","scope":1739,"src":"2120:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1728,"name":"uint256","nodeType":"ElementaryTypeName","src":"2120:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2119:17:9"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1739,"src":"2166:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1731,"name":"address","nodeType":"ElementaryTypeName","src":"2166:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2165:9:9"},"scope":2569,"src":"2103:118:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2717],"body":{"id":1747,"nodeType":"Block","src":"2323:29:9","statements":[{"expression":{"id":1745,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"2340:5:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1744,"id":1746,"nodeType":"Return","src":"2333:12:9"}]},"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"2227:31:9","text":"@inheritdoc IERC721Metadata"},"functionSelector":"06fdde03","id":1748,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2272:4:9","nodeType":"FunctionDefinition","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"2276:2:9"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1748,"src":"2308:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"2308:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2307:15:9"},"scope":2569,"src":"2263:89:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2723],"body":{"id":1756,"nodeType":"Block","src":"2456:31:9","statements":[{"expression":{"id":1754,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"2473:7:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1753,"id":1755,"nodeType":"Return","src":"2466:14:9"}]},"documentation":{"id":1749,"nodeType":"StructuredDocumentation","src":"2358:31:9","text":"@inheritdoc IERC721Metadata"},"functionSelector":"95d89b41","id":1757,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2403:6:9","nodeType":"FunctionDefinition","parameters":{"id":1750,"nodeType":"ParameterList","parameters":[],"src":"2409:2:9"},"returnParameters":{"id":1753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1757,"src":"2441:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1751,"name":"string","nodeType":"ElementaryTypeName","src":"2441:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2440:15:9"},"scope":2569,"src":"2394:93:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2731],"body":{"id":1792,"nodeType":"Block","src":"2608:176:9","statements":[{"expression":{"arguments":[{"id":1766,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"2632:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1765,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"2618:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2618:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1768,"nodeType":"ExpressionStatement","src":"2618:22:9"},{"assignments":[1770],"declarations":[{"constant":false,"id":1770,"mutability":"mutable","name":"baseURI","nameLocation":"2665:7:9","nodeType":"VariableDeclaration","scope":1792,"src":"2651:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1769,"name":"string","nodeType":"ElementaryTypeName","src":"2651:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1773,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1771,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"2675:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2675:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2651:34:9"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1776,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1770,"src":"2708:7:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2702:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1774,"name":"bytes","nodeType":"ElementaryTypeName","src":"2702:5:9","typeDescriptions":{}}},"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2702:14:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2717:6:9","memberName":"length","nodeType":"MemberAccess","src":"2702:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2726:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2702:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2775:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2702:75:9","trueExpression":{"arguments":[{"id":1784,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1770,"src":"2744:7:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1785,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"2753:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:8:9","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":4397,"src":"2753:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2753:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2730:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1781,"name":"string","nodeType":"ElementaryTypeName","src":"2730:6:9","typeDescriptions":{}}},"id":1783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2737:6:9","memberName":"concat","nodeType":"MemberAccess","src":"2730:13:9","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2730:42:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1764,"id":1791,"nodeType":"Return","src":"2695:82:9"}]},"documentation":{"id":1758,"nodeType":"StructuredDocumentation","src":"2493:31:9","text":"@inheritdoc IERC721Metadata"},"functionSelector":"c87b56dd","id":1793,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2538:8:9","nodeType":"FunctionDefinition","parameters":{"id":1761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1760,"mutability":"mutable","name":"tokenId","nameLocation":"2555:7:9","nodeType":"VariableDeclaration","scope":1793,"src":"2547:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1759,"name":"uint256","nodeType":"ElementaryTypeName","src":"2547:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2546:17:9"},"returnParameters":{"id":1764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1793,"src":"2593:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1762,"name":"string","nodeType":"ElementaryTypeName","src":"2593:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2592:15:9"},"scope":2569,"src":"2529:255:9","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1801,"nodeType":"Block","src":"3092:26:9","statements":[{"expression":{"hexValue":"","id":1799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3109:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1798,"id":1800,"nodeType":"Return","src":"3102:9:9"}]},"documentation":{"id":1794,"nodeType":"StructuredDocumentation","src":"2790:231:9","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":1802,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3035:8:9","nodeType":"FunctionDefinition","parameters":{"id":1795,"nodeType":"ParameterList","parameters":[],"src":"3043:2:9"},"returnParameters":{"id":1798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1802,"src":"3077:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1796,"name":"string","nodeType":"ElementaryTypeName","src":"3077:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3076:15:9"},"scope":2569,"src":"3026:92:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[2659],"body":{"id":1817,"nodeType":"Block","src":"3213:52:9","statements":[{"expression":{"arguments":[{"id":1811,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"3232:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1812,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"3236:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1813,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"3245:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3245:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1810,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2421,2487],"referencedDeclaration":2421,"src":"3223:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3223:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1816,"nodeType":"ExpressionStatement","src":"3223:35:9"}]},"documentation":{"id":1803,"nodeType":"StructuredDocumentation","src":"3124:23:9","text":"@inheritdoc IERC721"},"functionSelector":"095ea7b3","id":1818,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3161:7:9","nodeType":"FunctionDefinition","parameters":{"id":1808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1805,"mutability":"mutable","name":"to","nameLocation":"3177:2:9","nodeType":"VariableDeclaration","scope":1818,"src":"3169:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1804,"name":"address","nodeType":"ElementaryTypeName","src":"3169:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1807,"mutability":"mutable","name":"tokenId","nameLocation":"3189:7:9","nodeType":"VariableDeclaration","scope":1818,"src":"3181:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1806,"name":"uint256","nodeType":"ElementaryTypeName","src":"3181:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3168:29:9"},"returnParameters":{"id":1809,"nodeType":"ParameterList","parameters":[],"src":"3213:0:9"},"scope":2569,"src":"3152:113:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2675],"body":{"id":1834,"nodeType":"Block","src":"3375:78:9","statements":[{"expression":{"arguments":[{"id":1827,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"3399:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1826,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"3385:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3385:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1829,"nodeType":"ExpressionStatement","src":"3385:22:9"},{"expression":{"arguments":[{"id":1831,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"3438:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1830,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1988,"src":"3425:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3425:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1825,"id":1833,"nodeType":"Return","src":"3418:28:9"}]},"documentation":{"id":1819,"nodeType":"StructuredDocumentation","src":"3271:23:9","text":"@inheritdoc IERC721"},"functionSelector":"081812fc","id":1835,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3308:11:9","nodeType":"FunctionDefinition","parameters":{"id":1822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1821,"mutability":"mutable","name":"tokenId","nameLocation":"3328:7:9","nodeType":"VariableDeclaration","scope":1835,"src":"3320:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1820,"name":"uint256","nodeType":"ElementaryTypeName","src":"3320:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3319:17:9"},"returnParameters":{"id":1825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1835,"src":"3366:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1823,"name":"address","nodeType":"ElementaryTypeName","src":"3366:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3365:9:9"},"scope":2569,"src":"3299:154:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2667],"body":{"id":1850,"nodeType":"Block","src":"3562:69:9","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1844,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"3591:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3591:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1846,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"3605:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1847,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"3615:8:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1843,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2539,"src":"3572:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3572:52:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1849,"nodeType":"ExpressionStatement","src":"3572:52:9"}]},"documentation":{"id":1836,"nodeType":"StructuredDocumentation","src":"3459:23:9","text":"@inheritdoc IERC721"},"functionSelector":"a22cb465","id":1851,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"3496:17:9","nodeType":"FunctionDefinition","parameters":{"id":1841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1838,"mutability":"mutable","name":"operator","nameLocation":"3522:8:9","nodeType":"VariableDeclaration","scope":1851,"src":"3514:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1837,"name":"address","nodeType":"ElementaryTypeName","src":"3514:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1840,"mutability":"mutable","name":"approved","nameLocation":"3537:8:9","nodeType":"VariableDeclaration","scope":1851,"src":"3532:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1839,"name":"bool","nodeType":"ElementaryTypeName","src":"3532:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3513:33:9"},"returnParameters":{"id":1842,"nodeType":"ParameterList","parameters":[],"src":"3562:0:9"},"scope":2569,"src":"3487:144:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2685],"body":{"id":1867,"nodeType":"Block","src":"3759:59:9","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":1861,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"3776:18:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1863,"indexExpression":{"id":1862,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1854,"src":"3795:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3776:25:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1865,"indexExpression":{"id":1864,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1856,"src":"3802:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3776:35:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1860,"id":1866,"nodeType":"Return","src":"3769:42:9"}]},"documentation":{"id":1852,"nodeType":"StructuredDocumentation","src":"3637:23:9","text":"@inheritdoc IERC721"},"functionSelector":"e985e9c5","id":1868,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"3674:16:9","nodeType":"FunctionDefinition","parameters":{"id":1857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1854,"mutability":"mutable","name":"owner","nameLocation":"3699:5:9","nodeType":"VariableDeclaration","scope":1868,"src":"3691:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1853,"name":"address","nodeType":"ElementaryTypeName","src":"3691:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1856,"mutability":"mutable","name":"operator","nameLocation":"3714:8:9","nodeType":"VariableDeclaration","scope":1868,"src":"3706:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1855,"name":"address","nodeType":"ElementaryTypeName","src":"3706:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3690:33:9"},"returnParameters":{"id":1860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1868,"src":"3753:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1858,"name":"bool","nodeType":"ElementaryTypeName","src":"3753:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3752:6:9"},"scope":2569,"src":"3665:153:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2651],"body":{"id":1913,"nodeType":"Block","src":"3932:498:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1878,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"3946:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3960:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3952:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1879,"name":"address","nodeType":"ElementaryTypeName","src":"3952:7:9","typeDescriptions":{}}},"id":1882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3952:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3946:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1892,"nodeType":"IfStatement","src":"3942:87:9","trueBody":{"id":1891,"nodeType":"Block","src":"3964:65:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4015:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4007:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1885,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:9","typeDescriptions":{}}},"id":1888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1884,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"3985:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3985:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1890,"nodeType":"RevertStatement","src":"3978:40:9"}]}},{"assignments":[1894],"declarations":[{"constant":false,"id":1894,"mutability":"mutable","name":"previousOwner","nameLocation":"4255:13:9","nodeType":"VariableDeclaration","scope":1913,"src":"4247:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1893,"name":"address","nodeType":"ElementaryTypeName","src":"4247:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1901,"initialValue":{"arguments":[{"id":1896,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"4279:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1897,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1875,"src":"4283:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1898,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"4292:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4292:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1895,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"4271:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":1900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4271:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4247:58:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1902,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"4319:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1903,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"4336:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4319:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1912,"nodeType":"IfStatement","src":"4315:109:9","trueBody":{"id":1911,"nodeType":"Block","src":"4342:82:9","statements":[{"errorCall":{"arguments":[{"id":1906,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"4384:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1907,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1875,"src":"4390:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1908,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"4399:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1905,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1522,"src":"4363:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (address,uint256,address) pure returns (error)"}},"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4363:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1910,"nodeType":"RevertStatement","src":"4356:57:9"}]}}]},"documentation":{"id":1869,"nodeType":"StructuredDocumentation","src":"3824:23:9","text":"@inheritdoc IERC721"},"functionSelector":"23b872dd","id":1914,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3861:12:9","nodeType":"FunctionDefinition","parameters":{"id":1876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1871,"mutability":"mutable","name":"from","nameLocation":"3882:4:9","nodeType":"VariableDeclaration","scope":1914,"src":"3874:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1870,"name":"address","nodeType":"ElementaryTypeName","src":"3874:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1873,"mutability":"mutable","name":"to","nameLocation":"3896:2:9","nodeType":"VariableDeclaration","scope":1914,"src":"3888:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1872,"name":"address","nodeType":"ElementaryTypeName","src":"3888:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1875,"mutability":"mutable","name":"tokenId","nameLocation":"3908:7:9","nodeType":"VariableDeclaration","scope":1914,"src":"3900:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1874,"name":"uint256","nodeType":"ElementaryTypeName","src":"3900:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3873:43:9"},"returnParameters":{"id":1877,"nodeType":"ParameterList","parameters":[],"src":"3932:0:9"},"scope":2569,"src":"3852:578:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2641],"body":{"id":1931,"nodeType":"Block","src":"4540:56:9","statements":[{"expression":{"arguments":[{"id":1925,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"4567:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1926,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1919,"src":"4573:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1927,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1921,"src":"4577:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":1928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4586:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":1924,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[1932,1962],"referencedDeclaration":1962,"src":"4550:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":1929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4550:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1930,"nodeType":"ExpressionStatement","src":"4550:39:9"}]},"documentation":{"id":1915,"nodeType":"StructuredDocumentation","src":"4436:23:9","text":"@inheritdoc IERC721"},"functionSelector":"42842e0e","id":1932,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4473:16:9","nodeType":"FunctionDefinition","parameters":{"id":1922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1917,"mutability":"mutable","name":"from","nameLocation":"4498:4:9","nodeType":"VariableDeclaration","scope":1932,"src":"4490:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1916,"name":"address","nodeType":"ElementaryTypeName","src":"4490:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1919,"mutability":"mutable","name":"to","nameLocation":"4512:2:9","nodeType":"VariableDeclaration","scope":1932,"src":"4504:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1918,"name":"address","nodeType":"ElementaryTypeName","src":"4504:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1921,"mutability":"mutable","name":"tokenId","nameLocation":"4524:7:9","nodeType":"VariableDeclaration","scope":1932,"src":"4516:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1920,"name":"uint256","nodeType":"ElementaryTypeName","src":"4516:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4489:43:9"},"returnParameters":{"id":1923,"nodeType":"ParameterList","parameters":[],"src":"4540:0:9"},"scope":2569,"src":"4464:132:9","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2631],"body":{"id":1961,"nodeType":"Block","src":"4733:130:9","statements":[{"expression":{"arguments":[{"id":1945,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"4756:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1946,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"4762:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1947,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1939,"src":"4766:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1944,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1914,"src":"4743:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4743:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1949,"nodeType":"ExpressionStatement","src":"4743:31:9"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1953,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"4818:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4818:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1955,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"4832:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1956,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"4838:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1957,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1939,"src":"4842:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1958,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1941,"src":"4851:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1950,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"4784:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Utils_$2809_$","typeString":"type(library ERC721Utils)"}},"id":1952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4796:21:9","memberName":"checkOnERC721Received","nodeType":"MemberAccess","referencedDeclaration":2808,"src":"4784:33:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes memory)"}},"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4784:72:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1960,"nodeType":"ExpressionStatement","src":"4784:72:9"}]},"documentation":{"id":1933,"nodeType":"StructuredDocumentation","src":"4602:23:9","text":"@inheritdoc IERC721"},"functionSelector":"b88d4fde","id":1962,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4639:16:9","nodeType":"FunctionDefinition","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1935,"mutability":"mutable","name":"from","nameLocation":"4664:4:9","nodeType":"VariableDeclaration","scope":1962,"src":"4656:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1934,"name":"address","nodeType":"ElementaryTypeName","src":"4656:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1937,"mutability":"mutable","name":"to","nameLocation":"4678:2:9","nodeType":"VariableDeclaration","scope":1962,"src":"4670:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1936,"name":"address","nodeType":"ElementaryTypeName","src":"4670:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1939,"mutability":"mutable","name":"tokenId","nameLocation":"4690:7:9","nodeType":"VariableDeclaration","scope":1962,"src":"4682:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1938,"name":"uint256","nodeType":"ElementaryTypeName","src":"4682:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1941,"mutability":"mutable","name":"data","nameLocation":"4712:4:9","nodeType":"VariableDeclaration","scope":1962,"src":"4699:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1940,"name":"bytes","nodeType":"ElementaryTypeName","src":"4699:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4655:62:9"},"returnParameters":{"id":1943,"nodeType":"ParameterList","parameters":[],"src":"4733:0:9"},"scope":2569,"src":"4630:233:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1974,"nodeType":"Block","src":"5453:40:9","statements":[{"expression":{"baseExpression":{"id":1970,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"5470:7:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1972,"indexExpression":{"id":1971,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1965,"src":"5478:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5470:16:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1969,"id":1973,"nodeType":"Return","src":"5463:23:9"}]},"documentation":{"id":1963,"nodeType":"StructuredDocumentation","src":"4869:504:9","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"id":1975,"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"5387:8:9","nodeType":"FunctionDefinition","parameters":{"id":1966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1965,"mutability":"mutable","name":"tokenId","nameLocation":"5404:7:9","nodeType":"VariableDeclaration","scope":1975,"src":"5396:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1964,"name":"uint256","nodeType":"ElementaryTypeName","src":"5396:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5395:17:9"},"returnParameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1975,"src":"5444:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1967,"name":"address","nodeType":"ElementaryTypeName","src":"5444:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5443:9:9"},"scope":2569,"src":"5378:115:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1987,"nodeType":"Block","src":"5688:48:9","statements":[{"expression":{"baseExpression":{"id":1983,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"5705:15:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1985,"indexExpression":{"id":1984,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"5721:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5705:24:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1982,"id":1986,"nodeType":"Return","src":"5698:31:9"}]},"documentation":{"id":1976,"nodeType":"StructuredDocumentation","src":"5499:105:9","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"id":1988,"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"5618:12:9","nodeType":"FunctionDefinition","parameters":{"id":1979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1978,"mutability":"mutable","name":"tokenId","nameLocation":"5639:7:9","nodeType":"VariableDeclaration","scope":1988,"src":"5631:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1977,"name":"uint256","nodeType":"ElementaryTypeName","src":"5631:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5630:17:9"},"returnParameters":{"id":1982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1981,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1988,"src":"5679:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1980,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:9:9"},"scope":2569,"src":"5609:127:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2023,"nodeType":"Block","src":"6156:163:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2000,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"6185:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6204:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6196:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2001,"name":"address","nodeType":"ElementaryTypeName","src":"6196:7:9","typeDescriptions":{}}},"id":2004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6196:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6185:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2006,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"6223:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2007,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"6232:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6223:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2010,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"6260:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2011,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"6267:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2009,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1868,"src":"6243:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6243:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6223:52:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2015,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1995,"src":"6292:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2014,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1988,"src":"6279:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6279:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2017,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"6304:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6279:32:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6223:88:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2020,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6222:90:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6185:127:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1999,"id":2022,"nodeType":"Return","src":"6166:146:9"}]},"documentation":{"id":1989,"nodeType":"StructuredDocumentation","src":"5742:300:9","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"id":2024,"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"6056:13:9","nodeType":"FunctionDefinition","parameters":{"id":1996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"mutability":"mutable","name":"owner","nameLocation":"6078:5:9","nodeType":"VariableDeclaration","scope":2024,"src":"6070:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1990,"name":"address","nodeType":"ElementaryTypeName","src":"6070:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1993,"mutability":"mutable","name":"spender","nameLocation":"6093:7:9","nodeType":"VariableDeclaration","scope":2024,"src":"6085:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1992,"name":"address","nodeType":"ElementaryTypeName","src":"6085:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1995,"mutability":"mutable","name":"tokenId","nameLocation":"6110:7:9","nodeType":"VariableDeclaration","scope":2024,"src":"6102:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1994,"name":"uint256","nodeType":"ElementaryTypeName","src":"6102:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6069:49:9"},"returnParameters":{"id":1999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2024,"src":"6150:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1997,"name":"bool","nodeType":"ElementaryTypeName","src":"6150:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6149:6:9"},"scope":2569,"src":"6047:272:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2060,"nodeType":"Block","src":"6848:271:9","statements":[{"condition":{"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6862:39:9","subExpression":{"arguments":[{"id":2035,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"6877:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2036,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"6884:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2037,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"6893:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2034,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"6863:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6863:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"6858:255:9","trueBody":{"id":2058,"nodeType":"Block","src":"6903:210:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2040,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"6921:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6938:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6930:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2041,"name":"address","nodeType":"ElementaryTypeName","src":"6930:7:9","typeDescriptions":{}}},"id":2044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6930:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6921:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2056,"nodeType":"Block","src":"7019:84:9","statements":[{"errorCall":{"arguments":[{"id":2052,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"7071:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2053,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7080:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2051,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1539,"src":"7044:26:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256) pure returns (error)"}},"id":2054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7044:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2055,"nodeType":"RevertStatement","src":"7037:51:9"}]},"id":2057,"nodeType":"IfStatement","src":"6917:186:9","trueBody":{"id":2050,"nodeType":"Block","src":"6942:71:9","statements":[{"errorCall":{"arguments":[{"id":2047,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"6990:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2046,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"6967:22:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":2048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6967:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2049,"nodeType":"RevertStatement","src":"6960:38:9"}]}}]}}]},"documentation":{"id":2025,"nodeType":"StructuredDocumentation","src":"6325:421:9","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if:\n - `spender` does not have approval from `owner` for `tokenId`.\n - `spender` does not have approval to manage all of `owner`'s assets.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"id":2061,"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"6760:16:9","nodeType":"FunctionDefinition","parameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2027,"mutability":"mutable","name":"owner","nameLocation":"6785:5:9","nodeType":"VariableDeclaration","scope":2061,"src":"6777:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"6777:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2029,"mutability":"mutable","name":"spender","nameLocation":"6800:7:9","nodeType":"VariableDeclaration","scope":2061,"src":"6792:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2028,"name":"address","nodeType":"ElementaryTypeName","src":"6792:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2031,"mutability":"mutable","name":"tokenId","nameLocation":"6817:7:9","nodeType":"VariableDeclaration","scope":2061,"src":"6809:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint256","nodeType":"ElementaryTypeName","src":"6809:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6776:49:9"},"returnParameters":{"id":2033,"nodeType":"ParameterList","parameters":[],"src":"6848:0:9"},"scope":2569,"src":"6751:368:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2076,"nodeType":"Block","src":"7836:78:9","statements":[{"id":2075,"nodeType":"UncheckedBlock","src":"7846:62:9","statements":[{"expression":{"id":2073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2069,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"7870:9:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2071,"indexExpression":{"id":2070,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"7880:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7870:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2072,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"7892:5:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7870:27:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2074,"nodeType":"ExpressionStatement","src":"7870:27:9"}]}]},"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"7125:631:9","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"id":2077,"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"7770:16:9","nodeType":"FunctionDefinition","parameters":{"id":2067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"account","nameLocation":"7795:7:9","nodeType":"VariableDeclaration","scope":2077,"src":"7787:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"7787:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"value","nameLocation":"7812:5:9","nodeType":"VariableDeclaration","scope":2077,"src":"7804:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2065,"name":"uint128","nodeType":"ElementaryTypeName","src":"7804:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"7786:32:9"},"returnParameters":{"id":2068,"nodeType":"ParameterList","parameters":[],"src":"7836:0:9"},"scope":2569,"src":"7761:153:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2166,"nodeType":"Block","src":"8602:700:9","statements":[{"assignments":[2090],"declarations":[{"constant":false,"id":2090,"mutability":"mutable","name":"from","nameLocation":"8620:4:9","nodeType":"VariableDeclaration","scope":2166,"src":"8612:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2089,"name":"address","nodeType":"ElementaryTypeName","src":"8612:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2094,"initialValue":{"arguments":[{"id":2092,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"8636:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"8627:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8627:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8612:32:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2095,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"8704:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8720:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8712:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2096,"name":"address","nodeType":"ElementaryTypeName","src":"8712:7:9","typeDescriptions":{}}},"id":2099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8712:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8704:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2108,"nodeType":"IfStatement","src":"8700:86:9","trueBody":{"id":2107,"nodeType":"Block","src":"8724:62:9","statements":[{"expression":{"arguments":[{"id":2102,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"8755:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2103,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"8761:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2104,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"8767:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2101,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"8738:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8738:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2106,"nodeType":"ExpressionStatement","src":"8738:37:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2109,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"8830:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8846:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8838:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"8838:7:9","typeDescriptions":{}}},"id":2113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8838:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8830:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2136,"nodeType":"IfStatement","src":"8826:256:9","trueBody":{"id":2135,"nodeType":"Block","src":"8850:232:9","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8963:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8955:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2116,"name":"address","nodeType":"ElementaryTypeName","src":"8955:7:9","typeDescriptions":{}}},"id":2119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8955:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2120,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"8967:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8984:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8976:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2121,"name":"address","nodeType":"ElementaryTypeName","src":"8976:7:9","typeDescriptions":{}}},"id":2124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8976:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8988:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2115,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2421,2487],"referencedDeclaration":2487,"src":"8946:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8946:48:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2127,"nodeType":"ExpressionStatement","src":"8946:48:9"},{"id":2134,"nodeType":"UncheckedBlock","src":"9009:63:9","statements":[{"expression":{"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2128,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"9037:9:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2130,"indexExpression":{"id":2129,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"9047:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9037:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9056:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9037:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2133,"nodeType":"ExpressionStatement","src":"9037:20:9"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2137,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"9096:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9110:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9102:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2138,"name":"address","nodeType":"ElementaryTypeName","src":"9102:7:9","typeDescriptions":{}}},"id":2141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9102:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9096:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2151,"nodeType":"IfStatement","src":"9092:107:9","trueBody":{"id":2150,"nodeType":"Block","src":"9114:85:9","statements":[{"id":2149,"nodeType":"UncheckedBlock","src":"9128:61:9","statements":[{"expression":{"id":2147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2143,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"9156:9:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2145,"indexExpression":{"id":2144,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"9166:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9156:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9173:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9156:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2148,"nodeType":"ExpressionStatement","src":"9156:18:9"}]}]}},{"expression":{"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2152,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"9209:7:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2154,"indexExpression":{"id":2153,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"9217:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9209:16:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2155,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"9228:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9209:21:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2157,"nodeType":"ExpressionStatement","src":"9209:21:9"},{"eventCall":{"arguments":[{"id":2159,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"9255:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2160,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"9261:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2161,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"9265:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2158,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"9246:8:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9246:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2163,"nodeType":"EmitStatement","src":"9241:32:9"},{"expression":{"id":2164,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"9291:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2088,"id":2165,"nodeType":"Return","src":"9284:11:9"}]},"documentation":{"id":2078,"nodeType":"StructuredDocumentation","src":"7920:582:9","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"id":2167,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"8516:7:9","nodeType":"FunctionDefinition","parameters":{"id":2085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2080,"mutability":"mutable","name":"to","nameLocation":"8532:2:9","nodeType":"VariableDeclaration","scope":2167,"src":"8524:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2079,"name":"address","nodeType":"ElementaryTypeName","src":"8524:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2082,"mutability":"mutable","name":"tokenId","nameLocation":"8544:7:9","nodeType":"VariableDeclaration","scope":2167,"src":"8536:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2081,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"auth","nameLocation":"8561:4:9","nodeType":"VariableDeclaration","scope":2167,"src":"8553:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"8553:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8523:43:9"},"returnParameters":{"id":2088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"8593:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2086,"name":"address","nodeType":"ElementaryTypeName","src":"8593:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8592:9:9"},"scope":2569,"src":"8507:795:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2216,"nodeType":"Block","src":"9677:274:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2175,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"9691:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9705:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9697:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2176,"name":"address","nodeType":"ElementaryTypeName","src":"9697:7:9","typeDescriptions":{}}},"id":2179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9697:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9691:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2189,"nodeType":"IfStatement","src":"9687:87:9","trueBody":{"id":2188,"nodeType":"Block","src":"9709:65:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9760:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9752:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2182,"name":"address","nodeType":"ElementaryTypeName","src":"9752:7:9","typeDescriptions":{}}},"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9752:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2181,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"9730:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9730:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2187,"nodeType":"RevertStatement","src":"9723:40:9"}]}},{"assignments":[2191],"declarations":[{"constant":false,"id":2191,"mutability":"mutable","name":"previousOwner","nameLocation":"9791:13:9","nodeType":"VariableDeclaration","scope":2216,"src":"9783:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2190,"name":"address","nodeType":"ElementaryTypeName","src":"9783:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2200,"initialValue":{"arguments":[{"id":2193,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"9815:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2194,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9819:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9836:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9828:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2195,"name":"address","nodeType":"ElementaryTypeName","src":"9828:7:9","typeDescriptions":{}}},"id":2198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9828:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2192,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"9807:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9807:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9783:56:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2201,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2191,"src":"9853:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9878:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9870:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2202,"name":"address","nodeType":"ElementaryTypeName","src":"9870:7:9","typeDescriptions":{}}},"id":2205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9870:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9853:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2215,"nodeType":"IfStatement","src":"9849:96:9","trueBody":{"id":2214,"nodeType":"Block","src":"9882:63:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9931:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9923:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2208,"name":"address","nodeType":"ElementaryTypeName","src":"9923:7:9","typeDescriptions":{}}},"id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9923:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2207,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1527,"src":"9903:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9903:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2213,"nodeType":"RevertStatement","src":"9896:38:9"}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"9308:311:9","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":2217,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9633:5:9","nodeType":"FunctionDefinition","parameters":{"id":2173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"to","nameLocation":"9647:2:9","nodeType":"VariableDeclaration","scope":2217,"src":"9639:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"9639:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"tokenId","nameLocation":"9659:7:9","nodeType":"VariableDeclaration","scope":2217,"src":"9651:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"9651:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9638:29:9"},"returnParameters":{"id":2174,"nodeType":"ParameterList","parameters":[],"src":"9677:0:9"},"scope":2569,"src":"9624:327:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2231,"nodeType":"Block","src":"10359:43:9","statements":[{"expression":{"arguments":[{"id":2226,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2220,"src":"10379:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2227,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2222,"src":"10383:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10392:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2225,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2232,2262],"referencedDeclaration":2262,"src":"10369:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10369:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2230,"nodeType":"ExpressionStatement","src":"10369:26:9"}]},"documentation":{"id":2218,"nodeType":"StructuredDocumentation","src":"9957:340:9","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":2232,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10311:9:9","nodeType":"FunctionDefinition","parameters":{"id":2223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2220,"mutability":"mutable","name":"to","nameLocation":"10329:2:9","nodeType":"VariableDeclaration","scope":2232,"src":"10321:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2219,"name":"address","nodeType":"ElementaryTypeName","src":"10321:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2222,"mutability":"mutable","name":"tokenId","nameLocation":"10341:7:9","nodeType":"VariableDeclaration","scope":2232,"src":"10333:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2221,"name":"uint256","nodeType":"ElementaryTypeName","src":"10333:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10320:29:9"},"returnParameters":{"id":2224,"nodeType":"ParameterList","parameters":[],"src":"10359:0:9"},"scope":2569,"src":"10302:100:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2261,"nodeType":"Block","src":"10707:123:9","statements":[{"expression":{"arguments":[{"id":2243,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"10723:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2244,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"10727:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2242,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"10717:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10717:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2246,"nodeType":"ExpressionStatement","src":"10717:18:9"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2250,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"10779:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10779:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10801:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10793:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2252,"name":"address","nodeType":"ElementaryTypeName","src":"10793:7:9","typeDescriptions":{}}},"id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10793:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2256,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"10805:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2257,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"10809:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2258,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"10818:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2247,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"10745:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Utils_$2809_$","typeString":"type(library ERC721Utils)"}},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10757:21:9","memberName":"checkOnERC721Received","nodeType":"MemberAccess","referencedDeclaration":2808,"src":"10745:33:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes memory)"}},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10745:78:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2260,"nodeType":"ExpressionStatement","src":"10745:78:9"}]},"documentation":{"id":2233,"nodeType":"StructuredDocumentation","src":"10408:210:9","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":2262,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10632:9:9","nodeType":"FunctionDefinition","parameters":{"id":2240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2235,"mutability":"mutable","name":"to","nameLocation":"10650:2:9","nodeType":"VariableDeclaration","scope":2262,"src":"10642:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2234,"name":"address","nodeType":"ElementaryTypeName","src":"10642:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2237,"mutability":"mutable","name":"tokenId","nameLocation":"10662:7:9","nodeType":"VariableDeclaration","scope":2262,"src":"10654:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2236,"name":"uint256","nodeType":"ElementaryTypeName","src":"10654:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2239,"mutability":"mutable","name":"data","nameLocation":"10684:4:9","nodeType":"VariableDeclaration","scope":2262,"src":"10671:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2238,"name":"bytes","nodeType":"ElementaryTypeName","src":"10671:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10641:48:9"},"returnParameters":{"id":2241,"nodeType":"ParameterList","parameters":[],"src":"10707:0:9"},"scope":2569,"src":"10623:207:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2294,"nodeType":"Block","src":"11197:186:9","statements":[{"assignments":[2269],"declarations":[{"constant":false,"id":2269,"mutability":"mutable","name":"previousOwner","nameLocation":"11215:13:9","nodeType":"VariableDeclaration","scope":2294,"src":"11207:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2268,"name":"address","nodeType":"ElementaryTypeName","src":"11207:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2281,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11247:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11239:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2271,"name":"address","nodeType":"ElementaryTypeName","src":"11239:7:9","typeDescriptions":{}}},"id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11239:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2275,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"11251:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11268:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11260:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2276,"name":"address","nodeType":"ElementaryTypeName","src":"11260:7:9","typeDescriptions":{}}},"id":2279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11260:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2270,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"11231:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11231:40:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11207:64:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2282,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2269,"src":"11285:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11310:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11302:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2283,"name":"address","nodeType":"ElementaryTypeName","src":"11302:7:9","typeDescriptions":{}}},"id":2286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11302:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11285:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2293,"nodeType":"IfStatement","src":"11281:96:9","trueBody":{"id":2292,"nodeType":"Block","src":"11314:63:9","statements":[{"errorCall":{"arguments":[{"id":2289,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"11358:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2288,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"11335:22:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11335:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2291,"nodeType":"RevertStatement","src":"11328:38:9"}]}}]},"documentation":{"id":2263,"nodeType":"StructuredDocumentation","src":"10836:315:9","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":2295,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"11165:5:9","nodeType":"FunctionDefinition","parameters":{"id":2266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2265,"mutability":"mutable","name":"tokenId","nameLocation":"11179:7:9","nodeType":"VariableDeclaration","scope":2295,"src":"11171:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2264,"name":"uint256","nodeType":"ElementaryTypeName","src":"11171:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11170:17:9"},"returnParameters":{"id":2267,"nodeType":"ParameterList","parameters":[],"src":"11197:0:9"},"scope":2569,"src":"11156:227:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2354,"nodeType":"Block","src":"11778:389:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2305,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"11792:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11806:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11798:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2306,"name":"address","nodeType":"ElementaryTypeName","src":"11798:7:9","typeDescriptions":{}}},"id":2309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11798:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11792:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2319,"nodeType":"IfStatement","src":"11788:87:9","trueBody":{"id":2318,"nodeType":"Block","src":"11810:65:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11861:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2313,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11853:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"11853:7:9","typeDescriptions":{}}},"id":2315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11853:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2311,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"11831:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11831:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2317,"nodeType":"RevertStatement","src":"11824:40:9"}]}},{"assignments":[2321],"declarations":[{"constant":false,"id":2321,"mutability":"mutable","name":"previousOwner","nameLocation":"11892:13:9","nodeType":"VariableDeclaration","scope":2354,"src":"11884:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2320,"name":"address","nodeType":"ElementaryTypeName","src":"11884:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2330,"initialValue":{"arguments":[{"id":2323,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"11916:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2324,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"11920:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11937:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11929:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"11929:7:9","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11929:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2322,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"11908:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11908:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11884:56:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2331,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"11954:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11979:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11971:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2332,"name":"address","nodeType":"ElementaryTypeName","src":"11971:7:9","typeDescriptions":{}}},"id":2335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11971:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11954:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2342,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"12056:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2343,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"12073:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12056:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2352,"nodeType":"IfStatement","src":"12052:109:9","trueBody":{"id":2351,"nodeType":"Block","src":"12079:82:9","statements":[{"errorCall":{"arguments":[{"id":2346,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"12121:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2347,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"12127:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2348,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"12136:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2345,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1522,"src":"12100:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (address,uint256,address) pure returns (error)"}},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12100:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2350,"nodeType":"RevertStatement","src":"12093:57:9"}]}},"id":2353,"nodeType":"IfStatement","src":"11950:211:9","trueBody":{"id":2341,"nodeType":"Block","src":"11983:63:9","statements":[{"errorCall":{"arguments":[{"id":2338,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"12027:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2337,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"12004:22:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":2339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12004:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2340,"nodeType":"RevertStatement","src":"11997:38:9"}]}}]},"documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"11389:313:9","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":2355,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11716:9:9","nodeType":"FunctionDefinition","parameters":{"id":2303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2298,"mutability":"mutable","name":"from","nameLocation":"11734:4:9","nodeType":"VariableDeclaration","scope":2355,"src":"11726:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2297,"name":"address","nodeType":"ElementaryTypeName","src":"11726:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2300,"mutability":"mutable","name":"to","nameLocation":"11748:2:9","nodeType":"VariableDeclaration","scope":2355,"src":"11740:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2299,"name":"address","nodeType":"ElementaryTypeName","src":"11740:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2302,"mutability":"mutable","name":"tokenId","nameLocation":"11760:7:9","nodeType":"VariableDeclaration","scope":2355,"src":"11752:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2301,"name":"uint256","nodeType":"ElementaryTypeName","src":"11752:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11725:43:9"},"returnParameters":{"id":2304,"nodeType":"ParameterList","parameters":[],"src":"11778:0:9"},"scope":2569,"src":"11707:460:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2372,"nodeType":"Block","src":"13176:53:9","statements":[{"expression":{"arguments":[{"id":2366,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"13200:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2367,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"13206:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2368,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"13210:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13219:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2365,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2373,2403],"referencedDeclaration":2403,"src":"13186:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13186:36:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2371,"nodeType":"ExpressionStatement","src":"13186:36:9"}]},"documentation":{"id":2356,"nodeType":"StructuredDocumentation","src":"12173:923:9","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC-721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":2373,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13110:13:9","nodeType":"FunctionDefinition","parameters":{"id":2363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2358,"mutability":"mutable","name":"from","nameLocation":"13132:4:9","nodeType":"VariableDeclaration","scope":2373,"src":"13124:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2357,"name":"address","nodeType":"ElementaryTypeName","src":"13124:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2360,"mutability":"mutable","name":"to","nameLocation":"13146:2:9","nodeType":"VariableDeclaration","scope":2373,"src":"13138:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2359,"name":"address","nodeType":"ElementaryTypeName","src":"13138:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2362,"mutability":"mutable","name":"tokenId","nameLocation":"13158:7:9","nodeType":"VariableDeclaration","scope":2373,"src":"13150:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2361,"name":"uint256","nodeType":"ElementaryTypeName","src":"13150:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13123:43:9"},"returnParameters":{"id":2364,"nodeType":"ParameterList","parameters":[],"src":"13176:0:9"},"scope":2569,"src":"13101:128:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2402,"nodeType":"Block","src":"13568:127:9","statements":[{"expression":{"arguments":[{"id":2386,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2376,"src":"13588:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"13594:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2388,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"13598:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2355,"src":"13578:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13578:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2390,"nodeType":"ExpressionStatement","src":"13578:28:9"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2394,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"13650:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13650:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2376,"src":"13664:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2397,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"13670:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2398,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"13674:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2399,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"13683:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2391,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"13616:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Utils_$2809_$","typeString":"type(library ERC721Utils)"}},"id":2393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13628:21:9","memberName":"checkOnERC721Received","nodeType":"MemberAccess","referencedDeclaration":2808,"src":"13616:33:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes memory)"}},"id":2400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13616:72:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2401,"nodeType":"ExpressionStatement","src":"13616:72:9"}]},"documentation":{"id":2374,"nodeType":"StructuredDocumentation","src":"13235:226:9","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":2403,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13475:13:9","nodeType":"FunctionDefinition","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2376,"mutability":"mutable","name":"from","nameLocation":"13497:4:9","nodeType":"VariableDeclaration","scope":2403,"src":"13489:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2375,"name":"address","nodeType":"ElementaryTypeName","src":"13489:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"13511:2:9","nodeType":"VariableDeclaration","scope":2403,"src":"13503:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"13503:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"13523:7:9","nodeType":"VariableDeclaration","scope":2403,"src":"13515:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"13515:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"13545:4:9","nodeType":"VariableDeclaration","scope":2403,"src":"13532:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"13532:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13488:62:9"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"13568:0:9"},"scope":2569,"src":"13466:229:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2420,"nodeType":"Block","src":"14208:50:9","statements":[{"expression":{"arguments":[{"id":2414,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2406,"src":"14227:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2415,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"14231:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2416,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2410,"src":"14240:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14246:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2413,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2421,2487],"referencedDeclaration":2487,"src":"14218:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14218:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2419,"nodeType":"ExpressionStatement","src":"14218:33:9"}]},"documentation":{"id":2404,"nodeType":"StructuredDocumentation","src":"13701:432:9","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":2421,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14147:8:9","nodeType":"FunctionDefinition","parameters":{"id":2411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2406,"mutability":"mutable","name":"to","nameLocation":"14164:2:9","nodeType":"VariableDeclaration","scope":2421,"src":"14156:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2405,"name":"address","nodeType":"ElementaryTypeName","src":"14156:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2408,"mutability":"mutable","name":"tokenId","nameLocation":"14176:7:9","nodeType":"VariableDeclaration","scope":2421,"src":"14168:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2407,"name":"uint256","nodeType":"ElementaryTypeName","src":"14168:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2410,"mutability":"mutable","name":"auth","nameLocation":"14193:4:9","nodeType":"VariableDeclaration","scope":2421,"src":"14185:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2409,"name":"address","nodeType":"ElementaryTypeName","src":"14185:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14155:43:9"},"returnParameters":{"id":2412,"nodeType":"ParameterList","parameters":[],"src":"14208:0:9"},"scope":2569,"src":"14138:120:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2486,"nodeType":"Block","src":"14534:568:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2433,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2430,"src":"14600:9:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2434,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"14613:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14629:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14621:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2435,"name":"address","nodeType":"ElementaryTypeName","src":"14621:7:9","typeDescriptions":{}}},"id":2438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14621:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14613:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14600:31:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2479,"nodeType":"IfStatement","src":"14596:460:9","trueBody":{"id":2478,"nodeType":"Block","src":"14633:423:9","statements":[{"assignments":[2442],"declarations":[{"constant":false,"id":2442,"mutability":"mutable","name":"owner","nameLocation":"14655:5:9","nodeType":"VariableDeclaration","scope":2478,"src":"14647:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2441,"name":"address","nodeType":"ElementaryTypeName","src":"14647:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2446,"initialValue":{"arguments":[{"id":2444,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"14677:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2443,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"14663:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14663:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"14647:38:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2447,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"14813:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14829:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14821:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2448,"name":"address","nodeType":"ElementaryTypeName","src":"14821:7:9","typeDescriptions":{}}},"id":2451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14821:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14813:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2453,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"14835:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2454,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"14844:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14835:13:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14813:35:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14852:30:9","subExpression":{"arguments":[{"id":2458,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"14870:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2459,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"14877:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2457,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1868,"src":"14853:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14853:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14813:69:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2468,"nodeType":"IfStatement","src":"14809:142:9","trueBody":{"id":2467,"nodeType":"Block","src":"14884:67:9","statements":[{"errorCall":{"arguments":[{"id":2464,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"14931:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2463,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"14909:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14909:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2466,"nodeType":"RevertStatement","src":"14902:34:9"}]}},{"condition":{"id":2469,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2430,"src":"14969:9:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2477,"nodeType":"IfStatement","src":"14965:81:9","trueBody":{"id":2476,"nodeType":"Block","src":"14980:66:9","statements":[{"eventCall":{"arguments":[{"id":2471,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"15012:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2472,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2424,"src":"15019:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2473,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"15023:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2470,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"15003:8:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15003:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2475,"nodeType":"EmitStatement","src":"14998:33:9"}]}}]}},{"expression":{"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2480,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"15066:15:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2482,"indexExpression":{"id":2481,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"15082:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15066:24:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2483,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2424,"src":"15093:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15066:29:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2485,"nodeType":"ExpressionStatement","src":"15066:29:9"}]},"documentation":{"id":2422,"nodeType":"StructuredDocumentation","src":"14264:171:9","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"id":2487,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14449:8:9","nodeType":"FunctionDefinition","parameters":{"id":2431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2424,"mutability":"mutable","name":"to","nameLocation":"14466:2:9","nodeType":"VariableDeclaration","scope":2487,"src":"14458:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2423,"name":"address","nodeType":"ElementaryTypeName","src":"14458:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2426,"mutability":"mutable","name":"tokenId","nameLocation":"14478:7:9","nodeType":"VariableDeclaration","scope":2487,"src":"14470:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2425,"name":"uint256","nodeType":"ElementaryTypeName","src":"14470:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2428,"mutability":"mutable","name":"auth","nameLocation":"14495:4:9","nodeType":"VariableDeclaration","scope":2487,"src":"14487:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2427,"name":"address","nodeType":"ElementaryTypeName","src":"14487:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2430,"mutability":"mutable","name":"emitEvent","nameLocation":"14506:9:9","nodeType":"VariableDeclaration","scope":2487,"src":"14501:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2429,"name":"bool","nodeType":"ElementaryTypeName","src":"14501:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14457:59:9"},"returnParameters":{"id":2432,"nodeType":"ParameterList","parameters":[],"src":"14534:0:9"},"scope":2569,"src":"14440:662:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2538,"nodeType":"Block","src":"15404:318:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2497,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"15418:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15435:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15427:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"15427:7:9","typeDescriptions":{}}},"id":2501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15427:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15418:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2511,"nodeType":"IfStatement","src":"15414:90:9","trueBody":{"id":2510,"nodeType":"Block","src":"15439:65:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15490:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15482:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2504,"name":"address","nodeType":"ElementaryTypeName","src":"15482:7:9","typeDescriptions":{}}},"id":2507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15482:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2503,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"15460:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15460:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2509,"nodeType":"RevertStatement","src":"15453:40:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2512,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2492,"src":"15517:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15537:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15529:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2513,"name":"address","nodeType":"ElementaryTypeName","src":"15529:7:9","typeDescriptions":{}}},"id":2516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15529:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15517:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2523,"nodeType":"IfStatement","src":"15513:91:9","trueBody":{"id":2522,"nodeType":"Block","src":"15541:63:9","statements":[{"errorCall":{"arguments":[{"id":2519,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2492,"src":"15584:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2518,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1549,"src":"15562:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15562:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2521,"nodeType":"RevertStatement","src":"15555:38:9"}]}},{"expression":{"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2524,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"15613:18:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2527,"indexExpression":{"id":2525,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"15632:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15613:25:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2528,"indexExpression":{"id":2526,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2492,"src":"15639:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15613:35:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2529,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"15651:8:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15613:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2531,"nodeType":"ExpressionStatement","src":"15613:46:9"},{"eventCall":{"arguments":[{"id":2533,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"15689:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2534,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2492,"src":"15696:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2535,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"15706:8:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2532,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2603,"src":"15674:14:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15674:41:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2537,"nodeType":"EmitStatement","src":"15669:46:9"}]},"documentation":{"id":2488,"nodeType":"StructuredDocumentation","src":"15108:198:9","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"id":2539,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"15320:18:9","nodeType":"FunctionDefinition","parameters":{"id":2495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2490,"mutability":"mutable","name":"owner","nameLocation":"15347:5:9","nodeType":"VariableDeclaration","scope":2539,"src":"15339:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2489,"name":"address","nodeType":"ElementaryTypeName","src":"15339:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2492,"mutability":"mutable","name":"operator","nameLocation":"15362:8:9","nodeType":"VariableDeclaration","scope":2539,"src":"15354:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2491,"name":"address","nodeType":"ElementaryTypeName","src":"15354:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2494,"mutability":"mutable","name":"approved","nameLocation":"15377:8:9","nodeType":"VariableDeclaration","scope":2539,"src":"15372:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2493,"name":"bool","nodeType":"ElementaryTypeName","src":"15372:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15338:48:9"},"returnParameters":{"id":2496,"nodeType":"ParameterList","parameters":[],"src":"15404:0:9"},"scope":2569,"src":"15311:411:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2567,"nodeType":"Block","src":"16029:169:9","statements":[{"assignments":[2548],"declarations":[{"constant":false,"id":2548,"mutability":"mutable","name":"owner","nameLocation":"16047:5:9","nodeType":"VariableDeclaration","scope":2567,"src":"16039:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2547,"name":"address","nodeType":"ElementaryTypeName","src":"16039:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2552,"initialValue":{"arguments":[{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2542,"src":"16064:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2549,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"16055:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16055:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16039:33:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2553,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2548,"src":"16086:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16103:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16095:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2554,"name":"address","nodeType":"ElementaryTypeName","src":"16095:7:9","typeDescriptions":{}}},"id":2557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16095:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16086:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2564,"nodeType":"IfStatement","src":"16082:88:9","trueBody":{"id":2563,"nodeType":"Block","src":"16107:63:9","statements":[{"errorCall":{"arguments":[{"id":2560,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2542,"src":"16151:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2559,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"16128:22:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16128:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2562,"nodeType":"RevertStatement","src":"16121:38:9"}]}},{"expression":{"id":2565,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2548,"src":"16186:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2546,"id":2566,"nodeType":"Return","src":"16179:12:9"}]},"documentation":{"id":2540,"nodeType":"StructuredDocumentation","src":"15728:224:9","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"id":2568,"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"15966:13:9","nodeType":"FunctionDefinition","parameters":{"id":2543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2542,"mutability":"mutable","name":"tokenId","nameLocation":"15988:7:9","nodeType":"VariableDeclaration","scope":2568,"src":"15980:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2541,"name":"uint256","nodeType":"ElementaryTypeName","src":"15980:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15979:17:9"},"returnParameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2568,"src":"16020:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"16020:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16019:9:9"},"scope":2569,"src":"15957:241:9","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2570,"src":"775:15425:9","usedErrors":[1508,1513,1522,1527,1532,1539,1544,1549],"usedEvents":[2585,2594,2603]}],"src":"107:16094:9"},"id":9},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[5850],"IERC721":[2686]},"id":2687,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2571,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"108:24:10"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":2573,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2687,"sourceUnit":5851,"src":"134:62:10","symbolAliases":[{"foreign":{"id":2572,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"142:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2575,"name":"IERC165","nameLocations":["288:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":5850,"src":"288:7:10"},"id":2576,"nodeType":"InheritanceSpecifier","src":"288:7:10"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":2574,"nodeType":"StructuredDocumentation","src":"198:68:10","text":" @dev Required interface of an ERC-721 compliant contract."},"fullyImplemented":false,"id":2686,"linearizedBaseContracts":[2686,5850],"name":"IERC721","nameLocation":"277:7:10","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2577,"nodeType":"StructuredDocumentation","src":"302:88:10","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":2585,"name":"Transfer","nameLocation":"401:8:10","nodeType":"EventDefinition","parameters":{"id":2584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2579,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"426:4:10","nodeType":"VariableDeclaration","scope":2585,"src":"410:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2578,"name":"address","nodeType":"ElementaryTypeName","src":"410:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2581,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"448:2:10","nodeType":"VariableDeclaration","scope":2585,"src":"432:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2580,"name":"address","nodeType":"ElementaryTypeName","src":"432:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2583,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"468:7:10","nodeType":"VariableDeclaration","scope":2585,"src":"452:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2582,"name":"uint256","nodeType":"ElementaryTypeName","src":"452:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"409:67:10"},"src":"395:82:10"},{"anonymous":false,"documentation":{"id":2586,"nodeType":"StructuredDocumentation","src":"483:94:10","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":2594,"name":"Approval","nameLocation":"588:8:10","nodeType":"EventDefinition","parameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2588,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"613:5:10","nodeType":"VariableDeclaration","scope":2594,"src":"597:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2587,"name":"address","nodeType":"ElementaryTypeName","src":"597:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2590,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"636:8:10","nodeType":"VariableDeclaration","scope":2594,"src":"620:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2589,"name":"address","nodeType":"ElementaryTypeName","src":"620:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2592,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"662:7:10","nodeType":"VariableDeclaration","scope":2594,"src":"646:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"596:74:10"},"src":"582:89:10"},{"anonymous":false,"documentation":{"id":2595,"nodeType":"StructuredDocumentation","src":"677:117:10","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":2603,"name":"ApprovalForAll","nameLocation":"805:14:10","nodeType":"EventDefinition","parameters":{"id":2602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2597,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"836:5:10","nodeType":"VariableDeclaration","scope":2603,"src":"820:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2596,"name":"address","nodeType":"ElementaryTypeName","src":"820:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2599,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"859:8:10","nodeType":"VariableDeclaration","scope":2603,"src":"843:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2598,"name":"address","nodeType":"ElementaryTypeName","src":"843:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2601,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"874:8:10","nodeType":"VariableDeclaration","scope":2603,"src":"869:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2600,"name":"bool","nodeType":"ElementaryTypeName","src":"869:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"819:64:10"},"src":"799:85:10"},{"documentation":{"id":2604,"nodeType":"StructuredDocumentation","src":"890:76:10","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":2611,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"980:9:10","nodeType":"FunctionDefinition","parameters":{"id":2607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2606,"mutability":"mutable","name":"owner","nameLocation":"998:5:10","nodeType":"VariableDeclaration","scope":2611,"src":"990:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2605,"name":"address","nodeType":"ElementaryTypeName","src":"990:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"989:15:10"},"returnParameters":{"id":2610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2609,"mutability":"mutable","name":"balance","nameLocation":"1036:7:10","nodeType":"VariableDeclaration","scope":2611,"src":"1028:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2608,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1027:17:10"},"scope":2686,"src":"971:74:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2612,"nodeType":"StructuredDocumentation","src":"1051:131:10","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":2619,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1196:7:10","nodeType":"FunctionDefinition","parameters":{"id":2615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2614,"mutability":"mutable","name":"tokenId","nameLocation":"1212:7:10","nodeType":"VariableDeclaration","scope":2619,"src":"1204:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2613,"name":"uint256","nodeType":"ElementaryTypeName","src":"1204:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1203:17:10"},"returnParameters":{"id":2618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2617,"mutability":"mutable","name":"owner","nameLocation":"1252:5:10","nodeType":"VariableDeclaration","scope":2619,"src":"1244:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2616,"name":"address","nodeType":"ElementaryTypeName","src":"1244:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1243:15:10"},"scope":2686,"src":"1187:72:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2620,"nodeType":"StructuredDocumentation","src":"1265:565:10","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":2631,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1844:16:10","nodeType":"FunctionDefinition","parameters":{"id":2629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2622,"mutability":"mutable","name":"from","nameLocation":"1869:4:10","nodeType":"VariableDeclaration","scope":2631,"src":"1861:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2621,"name":"address","nodeType":"ElementaryTypeName","src":"1861:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2624,"mutability":"mutable","name":"to","nameLocation":"1883:2:10","nodeType":"VariableDeclaration","scope":2631,"src":"1875:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2623,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2626,"mutability":"mutable","name":"tokenId","nameLocation":"1895:7:10","nodeType":"VariableDeclaration","scope":2631,"src":"1887:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2625,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2628,"mutability":"mutable","name":"data","nameLocation":"1919:4:10","nodeType":"VariableDeclaration","scope":2631,"src":"1904:19:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2627,"name":"bytes","nodeType":"ElementaryTypeName","src":"1904:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1860:64:10"},"returnParameters":{"id":2630,"nodeType":"ParameterList","parameters":[],"src":"1933:0:10"},"scope":2686,"src":"1835:99:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2632,"nodeType":"StructuredDocumentation","src":"1940:706:10","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC-721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":2641,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2660:16:10","nodeType":"FunctionDefinition","parameters":{"id":2639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"from","nameLocation":"2685:4:10","nodeType":"VariableDeclaration","scope":2641,"src":"2677:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2636,"mutability":"mutable","name":"to","nameLocation":"2699:2:10","nodeType":"VariableDeclaration","scope":2641,"src":"2691:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2635,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2638,"mutability":"mutable","name":"tokenId","nameLocation":"2711:7:10","nodeType":"VariableDeclaration","scope":2641,"src":"2703:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2637,"name":"uint256","nodeType":"ElementaryTypeName","src":"2703:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:10"},"returnParameters":{"id":2640,"nodeType":"ParameterList","parameters":[],"src":"2728:0:10"},"scope":2686,"src":"2651:78:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2642,"nodeType":"StructuredDocumentation","src":"2735:733:10","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2651,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3482:12:10","nodeType":"FunctionDefinition","parameters":{"id":2649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2644,"mutability":"mutable","name":"from","nameLocation":"3503:4:10","nodeType":"VariableDeclaration","scope":2651,"src":"3495:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2643,"name":"address","nodeType":"ElementaryTypeName","src":"3495:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2646,"mutability":"mutable","name":"to","nameLocation":"3517:2:10","nodeType":"VariableDeclaration","scope":2651,"src":"3509:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2645,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2648,"mutability":"mutable","name":"tokenId","nameLocation":"3529:7:10","nodeType":"VariableDeclaration","scope":2651,"src":"3521:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2647,"name":"uint256","nodeType":"ElementaryTypeName","src":"3521:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3494:43:10"},"returnParameters":{"id":2650,"nodeType":"ParameterList","parameters":[],"src":"3546:0:10"},"scope":2686,"src":"3473:74:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2652,"nodeType":"StructuredDocumentation","src":"3553:452:10","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2659,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4019:7:10","nodeType":"FunctionDefinition","parameters":{"id":2657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2654,"mutability":"mutable","name":"to","nameLocation":"4035:2:10","nodeType":"VariableDeclaration","scope":2659,"src":"4027:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2653,"name":"address","nodeType":"ElementaryTypeName","src":"4027:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2656,"mutability":"mutable","name":"tokenId","nameLocation":"4047:7:10","nodeType":"VariableDeclaration","scope":2659,"src":"4039:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2655,"name":"uint256","nodeType":"ElementaryTypeName","src":"4039:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4026:29:10"},"returnParameters":{"id":2658,"nodeType":"ParameterList","parameters":[],"src":"4064:0:10"},"scope":2686,"src":"4010:55:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"4071:315:10","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":2667,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4400:17:10","nodeType":"FunctionDefinition","parameters":{"id":2665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"operator","nameLocation":"4426:8:10","nodeType":"VariableDeclaration","scope":2667,"src":"4418:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2661,"name":"address","nodeType":"ElementaryTypeName","src":"4418:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2664,"mutability":"mutable","name":"approved","nameLocation":"4441:8:10","nodeType":"VariableDeclaration","scope":2667,"src":"4436:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2663,"name":"bool","nodeType":"ElementaryTypeName","src":"4436:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4417:33:10"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[],"src":"4459:0:10"},"scope":2686,"src":"4391:69:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2668,"nodeType":"StructuredDocumentation","src":"4466:139:10","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":2675,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4619:11:10","nodeType":"FunctionDefinition","parameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"tokenId","nameLocation":"4639:7:10","nodeType":"VariableDeclaration","scope":2675,"src":"4631:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2669,"name":"uint256","nodeType":"ElementaryTypeName","src":"4631:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4630:17:10"},"returnParameters":{"id":2674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2673,"mutability":"mutable","name":"operator","nameLocation":"4679:8:10","nodeType":"VariableDeclaration","scope":2675,"src":"4671:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2672,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4670:18:10"},"scope":2686,"src":"4610:79:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2676,"nodeType":"StructuredDocumentation","src":"4695:138:10","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":2685,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4847:16:10","nodeType":"FunctionDefinition","parameters":{"id":2681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2678,"mutability":"mutable","name":"owner","nameLocation":"4872:5:10","nodeType":"VariableDeclaration","scope":2685,"src":"4864:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2677,"name":"address","nodeType":"ElementaryTypeName","src":"4864:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2680,"mutability":"mutable","name":"operator","nameLocation":"4887:8:10","nodeType":"VariableDeclaration","scope":2685,"src":"4879:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2679,"name":"address","nodeType":"ElementaryTypeName","src":"4879:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4863:33:10"},"returnParameters":{"id":2684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2683,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2685,"src":"4920:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2682,"name":"bool","nodeType":"ElementaryTypeName","src":"4920:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4919:6:10"},"scope":2686,"src":"4838:88:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2687,"src":"267:4661:10","usedErrors":[],"usedEvents":[2585,2594,2603]}],"src":"108:4821:10"},"id":10},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[2704]},"id":2705,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2688,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"116:24:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"142:154:11","text":" @title ERC-721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC-721 asset contracts."},"fullyImplemented":false,"id":2704,"linearizedBaseContracts":[2704],"name":"IERC721Receiver","nameLocation":"307:15:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2690,"nodeType":"StructuredDocumentation","src":"329:500:11","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":2703,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"843:16:11","nodeType":"FunctionDefinition","parameters":{"id":2699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2692,"mutability":"mutable","name":"operator","nameLocation":"877:8:11","nodeType":"VariableDeclaration","scope":2703,"src":"869:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2691,"name":"address","nodeType":"ElementaryTypeName","src":"869:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2694,"mutability":"mutable","name":"from","nameLocation":"903:4:11","nodeType":"VariableDeclaration","scope":2703,"src":"895:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2693,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2696,"mutability":"mutable","name":"tokenId","nameLocation":"925:7:11","nodeType":"VariableDeclaration","scope":2703,"src":"917:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2695,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2698,"mutability":"mutable","name":"data","nameLocation":"957:4:11","nodeType":"VariableDeclaration","scope":2703,"src":"942:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2697,"name":"bytes","nodeType":"ElementaryTypeName","src":"942:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"859:108:11"},"returnParameters":{"id":2702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2701,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2703,"src":"986:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2700,"name":"bytes4","nodeType":"ElementaryTypeName","src":"986:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"985:8:11"},"scope":2704,"src":"834:160:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2705,"src":"297:699:11","usedErrors":[],"usedEvents":[]}],"src":"116:881:11"},"id":11},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC721":[2686],"IERC721Metadata":[2732]},"id":2733,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2706,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"127:24:12"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":2708,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2733,"sourceUnit":2687,"src":"153:39:12","symbolAliases":[{"foreign":{"id":2707,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"161:7:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2710,"name":"IERC721","nameLocations":["357:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":2686,"src":"357:7:12"},"id":2711,"nodeType":"InheritanceSpecifier","src":"357:7:12"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":2709,"nodeType":"StructuredDocumentation","src":"194:133:12","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":2732,"linearizedBaseContracts":[2732,2686,5850],"name":"IERC721Metadata","nameLocation":"338:15:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2712,"nodeType":"StructuredDocumentation","src":"371:58:12","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":2717,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"443:4:12","nodeType":"FunctionDefinition","parameters":{"id":2713,"nodeType":"ParameterList","parameters":[],"src":"447:2:12"},"returnParameters":{"id":2716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2717,"src":"473:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2714,"name":"string","nodeType":"ElementaryTypeName","src":"473:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"472:15:12"},"scope":2732,"src":"434:54:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2718,"nodeType":"StructuredDocumentation","src":"494:60:12","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":2723,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"568:6:12","nodeType":"FunctionDefinition","parameters":{"id":2719,"nodeType":"ParameterList","parameters":[],"src":"574:2:12"},"returnParameters":{"id":2722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2723,"src":"600:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2720,"name":"string","nodeType":"ElementaryTypeName","src":"600:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"599:15:12"},"scope":2732,"src":"559:56:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2724,"nodeType":"StructuredDocumentation","src":"621:90:12","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":2731,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"725:8:12","nodeType":"FunctionDefinition","parameters":{"id":2727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2726,"mutability":"mutable","name":"tokenId","nameLocation":"742:7:12","nodeType":"VariableDeclaration","scope":2731,"src":"734:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2725,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"733:17:12"},"returnParameters":{"id":2730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2731,"src":"774:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2728,"name":"string","nodeType":"ElementaryTypeName","src":"774:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"773:15:12"},"scope":2732,"src":"716:73:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2733,"src":"328:463:12","usedErrors":[],"usedEvents":[2585,2594,2603]}],"src":"127:665:12"},"id":12},"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol","exportedSymbols":{"ERC721Utils":[2809],"IERC721Errors":[1550],"IERC721Receiver":[2704]},"id":2810,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2734,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"118:24:13"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"../IERC721Receiver.sol","id":2736,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2810,"sourceUnit":2705,"src":"144:55:13","symbolAliases":[{"foreign":{"id":2735,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"152:15:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../../interfaces/draft-IERC6093.sol","id":2738,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2810,"sourceUnit":1598,"src":"200:69:13","symbolAliases":[{"foreign":{"id":2737,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"208:13:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC721Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":2739,"nodeType":"StructuredDocumentation","src":"271:160:13","text":" @dev Library that provides common ERC-721 utility functions.\n See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\n _Available since v5.1._"},"fullyImplemented":true,"id":2809,"linearizedBaseContracts":[2809],"name":"ERC721Utils","nameLocation":"440:11:13","nodeType":"ContractDefinition","nodes":[{"body":{"id":2807,"nodeType":"Block","src":"1160:760:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2753,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"1174:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1177:4:13","memberName":"code","nodeType":"MemberAccess","src":"1174:7:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1182:6:13","memberName":"length","nodeType":"MemberAccess","src":"1174:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1191:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1174:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2806,"nodeType":"IfStatement","src":"1170:744:13","trueBody":{"id":2805,"nodeType":"Block","src":"1194:720:13","statements":[{"clauses":[{"block":{"id":2783,"nodeType":"Block","src":"1304:214:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2770,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"1326:6:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2771,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"1336:15:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$2704_$","typeString":"type(contract IERC721Receiver)"}},"id":2772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1352:16:13","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2703,"src":"1336:32:13","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1369:8:13","memberName":"selector","nodeType":"MemberAccess","src":"1336:41:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1326:51:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2782,"nodeType":"IfStatement","src":"1322:182:13","trueBody":{"id":2781,"nodeType":"Block","src":"1379:125:13","statements":[{"errorCall":{"arguments":[{"id":2778,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"1482:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2775,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"1446:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Errors_$1550_$","typeString":"type(contract IERC721Errors)"}},"id":2777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1460:21:13","memberName":"ERC721InvalidReceiver","nodeType":"MemberAccess","referencedDeclaration":1532,"src":"1446:35:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1446:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2780,"nodeType":"RevertStatement","src":"1439:46:13"}]}}]},"errorName":"","id":2784,"nodeType":"TryCatchClause","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2768,"mutability":"mutable","name":"retval","nameLocation":"1296:6:13","nodeType":"VariableDeclaration","scope":2784,"src":"1289:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2767,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1289:6:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1288:15:13"},"src":"1280:238:13"},{"block":{"id":2802,"nodeType":"Block","src":"1547:357:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2788,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"1569:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1576:6:13","memberName":"length","nodeType":"MemberAccess","src":"1569:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1586:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1569:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2800,"nodeType":"Block","src":"1737:153:13","statements":[{"AST":{"nativeSrc":"1784:88:13","nodeType":"YulBlock","src":"1784:88:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"reason","nativeSrc":"1821:6:13","nodeType":"YulIdentifier","src":"1821:6:13"},{"kind":"number","nativeSrc":"1829:4:13","nodeType":"YulLiteral","src":"1829:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1817:3:13","nodeType":"YulIdentifier","src":"1817:3:13"},"nativeSrc":"1817:17:13","nodeType":"YulFunctionCall","src":"1817:17:13"},{"arguments":[{"name":"reason","nativeSrc":"1842:6:13","nodeType":"YulIdentifier","src":"1842:6:13"}],"functionName":{"name":"mload","nativeSrc":"1836:5:13","nodeType":"YulIdentifier","src":"1836:5:13"},"nativeSrc":"1836:13:13","nodeType":"YulFunctionCall","src":"1836:13:13"}],"functionName":{"name":"revert","nativeSrc":"1810:6:13","nodeType":"YulIdentifier","src":"1810:6:13"},"nativeSrc":"1810:40:13","nodeType":"YulFunctionCall","src":"1810:40:13"},"nativeSrc":"1810:40:13","nodeType":"YulExpressionStatement","src":"1810:40:13"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2786,"isOffset":false,"isSlot":false,"src":"1821:6:13","valueSize":1},{"declaration":2786,"isOffset":false,"isSlot":false,"src":"1842:6:13","valueSize":1}],"flags":["memory-safe"],"id":2799,"nodeType":"InlineAssembly","src":"1759:113:13"}]},"id":2801,"nodeType":"IfStatement","src":"1565:325:13","trueBody":{"id":2798,"nodeType":"Block","src":"1589:142:13","statements":[{"errorCall":{"arguments":[{"id":2795,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"1709:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2792,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"1673:13:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Errors_$1550_$","typeString":"type(contract IERC721Errors)"}},"id":2794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1687:21:13","memberName":"ERC721InvalidReceiver","nodeType":"MemberAccess","referencedDeclaration":1532,"src":"1673:35:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2797,"nodeType":"RevertStatement","src":"1666:46:13"}]}}]},"errorName":"","id":2803,"nodeType":"TryCatchClause","parameters":{"id":2787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2786,"mutability":"mutable","name":"reason","nameLocation":"1539:6:13","nodeType":"VariableDeclaration","scope":2803,"src":"1526:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2785,"name":"bytes","nodeType":"ElementaryTypeName","src":"1526:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1525:21:13"},"src":"1519:385:13"}],"externalCall":{"arguments":[{"id":2762,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"1249:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2763,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"1259:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2764,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2748,"src":"1265:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2765,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2750,"src":"1274:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2759,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"1228:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2758,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"1212:15:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$2704_$","typeString":"type(contract IERC721Receiver)"}},"id":2760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1212:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$2704","typeString":"contract IERC721Receiver"}},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1232:16:13","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2703,"src":"1212:36:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1212:67:13","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2804,"nodeType":"TryStatement","src":"1208:696:13"}]}}]},"documentation":{"id":2740,"nodeType":"StructuredDocumentation","src":"458:531:13","text":" @dev Performs an acceptance check for the provided `operator` by calling {IERC721Receiver-onERC721Received}\n on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\n The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\n Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\n the transfer."},"id":2808,"implemented":true,"kind":"function","modifiers":[],"name":"checkOnERC721Received","nameLocation":"1003:21:13","nodeType":"FunctionDefinition","parameters":{"id":2751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2742,"mutability":"mutable","name":"operator","nameLocation":"1042:8:13","nodeType":"VariableDeclaration","scope":2808,"src":"1034:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2741,"name":"address","nodeType":"ElementaryTypeName","src":"1034:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2744,"mutability":"mutable","name":"from","nameLocation":"1068:4:13","nodeType":"VariableDeclaration","scope":2808,"src":"1060:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2743,"name":"address","nodeType":"ElementaryTypeName","src":"1060:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2746,"mutability":"mutable","name":"to","nameLocation":"1090:2:13","nodeType":"VariableDeclaration","scope":2808,"src":"1082:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2745,"name":"address","nodeType":"ElementaryTypeName","src":"1082:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2748,"mutability":"mutable","name":"tokenId","nameLocation":"1110:7:13","nodeType":"VariableDeclaration","scope":2808,"src":"1102:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2747,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2750,"mutability":"mutable","name":"data","nameLocation":"1140:4:13","nodeType":"VariableDeclaration","scope":2808,"src":"1127:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2749,"name":"bytes","nodeType":"ElementaryTypeName","src":"1127:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1024:126:13"},"returnParameters":{"id":2752,"nodeType":"ParameterList","parameters":[],"src":"1160:0:13"},"scope":2809,"src":"994:926:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2810,"src":"432:1490:13","usedErrors":[],"usedEvents":[]}],"src":"118:1805:13"},"id":13},"@openzeppelin/contracts/token/common/ERC2981.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/common/ERC2981.sol","exportedSymbols":{"ERC165":[5838],"ERC2981":[3076],"IERC165":[5850],"IERC2981":[1450]},"id":3077,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2811,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:14"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC2981.sol","file":"../../interfaces/IERC2981.sol","id":2813,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3077,"sourceUnit":1451,"src":"134:55:14","symbolAliases":[{"foreign":{"id":2812,"name":"IERC2981","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"142:8:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":2816,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3077,"sourceUnit":5839,"src":"190:69:14","symbolAliases":[{"foreign":{"id":2814,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"198:7:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2815,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5838,"src":"207:6:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2818,"name":"IERC2981","nameLocations":["1135:8:14"],"nodeType":"IdentifierPath","referencedDeclaration":1450,"src":"1135:8:14"},"id":2819,"nodeType":"InheritanceSpecifier","src":"1135:8:14"},{"baseName":{"id":2820,"name":"ERC165","nameLocations":["1145:6:14"],"nodeType":"IdentifierPath","referencedDeclaration":5838,"src":"1145:6:14"},"id":2821,"nodeType":"InheritanceSpecifier","src":"1145:6:14"}],"canonicalName":"ERC2981","contractDependencies":[],"contractKind":"contract","documentation":{"id":2817,"nodeType":"StructuredDocumentation","src":"261:844:14","text":" @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.\n Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for\n specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.\n Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the\n fee is specified in basis points by default.\n IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See\n https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the ERC. Marketplaces are expected to\n voluntarily pay royalties together with sales, but note that this standard is not yet widely supported."},"fullyImplemented":true,"id":3076,"linearizedBaseContracts":[3076,5838,1450,5850],"name":"ERC2981","nameLocation":"1124:7:14","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ERC2981.RoyaltyInfo","id":2826,"members":[{"constant":false,"id":2823,"mutability":"mutable","name":"receiver","nameLocation":"1195:8:14","nodeType":"VariableDeclaration","scope":2826,"src":"1187:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2822,"name":"address","nodeType":"ElementaryTypeName","src":"1187:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2825,"mutability":"mutable","name":"royaltyFraction","nameLocation":"1220:15:14","nodeType":"VariableDeclaration","scope":2826,"src":"1213:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2824,"name":"uint96","nodeType":"ElementaryTypeName","src":"1213:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"name":"RoyaltyInfo","nameLocation":"1165:11:14","nodeType":"StructDefinition","scope":3076,"src":"1158:84:14","visibility":"public"},{"constant":false,"id":2829,"mutability":"mutable","name":"_defaultRoyaltyInfo","nameLocation":"1268:19:14","nodeType":"VariableDeclaration","scope":3076,"src":"1248:39:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage","typeString":"struct ERC2981.RoyaltyInfo"},"typeName":{"id":2828,"nodeType":"UserDefinedTypeName","pathNode":{"id":2827,"name":"RoyaltyInfo","nameLocations":["1248:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":2826,"src":"1248:11:14"},"referencedDeclaration":2826,"src":"1248:11:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo"}},"visibility":"private"},{"constant":false,"id":2834,"mutability":"mutable","name":"_tokenRoyaltyInfo","nameLocation":"1341:17:14","nodeType":"VariableDeclaration","scope":3076,"src":"1293:65:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$2826_storage_$","typeString":"mapping(uint256 => struct ERC2981.RoyaltyInfo)"},"typeName":{"id":2833,"keyName":"tokenId","keyNameLocation":"1309:7:14","keyType":{"id":2830,"name":"uint256","nodeType":"ElementaryTypeName","src":"1301:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1293:39:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$2826_storage_$","typeString":"mapping(uint256 => struct ERC2981.RoyaltyInfo)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2832,"nodeType":"UserDefinedTypeName","pathNode":{"id":2831,"name":"RoyaltyInfo","nameLocations":["1320:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":2826,"src":"1320:11:14"},"referencedDeclaration":2826,"src":"1320:11:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo"}}},"visibility":"private"},{"documentation":{"id":2835,"nodeType":"StructuredDocumentation","src":"1365:96:14","text":" @dev The default royalty set is invalid (eg. (numerator / denominator) >= 1)."},"errorSelector":"6f483d09","id":2841,"name":"ERC2981InvalidDefaultRoyalty","nameLocation":"1472:28:14","nodeType":"ErrorDefinition","parameters":{"id":2840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2837,"mutability":"mutable","name":"numerator","nameLocation":"1509:9:14","nodeType":"VariableDeclaration","scope":2841,"src":"1501:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2836,"name":"uint256","nodeType":"ElementaryTypeName","src":"1501:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2839,"mutability":"mutable","name":"denominator","nameLocation":"1528:11:14","nodeType":"VariableDeclaration","scope":2841,"src":"1520:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2838,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1500:40:14"},"src":"1466:75:14"},{"documentation":{"id":2842,"nodeType":"StructuredDocumentation","src":"1547:64:14","text":" @dev The default royalty receiver is invalid."},"errorSelector":"b6d9900a","id":2846,"name":"ERC2981InvalidDefaultRoyaltyReceiver","nameLocation":"1622:36:14","nodeType":"ErrorDefinition","parameters":{"id":2845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2844,"mutability":"mutable","name":"receiver","nameLocation":"1667:8:14","nodeType":"VariableDeclaration","scope":2846,"src":"1659:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2843,"name":"address","nodeType":"ElementaryTypeName","src":"1659:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1658:18:14"},"src":"1616:61:14"},{"documentation":{"id":2847,"nodeType":"StructuredDocumentation","src":"1683:113:14","text":" @dev The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1)."},"errorSelector":"dfd1fc1b","id":2855,"name":"ERC2981InvalidTokenRoyalty","nameLocation":"1807:26:14","nodeType":"ErrorDefinition","parameters":{"id":2854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2849,"mutability":"mutable","name":"tokenId","nameLocation":"1842:7:14","nodeType":"VariableDeclaration","scope":2855,"src":"1834:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2848,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2851,"mutability":"mutable","name":"numerator","nameLocation":"1859:9:14","nodeType":"VariableDeclaration","scope":2855,"src":"1851:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2850,"name":"uint256","nodeType":"ElementaryTypeName","src":"1851:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2853,"mutability":"mutable","name":"denominator","nameLocation":"1878:11:14","nodeType":"VariableDeclaration","scope":2855,"src":"1870:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1870:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1833:57:14"},"src":"1801:90:14"},{"documentation":{"id":2856,"nodeType":"StructuredDocumentation","src":"1897:70:14","text":" @dev The royalty receiver for `tokenId` is invalid."},"errorSelector":"969f0852","id":2862,"name":"ERC2981InvalidTokenRoyaltyReceiver","nameLocation":"1978:34:14","nodeType":"ErrorDefinition","parameters":{"id":2861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2858,"mutability":"mutable","name":"tokenId","nameLocation":"2021:7:14","nodeType":"VariableDeclaration","scope":2862,"src":"2013:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2857,"name":"uint256","nodeType":"ElementaryTypeName","src":"2013:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2860,"mutability":"mutable","name":"receiver","nameLocation":"2038:8:14","nodeType":"VariableDeclaration","scope":2862,"src":"2030:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2859,"name":"address","nodeType":"ElementaryTypeName","src":"2030:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2012:35:14"},"src":"1972:76:14"},{"baseFunctions":[5837,5849],"body":{"id":2885,"nodeType":"Block","src":"2190:105:14","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2873,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2865,"src":"2207:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2875,"name":"IERC2981","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"2227:8:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC2981_$1450_$","typeString":"type(contract IERC2981)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC2981_$1450_$","typeString":"type(contract IERC2981)"}],"id":2874,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2222:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2222:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC2981_$1450","typeString":"type(contract IERC2981)"}},"id":2877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2237:11:14","memberName":"interfaceId","nodeType":"MemberAccess","src":"2222:26:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2207:41:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2881,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2865,"src":"2276:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":2879,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2252:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC2981_$3076_$","typeString":"type(contract super ERC2981)"}},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2258:17:14","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":5837,"src":"2252:23:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":2882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2252:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2207:81:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2872,"id":2884,"nodeType":"Return","src":"2200:88:14"}]},"documentation":{"id":2863,"nodeType":"StructuredDocumentation","src":"2054:23:14","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":2886,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2091:17:14","nodeType":"FunctionDefinition","overrides":{"id":2869,"nodeType":"OverrideSpecifier","overrides":[{"id":2867,"name":"IERC165","nameLocations":["2158:7:14"],"nodeType":"IdentifierPath","referencedDeclaration":5850,"src":"2158:7:14"},{"id":2868,"name":"ERC165","nameLocations":["2167:6:14"],"nodeType":"IdentifierPath","referencedDeclaration":5838,"src":"2167:6:14"}],"src":"2149:25:14"},"parameters":{"id":2866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2865,"mutability":"mutable","name":"interfaceId","nameLocation":"2116:11:14","nodeType":"VariableDeclaration","scope":2886,"src":"2109:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2864,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2109:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2108:20:14"},"returnParameters":{"id":2872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2886,"src":"2184:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2870,"name":"bool","nodeType":"ElementaryTypeName","src":"2184:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2183:6:14"},"scope":3076,"src":"2082:213:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1449],"body":{"id":2947,"nodeType":"Block","src":"2472:515:14","statements":[{"assignments":[2900],"declarations":[{"constant":false,"id":2900,"mutability":"mutable","name":"_royaltyInfo","nameLocation":"2502:12:14","nodeType":"VariableDeclaration","scope":2947,"src":"2482:32:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo"},"typeName":{"id":2899,"nodeType":"UserDefinedTypeName","pathNode":{"id":2898,"name":"RoyaltyInfo","nameLocations":["2482:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":2826,"src":"2482:11:14"},"referencedDeclaration":2826,"src":"2482:11:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo"}},"visibility":"internal"}],"id":2904,"initialValue":{"baseExpression":{"id":2901,"name":"_tokenRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"2517:17:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$2826_storage_$","typeString":"mapping(uint256 => struct ERC2981.RoyaltyInfo storage ref)"}},"id":2903,"indexExpression":{"id":2902,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"2535:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2517:26:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2482:61:14"},{"assignments":[2906],"declarations":[{"constant":false,"id":2906,"mutability":"mutable","name":"royaltyReceiver","nameLocation":"2561:15:14","nodeType":"VariableDeclaration","scope":2947,"src":"2553:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2905,"name":"address","nodeType":"ElementaryTypeName","src":"2553:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2909,"initialValue":{"expression":{"id":2907,"name":"_royaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2579:12:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo storage pointer"}},"id":2908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2592:8:14","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"2579:21:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2553:47:14"},{"assignments":[2911],"declarations":[{"constant":false,"id":2911,"mutability":"mutable","name":"royaltyFraction","nameLocation":"2617:15:14","nodeType":"VariableDeclaration","scope":2947,"src":"2610:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2910,"name":"uint96","nodeType":"ElementaryTypeName","src":"2610:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":2914,"initialValue":{"expression":{"id":2912,"name":"_royaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2635:12:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo storage pointer"}},"id":2913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2648:15:14","memberName":"royaltyFraction","nodeType":"MemberAccess","referencedDeclaration":2825,"src":"2635:28:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"2610:53:14"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2915,"name":"royaltyReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2678:15:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2705:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2697:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2916,"name":"address","nodeType":"ElementaryTypeName","src":"2697:7:14","typeDescriptions":{}}},"id":2919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2697:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2678:29:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2932,"nodeType":"IfStatement","src":"2674:173:14","trueBody":{"id":2931,"nodeType":"Block","src":"2709:138:14","statements":[{"expression":{"id":2924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2921,"name":"royaltyReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2723:15:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2922,"name":"_defaultRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2829,"src":"2741:19:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"id":2923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2761:8:14","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"2741:28:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2723:46:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2925,"nodeType":"ExpressionStatement","src":"2723:46:14"},{"expression":{"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2926,"name":"royaltyFraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"2783:15:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2927,"name":"_defaultRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2829,"src":"2801:19:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"id":2928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2821:15:14","memberName":"royaltyFraction","nodeType":"MemberAccess","referencedDeclaration":2825,"src":"2801:35:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"2783:53:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":2930,"nodeType":"ExpressionStatement","src":"2783:53:14"}]}},{"assignments":[2934],"declarations":[{"constant":false,"id":2934,"mutability":"mutable","name":"royaltyAmount","nameLocation":"2865:13:14","nodeType":"VariableDeclaration","scope":2947,"src":"2857:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2933,"name":"uint256","nodeType":"ElementaryTypeName","src":"2857:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2942,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2935,"name":"salePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2891,"src":"2882:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2936,"name":"royaltyFraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"2894:15:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"2882:27:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2938,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2881:29:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2939,"name":"_feeDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"2913:15:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint96_$","typeString":"function () pure returns (uint96)"}},"id":2940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2913:17:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"2881:49:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2857:73:14"},{"expression":{"components":[{"id":2943,"name":"royaltyReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2949:15:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2944,"name":"royaltyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2934,"src":"2966:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2945,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2948:32:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":2897,"id":2946,"nodeType":"Return","src":"2941:39:14"}]},"documentation":{"id":2887,"nodeType":"StructuredDocumentation","src":"2301:24:14","text":"@inheritdoc IERC2981"},"functionSelector":"2a55205a","id":2948,"implemented":true,"kind":"function","modifiers":[],"name":"royaltyInfo","nameLocation":"2339:11:14","nodeType":"FunctionDefinition","parameters":{"id":2892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2889,"mutability":"mutable","name":"tokenId","nameLocation":"2368:7:14","nodeType":"VariableDeclaration","scope":2948,"src":"2360:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2888,"name":"uint256","nodeType":"ElementaryTypeName","src":"2360:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2891,"mutability":"mutable","name":"salePrice","nameLocation":"2393:9:14","nodeType":"VariableDeclaration","scope":2948,"src":"2385:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2890,"name":"uint256","nodeType":"ElementaryTypeName","src":"2385:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2350:58:14"},"returnParameters":{"id":2897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2894,"mutability":"mutable","name":"receiver","nameLocation":"2446:8:14","nodeType":"VariableDeclaration","scope":2948,"src":"2438:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2893,"name":"address","nodeType":"ElementaryTypeName","src":"2438:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2896,"mutability":"mutable","name":"amount","nameLocation":"2464:6:14","nodeType":"VariableDeclaration","scope":2948,"src":"2456:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2895,"name":"uint256","nodeType":"ElementaryTypeName","src":"2456:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2437:34:14"},"scope":3076,"src":"2330:657:14","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2956,"nodeType":"Block","src":"3328:29:14","statements":[{"expression":{"hexValue":"3130303030","id":2954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3345:5:14","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"functionReturnParameters":2953,"id":2955,"nodeType":"Return","src":"3338:12:14"}]},"documentation":{"id":2949,"nodeType":"StructuredDocumentation","src":"2993:264:14","text":" @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a\n fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an\n override."},"id":2957,"implemented":true,"kind":"function","modifiers":[],"name":"_feeDenominator","nameLocation":"3271:15:14","nodeType":"FunctionDefinition","parameters":{"id":2950,"nodeType":"ParameterList","parameters":[],"src":"3286:2:14"},"returnParameters":{"id":2953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2957,"src":"3320:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2951,"name":"uint96","nodeType":"ElementaryTypeName","src":"3320:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"3319:8:14"},"scope":3076,"src":"3262:95:14","stateMutability":"pure","virtual":true,"visibility":"internal"},{"body":{"id":3002,"nodeType":"Block","src":"3702:423:14","statements":[{"assignments":[2966],"declarations":[{"constant":false,"id":2966,"mutability":"mutable","name":"denominator","nameLocation":"3720:11:14","nodeType":"VariableDeclaration","scope":3002,"src":"3712:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2965,"name":"uint256","nodeType":"ElementaryTypeName","src":"3712:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2969,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2967,"name":"_feeDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"3734:15:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint96_$","typeString":"function () pure returns (uint96)"}},"id":2968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3734:17:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"3712:39:14"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2970,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2962,"src":"3765:12:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2971,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2966,"src":"3780:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3765:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2979,"nodeType":"IfStatement","src":"3761:173:14","trueBody":{"id":2978,"nodeType":"Block","src":"3793:141:14","statements":[{"errorCall":{"arguments":[{"id":2974,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2962,"src":"3897:12:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2975,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2966,"src":"3911:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2973,"name":"ERC2981InvalidDefaultRoyalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"3868:28:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":2976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3868:55:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2977,"nodeType":"RevertStatement","src":"3861:62:14"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2980,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2960,"src":"3947:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3967:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3959:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2981,"name":"address","nodeType":"ElementaryTypeName","src":"3959:7:14","typeDescriptions":{}}},"id":2984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3959:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3947:22:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2994,"nodeType":"IfStatement","src":"3943:108:14","trueBody":{"id":2993,"nodeType":"Block","src":"3971:80:14","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4037:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4029:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2987,"name":"address","nodeType":"ElementaryTypeName","src":"4029:7:14","typeDescriptions":{}}},"id":2990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2986,"name":"ERC2981InvalidDefaultRoyaltyReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"3992:36:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3992:48:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2992,"nodeType":"RevertStatement","src":"3985:55:14"}]}},{"expression":{"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2995,"name":"_defaultRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2829,"src":"4061:19:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2997,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2960,"src":"4095:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2998,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2962,"src":"4105:12:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":2996,"name":"RoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2826,"src":"4083:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RoyaltyInfo_$2826_storage_ptr_$","typeString":"type(struct ERC2981.RoyaltyInfo storage pointer)"}},"id":2999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4083:35:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_memory_ptr","typeString":"struct ERC2981.RoyaltyInfo memory"}},"src":"4061:57:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"id":3001,"nodeType":"ExpressionStatement","src":"4061:57:14"}]},"documentation":{"id":2958,"nodeType":"StructuredDocumentation","src":"3363:250:14","text":" @dev Sets the royalty information that all ids in this contract will default to.\n Requirements:\n - `receiver` cannot be the zero address.\n - `feeNumerator` cannot be greater than the fee denominator."},"id":3003,"implemented":true,"kind":"function","modifiers":[],"name":"_setDefaultRoyalty","nameLocation":"3627:18:14","nodeType":"FunctionDefinition","parameters":{"id":2963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2960,"mutability":"mutable","name":"receiver","nameLocation":"3654:8:14","nodeType":"VariableDeclaration","scope":3003,"src":"3646:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2959,"name":"address","nodeType":"ElementaryTypeName","src":"3646:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2962,"mutability":"mutable","name":"feeNumerator","nameLocation":"3671:12:14","nodeType":"VariableDeclaration","scope":3003,"src":"3664:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2961,"name":"uint96","nodeType":"ElementaryTypeName","src":"3664:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"3645:39:14"},"returnParameters":{"id":2964,"nodeType":"ParameterList","parameters":[],"src":"3702:0:14"},"scope":3076,"src":"3618:507:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3010,"nodeType":"Block","src":"4246:43:14","statements":[{"expression":{"id":3008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4256:26:14","subExpression":{"id":3007,"name":"_defaultRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2829,"src":"4263:19:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3009,"nodeType":"ExpressionStatement","src":"4256:26:14"}]},"documentation":{"id":3004,"nodeType":"StructuredDocumentation","src":"4131:60:14","text":" @dev Removes default royalty information."},"id":3011,"implemented":true,"kind":"function","modifiers":[],"name":"_deleteDefaultRoyalty","nameLocation":"4205:21:14","nodeType":"FunctionDefinition","parameters":{"id":3005,"nodeType":"ParameterList","parameters":[],"src":"4226:2:14"},"returnParameters":{"id":3006,"nodeType":"ParameterList","parameters":[],"src":"4246:0:14"},"scope":3076,"src":"4196:93:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3062,"nodeType":"Block","src":"4658:444:14","statements":[{"assignments":[3022],"declarations":[{"constant":false,"id":3022,"mutability":"mutable","name":"denominator","nameLocation":"4676:11:14","nodeType":"VariableDeclaration","scope":3062,"src":"4668:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3021,"name":"uint256","nodeType":"ElementaryTypeName","src":"4668:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3025,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3023,"name":"_feeDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"4690:15:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint96_$","typeString":"function () pure returns (uint96)"}},"id":3024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4690:17:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"4668:39:14"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3026,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"4721:12:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3027,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3022,"src":"4736:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4721:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3036,"nodeType":"IfStatement","src":"4717:180:14","trueBody":{"id":3035,"nodeType":"Block","src":"4749:148:14","statements":[{"errorCall":{"arguments":[{"id":3030,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"4851:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3031,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"4860:12:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":3032,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3022,"src":"4874:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3029,"name":"ERC2981InvalidTokenRoyalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"4824:26:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256,uint256) pure returns (error)"}},"id":3033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4824:62:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3034,"nodeType":"RevertStatement","src":"4817:69:14"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3037,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3016,"src":"4910:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4930:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4922:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3038,"name":"address","nodeType":"ElementaryTypeName","src":"4922:7:14","typeDescriptions":{}}},"id":3041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4922:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4910:22:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3052,"nodeType":"IfStatement","src":"4906:115:14","trueBody":{"id":3051,"nodeType":"Block","src":"4934:87:14","statements":[{"errorCall":{"arguments":[{"id":3044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"4990:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":3047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5007:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4999:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3045,"name":"address","nodeType":"ElementaryTypeName","src":"4999:7:14","typeDescriptions":{}}},"id":3048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4999:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3043,"name":"ERC2981InvalidTokenRoyaltyReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"4955:34:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (uint256,address) pure returns (error)"}},"id":3049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4955:55:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3050,"nodeType":"RevertStatement","src":"4948:62:14"}]}},{"expression":{"id":3060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3053,"name":"_tokenRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"5031:17:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$2826_storage_$","typeString":"mapping(uint256 => struct ERC2981.RoyaltyInfo storage ref)"}},"id":3055,"indexExpression":{"id":3054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"5049:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5031:26:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3057,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3016,"src":"5072:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3058,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"5082:12:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":3056,"name":"RoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2826,"src":"5060:11:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RoyaltyInfo_$2826_storage_ptr_$","typeString":"type(struct ERC2981.RoyaltyInfo storage pointer)"}},"id":3059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5060:35:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_memory_ptr","typeString":"struct ERC2981.RoyaltyInfo memory"}},"src":"5031:64:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"id":3061,"nodeType":"ExpressionStatement","src":"5031:64:14"}]},"documentation":{"id":3012,"nodeType":"StructuredDocumentation","src":"4295:259:14","text":" @dev Sets the royalty information for a specific token id, overriding the global default.\n Requirements:\n - `receiver` cannot be the zero address.\n - `feeNumerator` cannot be greater than the fee denominator."},"id":3063,"implemented":true,"kind":"function","modifiers":[],"name":"_setTokenRoyalty","nameLocation":"4568:16:14","nodeType":"FunctionDefinition","parameters":{"id":3019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3014,"mutability":"mutable","name":"tokenId","nameLocation":"4593:7:14","nodeType":"VariableDeclaration","scope":3063,"src":"4585:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3013,"name":"uint256","nodeType":"ElementaryTypeName","src":"4585:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3016,"mutability":"mutable","name":"receiver","nameLocation":"4610:8:14","nodeType":"VariableDeclaration","scope":3063,"src":"4602:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3015,"name":"address","nodeType":"ElementaryTypeName","src":"4602:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3018,"mutability":"mutable","name":"feeNumerator","nameLocation":"4627:12:14","nodeType":"VariableDeclaration","scope":3063,"src":"4620:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3017,"name":"uint96","nodeType":"ElementaryTypeName","src":"4620:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"4584:56:14"},"returnParameters":{"id":3020,"nodeType":"ParameterList","parameters":[],"src":"4658:0:14"},"scope":3076,"src":"4559:543:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3074,"nodeType":"Block","src":"5270:50:14","statements":[{"expression":{"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5280:33:14","subExpression":{"baseExpression":{"id":3069,"name":"_tokenRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"5287:17:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$2826_storage_$","typeString":"mapping(uint256 => struct ERC2981.RoyaltyInfo storage ref)"}},"id":3071,"indexExpression":{"id":3070,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"5305:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5287:26:14","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$2826_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3073,"nodeType":"ExpressionStatement","src":"5280:33:14"}]},"documentation":{"id":3064,"nodeType":"StructuredDocumentation","src":"5108:95:14","text":" @dev Resets royalty information for the token id back to the global default."},"id":3075,"implemented":true,"kind":"function","modifiers":[],"name":"_resetTokenRoyalty","nameLocation":"5217:18:14","nodeType":"FunctionDefinition","parameters":{"id":3067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3066,"mutability":"mutable","name":"tokenId","nameLocation":"5244:7:14","nodeType":"VariableDeclaration","scope":3075,"src":"5236:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3065,"name":"uint256","nodeType":"ElementaryTypeName","src":"5236:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5235:17:14"},"returnParameters":{"id":3068,"nodeType":"ParameterList","parameters":[],"src":"5270:0:14"},"scope":3076,"src":"5208:112:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3077,"src":"1106:4216:14","usedErrors":[2841,2846,2855,2862],"usedEvents":[]}],"src":"108:5215:14"},"id":14},"@openzeppelin/contracts/utils/Bytes.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Bytes.sol","exportedSymbols":{"Bytes":[3877],"Math":[7507]},"id":3878,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3078,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"99:24:15"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":3080,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3878,"sourceUnit":7508,"src":"125:37:15","symbolAliases":[{"foreign":{"id":3079,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"133:4:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Bytes","contractDependencies":[],"contractKind":"library","documentation":{"id":3081,"nodeType":"StructuredDocumentation","src":"164:33:15","text":" @dev Bytes operations."},"fullyImplemented":true,"id":3877,"linearizedBaseContracts":[3877],"name":"Bytes","nameLocation":"206:5:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":3097,"nodeType":"Block","src":"687:45:15","statements":[{"expression":{"arguments":[{"id":3092,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"712:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3093,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3086,"src":"720:1:15","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"hexValue":"30","id":3094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"723:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3091,"name":"indexOf","nodeType":"Identifier","overloadedDeclarations":[3098,3147],"referencedDeclaration":3147,"src":"704:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes1_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bytes memory,bytes1,uint256) pure returns (uint256)"}},"id":3095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"704:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3090,"id":3096,"nodeType":"Return","src":"697:28:15"}]},"documentation":{"id":3082,"nodeType":"StructuredDocumentation","src":"218:384:15","text":" @dev Forward search for `s` in `buffer`\n * If `s` is present in the buffer, returns the index of the first instance\n * If `s` is not present in the buffer, returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]"},"id":3098,"implemented":true,"kind":"function","modifiers":[],"name":"indexOf","nameLocation":"616:7:15","nodeType":"FunctionDefinition","parameters":{"id":3087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3084,"mutability":"mutable","name":"buffer","nameLocation":"637:6:15","nodeType":"VariableDeclaration","scope":3098,"src":"624:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3083,"name":"bytes","nodeType":"ElementaryTypeName","src":"624:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3086,"mutability":"mutable","name":"s","nameLocation":"652:1:15","nodeType":"VariableDeclaration","scope":3098,"src":"645:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":3085,"name":"bytes1","nodeType":"ElementaryTypeName","src":"645:6:15","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"623:31:15"},"returnParameters":{"id":3090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3098,"src":"678:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3088,"name":"uint256","nodeType":"ElementaryTypeName","src":"678:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"677:9:15"},"scope":3877,"src":"607:125:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3146,"nodeType":"Block","src":"1286:246:15","statements":[{"assignments":[3111],"declarations":[{"constant":false,"id":3111,"mutability":"mutable","name":"length","nameLocation":"1304:6:15","nodeType":"VariableDeclaration","scope":3146,"src":"1296:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3110,"name":"uint256","nodeType":"ElementaryTypeName","src":"1296:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3114,"initialValue":{"expression":{"id":3112,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3101,"src":"1313:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1320:6:15","memberName":"length","nodeType":"MemberAccess","src":"1313:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1296:30:15"},{"body":{"id":3138,"nodeType":"Block","src":"1375:117:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":3128,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3101,"src":"1423:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3129,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"1431:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3127,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"1400:22:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":3130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1400:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3126,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1393:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":3125,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1393:6:15","typeDescriptions":{}}},"id":3131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1393:41:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3132,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"1438:1:15","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1393:46:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3137,"nodeType":"IfStatement","src":"1389:93:15","trueBody":{"id":3136,"nodeType":"Block","src":"1441:41:15","statements":[{"expression":{"id":3134,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"1466:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3109,"id":3135,"nodeType":"Return","src":"1459:8:15"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3119,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"1358:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3120,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"1362:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1358:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3139,"initializationExpression":{"assignments":[3116],"declarations":[{"constant":false,"id":3116,"mutability":"mutable","name":"i","nameLocation":"1349:1:15","nodeType":"VariableDeclaration","scope":3139,"src":"1341:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3115,"name":"uint256","nodeType":"ElementaryTypeName","src":"1341:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3118,"initialValue":{"id":3117,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"1353:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1341:15:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1370:3:15","subExpression":{"id":3122,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"1372:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3124,"nodeType":"ExpressionStatement","src":"1370:3:15"},"nodeType":"ForStatement","src":"1336:156:15"},{"expression":{"expression":{"arguments":[{"id":3142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1513:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3141,"name":"uint256","nodeType":"ElementaryTypeName","src":"1513:7:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3140,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1508:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1508:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1522:3:15","memberName":"max","nodeType":"MemberAccess","src":"1508:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3109,"id":3145,"nodeType":"Return","src":"1501:24:15"}]},"documentation":{"id":3099,"nodeType":"StructuredDocumentation","src":"738:450:15","text":" @dev Forward search for `s` in `buffer` starting at position `pos`\n * If `s` is present in the buffer (at or after `pos`), returns the index of the next instance\n * If `s` is not present in the buffer (at or after `pos`), returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]"},"id":3147,"implemented":true,"kind":"function","modifiers":[],"name":"indexOf","nameLocation":"1202:7:15","nodeType":"FunctionDefinition","parameters":{"id":3106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3101,"mutability":"mutable","name":"buffer","nameLocation":"1223:6:15","nodeType":"VariableDeclaration","scope":3147,"src":"1210:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3100,"name":"bytes","nodeType":"ElementaryTypeName","src":"1210:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3103,"mutability":"mutable","name":"s","nameLocation":"1238:1:15","nodeType":"VariableDeclaration","scope":3147,"src":"1231:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":3102,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1231:6:15","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":3105,"mutability":"mutable","name":"pos","nameLocation":"1249:3:15","nodeType":"VariableDeclaration","scope":3147,"src":"1241:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1241:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1209:44:15"},"returnParameters":{"id":3109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3147,"src":"1277:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3107,"name":"uint256","nodeType":"ElementaryTypeName","src":"1277:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1276:9:15"},"scope":3877,"src":"1193:339:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3167,"nodeType":"Block","src":"2019:65:15","statements":[{"expression":{"arguments":[{"id":3158,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"2048:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3159,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3152,"src":"2056:1:15","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"expression":{"arguments":[{"id":3162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2064:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3161,"name":"uint256","nodeType":"ElementaryTypeName","src":"2064:7:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3160,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2059:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2059:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2073:3:15","memberName":"max","nodeType":"MemberAccess","src":"2059:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3157,"name":"lastIndexOf","nodeType":"Identifier","overloadedDeclarations":[3168,3230],"referencedDeclaration":3230,"src":"2036:11:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes1_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bytes memory,bytes1,uint256) pure returns (uint256)"}},"id":3165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2036:41:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3156,"id":3166,"nodeType":"Return","src":"2029:48:15"}]},"documentation":{"id":3148,"nodeType":"StructuredDocumentation","src":"1538:392:15","text":" @dev Backward search for `s` in `buffer`\n * If `s` is present in the buffer, returns the index of the last instance\n * If `s` is not present in the buffer, returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]"},"id":3168,"implemented":true,"kind":"function","modifiers":[],"name":"lastIndexOf","nameLocation":"1944:11:15","nodeType":"FunctionDefinition","parameters":{"id":3153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3150,"mutability":"mutable","name":"buffer","nameLocation":"1969:6:15","nodeType":"VariableDeclaration","scope":3168,"src":"1956:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3149,"name":"bytes","nodeType":"ElementaryTypeName","src":"1956:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3152,"mutability":"mutable","name":"s","nameLocation":"1984:1:15","nodeType":"VariableDeclaration","scope":3168,"src":"1977:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":3151,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1977:6:15","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"1955:31:15"},"returnParameters":{"id":3156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3168,"src":"2010:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3154,"name":"uint256","nodeType":"ElementaryTypeName","src":"2010:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2009:9:15"},"scope":3877,"src":"1935:149:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3229,"nodeType":"Block","src":"2657:348:15","statements":[{"id":3228,"nodeType":"UncheckedBlock","src":"2667:332:15","statements":[{"assignments":[3181],"declarations":[{"constant":false,"id":3181,"mutability":"mutable","name":"length","nameLocation":"2699:6:15","nodeType":"VariableDeclaration","scope":3228,"src":"2691:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3180,"name":"uint256","nodeType":"ElementaryTypeName","src":"2691:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3184,"initialValue":{"expression":{"id":3182,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"2708:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2715:6:15","memberName":"length","nodeType":"MemberAccess","src":"2708:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2691:30:15"},{"body":{"id":3220,"nodeType":"Block","src":"2810:141:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":3213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":3206,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"2862:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3207,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3186,"src":"2870:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2874:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2870:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3205,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"2839:22:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2839:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2832:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":3203,"name":"bytes1","nodeType":"ElementaryTypeName","src":"2832:6:15","typeDescriptions":{}}},"id":3211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:45:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3212,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3173,"src":"2881:1:15","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2832:50:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3219,"nodeType":"IfStatement","src":"2828:109:15","trueBody":{"id":3218,"nodeType":"Block","src":"2884:53:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3214,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3186,"src":"2913:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2917:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2913:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3179,"id":3217,"nodeType":"Return","src":"2906:12:15"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3197,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3186,"src":"2798:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2802:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2798:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3221,"initializationExpression":{"assignments":[3186],"declarations":[{"constant":false,"id":3186,"mutability":"mutable","name":"i","nameLocation":"2748:1:15","nodeType":"VariableDeclaration","scope":3221,"src":"2740:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3185,"name":"uint256","nodeType":"ElementaryTypeName","src":"2740:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3196,"initialValue":{"arguments":[{"arguments":[{"id":3191,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3175,"src":"2780:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":3192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2785:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":3189,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"2761:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2766:13:15","memberName":"saturatingAdd","nodeType":"MemberAccess","referencedDeclaration":6062,"src":"2761:18:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2761:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3194,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"2789:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3187,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"2752:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2757:3:15","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"2752:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2752:44:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2740:56:15"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":3201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2805:3:15","subExpression":{"id":3200,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3186,"src":"2807:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3202,"nodeType":"ExpressionStatement","src":"2805:3:15"},"nodeType":"ForStatement","src":"2735:216:15"},{"expression":{"expression":{"arguments":[{"id":3224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2976:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3223,"name":"uint256","nodeType":"ElementaryTypeName","src":"2976:7:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3222,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2971:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2971:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2985:3:15","memberName":"max","nodeType":"MemberAccess","src":"2971:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3179,"id":3227,"nodeType":"Return","src":"2964:24:15"}]}]},"documentation":{"id":3169,"nodeType":"StructuredDocumentation","src":"2090:465:15","text":" @dev Backward search for `s` in `buffer` starting at position `pos`\n * If `s` is present in the buffer (at or before `pos`), returns the index of the previous instance\n * If `s` is not present in the buffer (at or before `pos`), returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]"},"id":3230,"implemented":true,"kind":"function","modifiers":[],"name":"lastIndexOf","nameLocation":"2569:11:15","nodeType":"FunctionDefinition","parameters":{"id":3176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3171,"mutability":"mutable","name":"buffer","nameLocation":"2594:6:15","nodeType":"VariableDeclaration","scope":3230,"src":"2581:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3170,"name":"bytes","nodeType":"ElementaryTypeName","src":"2581:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3173,"mutability":"mutable","name":"s","nameLocation":"2609:1:15","nodeType":"VariableDeclaration","scope":3230,"src":"2602:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":3172,"name":"bytes1","nodeType":"ElementaryTypeName","src":"2602:6:15","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":3175,"mutability":"mutable","name":"pos","nameLocation":"2620:3:15","nodeType":"VariableDeclaration","scope":3230,"src":"2612:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3174,"name":"uint256","nodeType":"ElementaryTypeName","src":"2612:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2580:44:15"},"returnParameters":{"id":3179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3230,"src":"2648:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3177,"name":"uint256","nodeType":"ElementaryTypeName","src":"2648:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2647:9:15"},"scope":3877,"src":"2560:445:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3247,"nodeType":"Block","src":"3416:59:15","statements":[{"expression":{"arguments":[{"id":3241,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3233,"src":"3439:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3242,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"3447:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3243,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3233,"src":"3454:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3461:6:15","memberName":"length","nodeType":"MemberAccess","src":"3454:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3240,"name":"slice","nodeType":"Identifier","overloadedDeclarations":[3248,3290],"referencedDeclaration":3290,"src":"3433:5:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"}},"id":3245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3433:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3239,"id":3246,"nodeType":"Return","src":"3426:42:15"}]},"documentation":{"id":3231,"nodeType":"StructuredDocumentation","src":"3011:312:15","text":" @dev Copies the content of `buffer`, from `start` (included) to the end of `buffer` into a new bytes object in\n memory.\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]"},"id":3248,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"3337:5:15","nodeType":"FunctionDefinition","parameters":{"id":3236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3233,"mutability":"mutable","name":"buffer","nameLocation":"3356:6:15","nodeType":"VariableDeclaration","scope":3248,"src":"3343:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3232,"name":"bytes","nodeType":"ElementaryTypeName","src":"3343:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3235,"mutability":"mutable","name":"start","nameLocation":"3372:5:15","nodeType":"VariableDeclaration","scope":3248,"src":"3364:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3234,"name":"uint256","nodeType":"ElementaryTypeName","src":"3364:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3342:36:15"},"returnParameters":{"id":3239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3238,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3248,"src":"3402:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3237,"name":"bytes","nodeType":"ElementaryTypeName","src":"3402:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3401:14:15"},"scope":3877,"src":"3328:147:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3289,"nodeType":"Block","src":"3959:347:15","statements":[{"expression":{"id":3267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3260,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"3989:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3263,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"4004:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3264,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"4009:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4016:6:15","memberName":"length","nodeType":"MemberAccess","src":"4009:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3261,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"3995:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4000:3:15","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"3995:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3995:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3989:34:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3268,"nodeType":"ExpressionStatement","src":"3989:34:15"},{"expression":{"id":3275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3269,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"4033:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3272,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"4050:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3273,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"4057:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3270,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"4041:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4046:3:15","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"4041:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4041:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4033:28:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3276,"nodeType":"ExpressionStatement","src":"4033:28:15"},{"assignments":[3278],"declarations":[{"constant":false,"id":3278,"mutability":"mutable","name":"result","nameLocation":"4114:6:15","nodeType":"VariableDeclaration","scope":3289,"src":"4101:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3277,"name":"bytes","nodeType":"ElementaryTypeName","src":"4101:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3285,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3281,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"4133:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3282,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"4139:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4133:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4123:9:15","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3279,"name":"bytes","nodeType":"ElementaryTypeName","src":"4127:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4123:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4101:44:15"},{"AST":{"nativeSrc":"4180:96:15","nodeType":"YulBlock","src":"4180:96:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"4204:6:15","nodeType":"YulIdentifier","src":"4204:6:15"},{"kind":"number","nativeSrc":"4212:4:15","nodeType":"YulLiteral","src":"4212:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4200:3:15","nodeType":"YulIdentifier","src":"4200:3:15"},"nativeSrc":"4200:17:15","nodeType":"YulFunctionCall","src":"4200:17:15"},{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"4227:6:15","nodeType":"YulIdentifier","src":"4227:6:15"},{"kind":"number","nativeSrc":"4235:4:15","nodeType":"YulLiteral","src":"4235:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4223:3:15","nodeType":"YulIdentifier","src":"4223:3:15"},"nativeSrc":"4223:17:15","nodeType":"YulFunctionCall","src":"4223:17:15"},{"name":"start","nativeSrc":"4242:5:15","nodeType":"YulIdentifier","src":"4242:5:15"}],"functionName":{"name":"add","nativeSrc":"4219:3:15","nodeType":"YulIdentifier","src":"4219:3:15"},"nativeSrc":"4219:29:15","nodeType":"YulFunctionCall","src":"4219:29:15"},{"arguments":[{"name":"end","nativeSrc":"4254:3:15","nodeType":"YulIdentifier","src":"4254:3:15"},{"name":"start","nativeSrc":"4259:5:15","nodeType":"YulIdentifier","src":"4259:5:15"}],"functionName":{"name":"sub","nativeSrc":"4250:3:15","nodeType":"YulIdentifier","src":"4250:3:15"},"nativeSrc":"4250:15:15","nodeType":"YulFunctionCall","src":"4250:15:15"}],"functionName":{"name":"mcopy","nativeSrc":"4194:5:15","nodeType":"YulIdentifier","src":"4194:5:15"},"nativeSrc":"4194:72:15","nodeType":"YulFunctionCall","src":"4194:72:15"},"nativeSrc":"4194:72:15","nodeType":"YulExpressionStatement","src":"4194:72:15"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3251,"isOffset":false,"isSlot":false,"src":"4227:6:15","valueSize":1},{"declaration":3255,"isOffset":false,"isSlot":false,"src":"4254:3:15","valueSize":1},{"declaration":3278,"isOffset":false,"isSlot":false,"src":"4204:6:15","valueSize":1},{"declaration":3253,"isOffset":false,"isSlot":false,"src":"4242:5:15","valueSize":1},{"declaration":3253,"isOffset":false,"isSlot":false,"src":"4259:5:15","valueSize":1}],"flags":["memory-safe"],"id":3286,"nodeType":"InlineAssembly","src":"4155:121:15"},{"expression":{"id":3287,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"4293:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3259,"id":3288,"nodeType":"Return","src":"4286:13:15"}]},"documentation":{"id":3249,"nodeType":"StructuredDocumentation","src":"3481:372:15","text":" @dev Copies the content of `buffer`, from `start` (included) to `end` (excluded) into a new bytes object in\n memory. The `end` argument is truncated to the length of the `buffer`.\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]"},"id":3290,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"3867:5:15","nodeType":"FunctionDefinition","parameters":{"id":3256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3251,"mutability":"mutable","name":"buffer","nameLocation":"3886:6:15","nodeType":"VariableDeclaration","scope":3290,"src":"3873:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3250,"name":"bytes","nodeType":"ElementaryTypeName","src":"3873:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3253,"mutability":"mutable","name":"start","nameLocation":"3902:5:15","nodeType":"VariableDeclaration","scope":3290,"src":"3894:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3252,"name":"uint256","nodeType":"ElementaryTypeName","src":"3894:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3255,"mutability":"mutable","name":"end","nameLocation":"3917:3:15","nodeType":"VariableDeclaration","scope":3290,"src":"3909:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3254,"name":"uint256","nodeType":"ElementaryTypeName","src":"3909:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3872:49:15"},"returnParameters":{"id":3259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3290,"src":"3945:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3257,"name":"bytes","nodeType":"ElementaryTypeName","src":"3945:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3944:14:15"},"scope":3877,"src":"3858:448:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3307,"nodeType":"Block","src":"4790:60:15","statements":[{"expression":{"arguments":[{"id":3301,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3293,"src":"4814:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3302,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3295,"src":"4822:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3303,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3293,"src":"4829:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4836:6:15","memberName":"length","nodeType":"MemberAccess","src":"4829:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3300,"name":"splice","nodeType":"Identifier","overloadedDeclarations":[3308,3341],"referencedDeclaration":3341,"src":"4807:6:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"}},"id":3305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4807:36:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3299,"id":3306,"nodeType":"Return","src":"4800:43:15"}]},"documentation":{"id":3291,"nodeType":"StructuredDocumentation","src":"4312:384:15","text":" @dev Moves the content of `buffer`, from `start` (included) to the end of `buffer` to the start of that buffer,\n and shrinks the buffer length accordingly, effectively overriding the content of buffer with buffer[start:].\n NOTE: This function modifies the provided buffer in place. If you need to preserve the original buffer, use {slice} instead"},"id":3308,"implemented":true,"kind":"function","modifiers":[],"name":"splice","nameLocation":"4710:6:15","nodeType":"FunctionDefinition","parameters":{"id":3296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3293,"mutability":"mutable","name":"buffer","nameLocation":"4730:6:15","nodeType":"VariableDeclaration","scope":3308,"src":"4717:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3292,"name":"bytes","nodeType":"ElementaryTypeName","src":"4717:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3295,"mutability":"mutable","name":"start","nameLocation":"4746:5:15","nodeType":"VariableDeclaration","scope":3308,"src":"4738:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3294,"name":"uint256","nodeType":"ElementaryTypeName","src":"4738:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4716:36:15"},"returnParameters":{"id":3299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3308,"src":"4776:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3297,"name":"bytes","nodeType":"ElementaryTypeName","src":"4776:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4775:14:15"},"scope":3877,"src":"4701:149:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3340,"nodeType":"Block","src":"5417:335:15","statements":[{"expression":{"id":3327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3320,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3315,"src":"5447:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3323,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3315,"src":"5462:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3324,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3311,"src":"5467:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5474:6:15","memberName":"length","nodeType":"MemberAccess","src":"5467:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3321,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"5453:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5458:3:15","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"5453:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5453:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5447:34:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3328,"nodeType":"ExpressionStatement","src":"5447:34:15"},{"expression":{"id":3335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3329,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"5491:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3332,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"5508:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3333,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3315,"src":"5515:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3330,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"5499:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5504:3:15","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"5499:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5499:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5491:28:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3336,"nodeType":"ExpressionStatement","src":"5491:28:15"},{"AST":{"nativeSrc":"5582:140:15","nodeType":"YulBlock","src":"5582:140:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"5606:6:15","nodeType":"YulIdentifier","src":"5606:6:15"},{"kind":"number","nativeSrc":"5614:4:15","nodeType":"YulLiteral","src":"5614:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5602:3:15","nodeType":"YulIdentifier","src":"5602:3:15"},"nativeSrc":"5602:17:15","nodeType":"YulFunctionCall","src":"5602:17:15"},{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"5629:6:15","nodeType":"YulIdentifier","src":"5629:6:15"},{"kind":"number","nativeSrc":"5637:4:15","nodeType":"YulLiteral","src":"5637:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5625:3:15","nodeType":"YulIdentifier","src":"5625:3:15"},"nativeSrc":"5625:17:15","nodeType":"YulFunctionCall","src":"5625:17:15"},{"name":"start","nativeSrc":"5644:5:15","nodeType":"YulIdentifier","src":"5644:5:15"}],"functionName":{"name":"add","nativeSrc":"5621:3:15","nodeType":"YulIdentifier","src":"5621:3:15"},"nativeSrc":"5621:29:15","nodeType":"YulFunctionCall","src":"5621:29:15"},{"arguments":[{"name":"end","nativeSrc":"5656:3:15","nodeType":"YulIdentifier","src":"5656:3:15"},{"name":"start","nativeSrc":"5661:5:15","nodeType":"YulIdentifier","src":"5661:5:15"}],"functionName":{"name":"sub","nativeSrc":"5652:3:15","nodeType":"YulIdentifier","src":"5652:3:15"},"nativeSrc":"5652:15:15","nodeType":"YulFunctionCall","src":"5652:15:15"}],"functionName":{"name":"mcopy","nativeSrc":"5596:5:15","nodeType":"YulIdentifier","src":"5596:5:15"},"nativeSrc":"5596:72:15","nodeType":"YulFunctionCall","src":"5596:72:15"},"nativeSrc":"5596:72:15","nodeType":"YulExpressionStatement","src":"5596:72:15"},{"expression":{"arguments":[{"name":"buffer","nativeSrc":"5688:6:15","nodeType":"YulIdentifier","src":"5688:6:15"},{"arguments":[{"name":"end","nativeSrc":"5700:3:15","nodeType":"YulIdentifier","src":"5700:3:15"},{"name":"start","nativeSrc":"5705:5:15","nodeType":"YulIdentifier","src":"5705:5:15"}],"functionName":{"name":"sub","nativeSrc":"5696:3:15","nodeType":"YulIdentifier","src":"5696:3:15"},"nativeSrc":"5696:15:15","nodeType":"YulFunctionCall","src":"5696:15:15"}],"functionName":{"name":"mstore","nativeSrc":"5681:6:15","nodeType":"YulIdentifier","src":"5681:6:15"},"nativeSrc":"5681:31:15","nodeType":"YulFunctionCall","src":"5681:31:15"},"nativeSrc":"5681:31:15","nodeType":"YulExpressionStatement","src":"5681:31:15"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3311,"isOffset":false,"isSlot":false,"src":"5606:6:15","valueSize":1},{"declaration":3311,"isOffset":false,"isSlot":false,"src":"5629:6:15","valueSize":1},{"declaration":3311,"isOffset":false,"isSlot":false,"src":"5688:6:15","valueSize":1},{"declaration":3315,"isOffset":false,"isSlot":false,"src":"5656:3:15","valueSize":1},{"declaration":3315,"isOffset":false,"isSlot":false,"src":"5700:3:15","valueSize":1},{"declaration":3313,"isOffset":false,"isSlot":false,"src":"5644:5:15","valueSize":1},{"declaration":3313,"isOffset":false,"isSlot":false,"src":"5661:5:15","valueSize":1},{"declaration":3313,"isOffset":false,"isSlot":false,"src":"5705:5:15","valueSize":1}],"flags":["memory-safe"],"id":3337,"nodeType":"InlineAssembly","src":"5557:165:15"},{"expression":{"id":3338,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3311,"src":"5739:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3319,"id":3339,"nodeType":"Return","src":"5732:13:15"}]},"documentation":{"id":3309,"nodeType":"StructuredDocumentation","src":"4856:454:15","text":" @dev Moves the content of `buffer`, from `start` (included) to `end` (excluded) to the start of that buffer,\n and shrinks the buffer length accordingly, effectively overriding the content of buffer with buffer[start:end].\n The `end` argument is truncated to the length of the `buffer`.\n NOTE: This function modifies the provided buffer in place. If you need to preserve the original buffer, use {slice} instead"},"id":3341,"implemented":true,"kind":"function","modifiers":[],"name":"splice","nameLocation":"5324:6:15","nodeType":"FunctionDefinition","parameters":{"id":3316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3311,"mutability":"mutable","name":"buffer","nameLocation":"5344:6:15","nodeType":"VariableDeclaration","scope":3341,"src":"5331:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3310,"name":"bytes","nodeType":"ElementaryTypeName","src":"5331:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3313,"mutability":"mutable","name":"start","nameLocation":"5360:5:15","nodeType":"VariableDeclaration","scope":3341,"src":"5352:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3312,"name":"uint256","nodeType":"ElementaryTypeName","src":"5352:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3315,"mutability":"mutable","name":"end","nameLocation":"5375:3:15","nodeType":"VariableDeclaration","scope":3341,"src":"5367:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3314,"name":"uint256","nodeType":"ElementaryTypeName","src":"5367:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5330:49:15"},"returnParameters":{"id":3319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3341,"src":"5403:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3317,"name":"bytes","nodeType":"ElementaryTypeName","src":"5403:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5402:14:15"},"scope":3877,"src":"5315:437:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3362,"nodeType":"Block","src":"6249:80:15","statements":[{"expression":{"arguments":[{"id":3354,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3344,"src":"6274:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3355,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"6282:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3356,"name":"replacement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3348,"src":"6287:11:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":3357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6300:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":3358,"name":"replacement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3348,"src":"6303:11:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6315:6:15","memberName":"length","nodeType":"MemberAccess","src":"6303:18:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3353,"name":"replace","nodeType":"Identifier","overloadedDeclarations":[3363,3419],"referencedDeclaration":3419,"src":"6266:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bytes memory)"}},"id":3360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6266:56:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3352,"id":3361,"nodeType":"Return","src":"6259:63:15"}]},"documentation":{"id":3342,"nodeType":"StructuredDocumentation","src":"5758:372:15","text":" @dev Replaces bytes in `buffer` starting at `pos` with all bytes from `replacement`.\n Parameters are clamped to valid ranges (i.e. `pos` is clamped to `[0, buffer.length]`).\n If `pos >= buffer.length`, no replacement occurs and the buffer is returned unchanged.\n NOTE: This function modifies the provided buffer in place."},"id":3363,"implemented":true,"kind":"function","modifiers":[],"name":"replace","nameLocation":"6144:7:15","nodeType":"FunctionDefinition","parameters":{"id":3349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3344,"mutability":"mutable","name":"buffer","nameLocation":"6165:6:15","nodeType":"VariableDeclaration","scope":3363,"src":"6152:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3343,"name":"bytes","nodeType":"ElementaryTypeName","src":"6152:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3346,"mutability":"mutable","name":"pos","nameLocation":"6181:3:15","nodeType":"VariableDeclaration","scope":3363,"src":"6173:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3345,"name":"uint256","nodeType":"ElementaryTypeName","src":"6173:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3348,"mutability":"mutable","name":"replacement","nameLocation":"6199:11:15","nodeType":"VariableDeclaration","scope":3363,"src":"6186:24:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3347,"name":"bytes","nodeType":"ElementaryTypeName","src":"6186:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6151:60:15"},"returnParameters":{"id":3352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3363,"src":"6235:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3350,"name":"bytes","nodeType":"ElementaryTypeName","src":"6235:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6234:14:15"},"scope":3877,"src":"6135:194:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3418,"nodeType":"Block","src":"7180:402:15","statements":[{"expression":{"id":3386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3379,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3368,"src":"7210:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3382,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3368,"src":"7225:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3383,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"7230:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7237:6:15","memberName":"length","nodeType":"MemberAccess","src":"7230:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3380,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"7216:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7221:3:15","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"7216:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7216:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7210:34:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3387,"nodeType":"ExpressionStatement","src":"7210:34:15"},{"expression":{"id":3395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3388,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3372,"src":"7254:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3391,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3372,"src":"7272:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3392,"name":"replacement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3370,"src":"7280:11:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7292:6:15","memberName":"length","nodeType":"MemberAccess","src":"7280:18:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3389,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"7263:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7268:3:15","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"7263:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7263:36:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7254:45:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3396,"nodeType":"ExpressionStatement","src":"7254:45:15"},{"expression":{"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3397,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"7309:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3400,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"7327:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3403,"name":"replacement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3370,"src":"7344:11:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7356:6:15","memberName":"length","nodeType":"MemberAccess","src":"7344:18:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3405,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3372,"src":"7365:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7344:27:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3407,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"7373:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7380:6:15","memberName":"length","nodeType":"MemberAccess","src":"7373:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3409,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3368,"src":"7389:3:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7373:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3401,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"7335:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7340:3:15","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"7335:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7335:58:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3398,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"7318:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7323:3:15","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"7318:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:76:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7309:85:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3414,"nodeType":"ExpressionStatement","src":"7309:85:15"},{"AST":{"nativeSrc":"7449:103:15","nodeType":"YulBlock","src":"7449:103:15","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"7477:6:15","nodeType":"YulIdentifier","src":"7477:6:15"},{"kind":"number","nativeSrc":"7485:4:15","nodeType":"YulLiteral","src":"7485:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7473:3:15","nodeType":"YulIdentifier","src":"7473:3:15"},"nativeSrc":"7473:17:15","nodeType":"YulFunctionCall","src":"7473:17:15"},{"name":"pos","nativeSrc":"7492:3:15","nodeType":"YulIdentifier","src":"7492:3:15"}],"functionName":{"name":"add","nativeSrc":"7469:3:15","nodeType":"YulIdentifier","src":"7469:3:15"},"nativeSrc":"7469:27:15","nodeType":"YulFunctionCall","src":"7469:27:15"},{"arguments":[{"arguments":[{"name":"replacement","nativeSrc":"7506:11:15","nodeType":"YulIdentifier","src":"7506:11:15"},{"kind":"number","nativeSrc":"7519:4:15","nodeType":"YulLiteral","src":"7519:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7502:3:15","nodeType":"YulIdentifier","src":"7502:3:15"},"nativeSrc":"7502:22:15","nodeType":"YulFunctionCall","src":"7502:22:15"},{"name":"offset","nativeSrc":"7526:6:15","nodeType":"YulIdentifier","src":"7526:6:15"}],"functionName":{"name":"add","nativeSrc":"7498:3:15","nodeType":"YulIdentifier","src":"7498:3:15"},"nativeSrc":"7498:35:15","nodeType":"YulFunctionCall","src":"7498:35:15"},{"name":"length","nativeSrc":"7535:6:15","nodeType":"YulIdentifier","src":"7535:6:15"}],"functionName":{"name":"mcopy","nativeSrc":"7463:5:15","nodeType":"YulIdentifier","src":"7463:5:15"},"nativeSrc":"7463:79:15","nodeType":"YulFunctionCall","src":"7463:79:15"},"nativeSrc":"7463:79:15","nodeType":"YulExpressionStatement","src":"7463:79:15"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3366,"isOffset":false,"isSlot":false,"src":"7477:6:15","valueSize":1},{"declaration":3374,"isOffset":false,"isSlot":false,"src":"7535:6:15","valueSize":1},{"declaration":3372,"isOffset":false,"isSlot":false,"src":"7526:6:15","valueSize":1},{"declaration":3368,"isOffset":false,"isSlot":false,"src":"7492:3:15","valueSize":1},{"declaration":3370,"isOffset":false,"isSlot":false,"src":"7506:11:15","valueSize":1}],"flags":["memory-safe"],"id":3415,"nodeType":"InlineAssembly","src":"7424:128:15"},{"expression":{"id":3416,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"7569:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3378,"id":3417,"nodeType":"Return","src":"7562:13:15"}]},"documentation":{"id":3364,"nodeType":"StructuredDocumentation","src":"6335:648:15","text":" @dev Replaces bytes in `buffer` starting at `pos` with bytes from `replacement` starting at `offset`.\n Copies at most `length` bytes from `replacement` to `buffer`.\n Parameters are clamped to valid ranges (i.e. `pos` is clamped to `[0, buffer.length]`, `offset` is\n clamped to `[0, replacement.length]`, and `length` is clamped to `min(length, replacement.length - offset,\n buffer.length - pos))`. If `pos >= buffer.length` or `offset >= replacement.length`, no replacement occurs\n and the buffer is returned unchanged.\n NOTE: This function modifies the provided buffer in place."},"id":3419,"implemented":true,"kind":"function","modifiers":[],"name":"replace","nameLocation":"6997:7:15","nodeType":"FunctionDefinition","parameters":{"id":3375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3366,"mutability":"mutable","name":"buffer","nameLocation":"7027:6:15","nodeType":"VariableDeclaration","scope":3419,"src":"7014:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3365,"name":"bytes","nodeType":"ElementaryTypeName","src":"7014:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3368,"mutability":"mutable","name":"pos","nameLocation":"7051:3:15","nodeType":"VariableDeclaration","scope":3419,"src":"7043:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3367,"name":"uint256","nodeType":"ElementaryTypeName","src":"7043:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3370,"mutability":"mutable","name":"replacement","nameLocation":"7077:11:15","nodeType":"VariableDeclaration","scope":3419,"src":"7064:24:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3369,"name":"bytes","nodeType":"ElementaryTypeName","src":"7064:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3372,"mutability":"mutable","name":"offset","nameLocation":"7106:6:15","nodeType":"VariableDeclaration","scope":3419,"src":"7098:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3371,"name":"uint256","nodeType":"ElementaryTypeName","src":"7098:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3374,"mutability":"mutable","name":"length","nameLocation":"7130:6:15","nodeType":"VariableDeclaration","scope":3419,"src":"7122:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3373,"name":"uint256","nodeType":"ElementaryTypeName","src":"7122:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7004:138:15"},"returnParameters":{"id":3378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3377,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3419,"src":"7166:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3376,"name":"bytes","nodeType":"ElementaryTypeName","src":"7166:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7165:14:15"},"scope":3877,"src":"6988:594:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3491,"nodeType":"Block","src":"8119:563:15","statements":[{"assignments":[3429],"declarations":[{"constant":false,"id":3429,"mutability":"mutable","name":"length","nameLocation":"8137:6:15","nodeType":"VariableDeclaration","scope":3491,"src":"8129:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3428,"name":"uint256","nodeType":"ElementaryTypeName","src":"8129:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3431,"initialValue":{"hexValue":"30","id":3430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8146:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8129:18:15"},{"body":{"id":3450,"nodeType":"Block","src":"8202:52:15","statements":[{"expression":{"id":3448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3443,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"8216:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":3444,"name":"buffers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3423,"src":"8226:7:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":3446,"indexExpression":{"id":3445,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"8234:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8226:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8237:6:15","memberName":"length","nodeType":"MemberAccess","src":"8226:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8216:27:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3449,"nodeType":"ExpressionStatement","src":"8216:27:15"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3436,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"8177:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3437,"name":"buffers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3423,"src":"8181:7:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":3438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8189:6:15","memberName":"length","nodeType":"MemberAccess","src":"8181:14:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8177:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3451,"initializationExpression":{"assignments":[3433],"declarations":[{"constant":false,"id":3433,"mutability":"mutable","name":"i","nameLocation":"8170:1:15","nodeType":"VariableDeclaration","scope":3451,"src":"8162:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3432,"name":"uint256","nodeType":"ElementaryTypeName","src":"8162:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3435,"initialValue":{"hexValue":"30","id":3434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8174:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8162:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8197:3:15","subExpression":{"id":3440,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"8199:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3442,"nodeType":"ExpressionStatement","src":"8197:3:15"},"nodeType":"ForStatement","src":"8157:97:15"},{"assignments":[3453],"declarations":[{"constant":false,"id":3453,"mutability":"mutable","name":"result","nameLocation":"8277:6:15","nodeType":"VariableDeclaration","scope":3491,"src":"8264:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3452,"name":"bytes","nodeType":"ElementaryTypeName","src":"8264:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3458,"initialValue":{"arguments":[{"id":3456,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"8296:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8286:9:15","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3454,"name":"bytes","nodeType":"ElementaryTypeName","src":"8290:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8286:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8264:39:15"},{"assignments":[3460],"declarations":[{"constant":false,"id":3460,"mutability":"mutable","name":"offset","nameLocation":"8322:6:15","nodeType":"VariableDeclaration","scope":3491,"src":"8314:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3459,"name":"uint256","nodeType":"ElementaryTypeName","src":"8314:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3462,"initialValue":{"hexValue":"30783230","id":3461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8331:4:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"nodeType":"VariableDeclarationStatement","src":"8314:21:15"},{"body":{"id":3487,"nodeType":"Block","src":"8390:262:15","statements":[{"assignments":[3475],"declarations":[{"constant":false,"id":3475,"mutability":"mutable","name":"input","nameLocation":"8417:5:15","nodeType":"VariableDeclaration","scope":3487,"src":"8404:18:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3474,"name":"bytes","nodeType":"ElementaryTypeName","src":"8404:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3479,"initialValue":{"baseExpression":{"id":3476,"name":"buffers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3423,"src":"8425:7:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":3478,"indexExpression":{"id":3477,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"8433:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8425:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8404:31:15"},{"AST":{"nativeSrc":"8474:90:15","nodeType":"YulBlock","src":"8474:90:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"8502:6:15","nodeType":"YulIdentifier","src":"8502:6:15"},{"name":"offset","nativeSrc":"8510:6:15","nodeType":"YulIdentifier","src":"8510:6:15"}],"functionName":{"name":"add","nativeSrc":"8498:3:15","nodeType":"YulIdentifier","src":"8498:3:15"},"nativeSrc":"8498:19:15","nodeType":"YulFunctionCall","src":"8498:19:15"},{"arguments":[{"name":"input","nativeSrc":"8523:5:15","nodeType":"YulIdentifier","src":"8523:5:15"},{"kind":"number","nativeSrc":"8530:4:15","nodeType":"YulLiteral","src":"8530:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8519:3:15","nodeType":"YulIdentifier","src":"8519:3:15"},"nativeSrc":"8519:16:15","nodeType":"YulFunctionCall","src":"8519:16:15"},{"arguments":[{"name":"input","nativeSrc":"8543:5:15","nodeType":"YulIdentifier","src":"8543:5:15"}],"functionName":{"name":"mload","nativeSrc":"8537:5:15","nodeType":"YulIdentifier","src":"8537:5:15"},"nativeSrc":"8537:12:15","nodeType":"YulFunctionCall","src":"8537:12:15"}],"functionName":{"name":"mcopy","nativeSrc":"8492:5:15","nodeType":"YulIdentifier","src":"8492:5:15"},"nativeSrc":"8492:58:15","nodeType":"YulFunctionCall","src":"8492:58:15"},"nativeSrc":"8492:58:15","nodeType":"YulExpressionStatement","src":"8492:58:15"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3475,"isOffset":false,"isSlot":false,"src":"8523:5:15","valueSize":1},{"declaration":3475,"isOffset":false,"isSlot":false,"src":"8543:5:15","valueSize":1},{"declaration":3460,"isOffset":false,"isSlot":false,"src":"8510:6:15","valueSize":1},{"declaration":3453,"isOffset":false,"isSlot":false,"src":"8502:6:15","valueSize":1}],"flags":["memory-safe"],"id":3480,"nodeType":"InlineAssembly","src":"8449:115:15"},{"id":3486,"nodeType":"UncheckedBlock","src":"8577:65:15","statements":[{"expression":{"id":3484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3481,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3460,"src":"8605:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":3482,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3475,"src":"8615:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8621:6:15","memberName":"length","nodeType":"MemberAccess","src":"8615:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8605:22:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3485,"nodeType":"ExpressionStatement","src":"8605:22:15"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3467,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"8365:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3468,"name":"buffers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3423,"src":"8369:7:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8377:6:15","memberName":"length","nodeType":"MemberAccess","src":"8369:14:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8365:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3488,"initializationExpression":{"assignments":[3464],"declarations":[{"constant":false,"id":3464,"mutability":"mutable","name":"i","nameLocation":"8358:1:15","nodeType":"VariableDeclaration","scope":3488,"src":"8350:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3463,"name":"uint256","nodeType":"ElementaryTypeName","src":"8350:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3466,"initialValue":{"hexValue":"30","id":3465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8362:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8350:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8385:3:15","subExpression":{"id":3471,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"8387:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3473,"nodeType":"ExpressionStatement","src":"8385:3:15"},"nodeType":"ForStatement","src":"8345:307:15"},{"expression":{"id":3489,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3453,"src":"8669:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3427,"id":3490,"nodeType":"Return","src":"8662:13:15"}]},"documentation":{"id":3420,"nodeType":"StructuredDocumentation","src":"7588:449:15","text":" @dev Concatenate an array of bytes into a single bytes object.\n For fixed bytes types, we recommend using the solidity built-in `bytes.concat` or (equivalent)\n `abi.encodePacked`.\n NOTE: this could be done in assembly with a single loop that expands starting at the FMP, but that would be\n significantly less readable. It might be worth benchmarking the savings of the full-assembly approach."},"id":3492,"implemented":true,"kind":"function","modifiers":[],"name":"concat","nameLocation":"8051:6:15","nodeType":"FunctionDefinition","parameters":{"id":3424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3423,"mutability":"mutable","name":"buffers","nameLocation":"8073:7:15","nodeType":"VariableDeclaration","scope":3492,"src":"8058:22:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":3421,"name":"bytes","nodeType":"ElementaryTypeName","src":"8058:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":3422,"nodeType":"ArrayTypeName","src":"8058:7:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"8057:24:15"},"returnParameters":{"id":3427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3492,"src":"8105:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3425,"name":"bytes","nodeType":"ElementaryTypeName","src":"8105:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8104:14:15"},"scope":3877,"src":"8042:640:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3501,"nodeType":"Block","src":"8920:1416:15","statements":[{"AST":{"nativeSrc":"8955:1375:15","nodeType":"YulBlock","src":"8955:1375:15","statements":[{"nativeSrc":"8969:26:15","nodeType":"YulVariableDeclaration","src":"8969:26:15","value":{"arguments":[{"name":"input","nativeSrc":"8989:5:15","nodeType":"YulIdentifier","src":"8989:5:15"}],"functionName":{"name":"mload","nativeSrc":"8983:5:15","nodeType":"YulIdentifier","src":"8983:5:15"},"nativeSrc":"8983:12:15","nodeType":"YulFunctionCall","src":"8983:12:15"},"variables":[{"name":"length","nativeSrc":"8973:6:15","nodeType":"YulTypedName","src":"8973:6:15","type":""}]},{"nativeSrc":"9008:21:15","nodeType":"YulAssignment","src":"9008:21:15","value":{"arguments":[{"kind":"number","nativeSrc":"9024:4:15","nodeType":"YulLiteral","src":"9024:4:15","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"9018:5:15","nodeType":"YulIdentifier","src":"9018:5:15"},"nativeSrc":"9018:11:15","nodeType":"YulFunctionCall","src":"9018:11:15"},"variableNames":[{"name":"output","nativeSrc":"9008:6:15","nodeType":"YulIdentifier","src":"9008:6:15"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9049:4:15","nodeType":"YulLiteral","src":"9049:4:15","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"output","nativeSrc":"9063:6:15","nodeType":"YulIdentifier","src":"9063:6:15"},{"kind":"number","nativeSrc":"9071:4:15","nodeType":"YulLiteral","src":"9071:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9059:3:15","nodeType":"YulIdentifier","src":"9059:3:15"},"nativeSrc":"9059:17:15","nodeType":"YulFunctionCall","src":"9059:17:15"},{"arguments":[{"name":"length","nativeSrc":"9082:6:15","nodeType":"YulIdentifier","src":"9082:6:15"},{"kind":"number","nativeSrc":"9090:1:15","nodeType":"YulLiteral","src":"9090:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"9078:3:15","nodeType":"YulIdentifier","src":"9078:3:15"},"nativeSrc":"9078:14:15","nodeType":"YulFunctionCall","src":"9078:14:15"}],"functionName":{"name":"add","nativeSrc":"9055:3:15","nodeType":"YulIdentifier","src":"9055:3:15"},"nativeSrc":"9055:38:15","nodeType":"YulFunctionCall","src":"9055:38:15"}],"functionName":{"name":"mstore","nativeSrc":"9042:6:15","nodeType":"YulIdentifier","src":"9042:6:15"},"nativeSrc":"9042:52:15","nodeType":"YulFunctionCall","src":"9042:52:15"},"nativeSrc":"9042:52:15","nodeType":"YulExpressionStatement","src":"9042:52:15"},{"expression":{"arguments":[{"name":"output","nativeSrc":"9114:6:15","nodeType":"YulIdentifier","src":"9114:6:15"},{"arguments":[{"name":"length","nativeSrc":"9126:6:15","nodeType":"YulIdentifier","src":"9126:6:15"},{"kind":"number","nativeSrc":"9134:1:15","nodeType":"YulLiteral","src":"9134:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"9122:3:15","nodeType":"YulIdentifier","src":"9122:3:15"},"nativeSrc":"9122:14:15","nodeType":"YulFunctionCall","src":"9122:14:15"}],"functionName":{"name":"mstore","nativeSrc":"9107:6:15","nodeType":"YulIdentifier","src":"9107:6:15"},"nativeSrc":"9107:30:15","nodeType":"YulFunctionCall","src":"9107:30:15"},"nativeSrc":"9107:30:15","nodeType":"YulExpressionStatement","src":"9107:30:15"},{"body":{"nativeSrc":"9261:1059:15","nodeType":"YulBlock","src":"9261:1059:15","statements":[{"nativeSrc":"9279:54:15","nodeType":"YulVariableDeclaration","src":"9279:54:15","value":{"arguments":[{"kind":"number","nativeSrc":"9296:3:15","nodeType":"YulLiteral","src":"9296:3:15","type":"","value":"128"},{"arguments":[{"arguments":[{"arguments":[{"name":"input","nativeSrc":"9315:5:15","nodeType":"YulIdentifier","src":"9315:5:15"},{"kind":"number","nativeSrc":"9322:4:15","nodeType":"YulLiteral","src":"9322:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9311:3:15","nodeType":"YulIdentifier","src":"9311:3:15"},"nativeSrc":"9311:16:15","nodeType":"YulFunctionCall","src":"9311:16:15"},{"name":"i","nativeSrc":"9329:1:15","nodeType":"YulIdentifier","src":"9329:1:15"}],"functionName":{"name":"add","nativeSrc":"9307:3:15","nodeType":"YulIdentifier","src":"9307:3:15"},"nativeSrc":"9307:24:15","nodeType":"YulFunctionCall","src":"9307:24:15"}],"functionName":{"name":"mload","nativeSrc":"9301:5:15","nodeType":"YulIdentifier","src":"9301:5:15"},"nativeSrc":"9301:31:15","nodeType":"YulFunctionCall","src":"9301:31:15"}],"functionName":{"name":"shr","nativeSrc":"9292:3:15","nodeType":"YulIdentifier","src":"9292:3:15"},"nativeSrc":"9292:41:15","nodeType":"YulFunctionCall","src":"9292:41:15"},"variables":[{"name":"chunk","nativeSrc":"9283:5:15","nodeType":"YulTypedName","src":"9283:5:15","type":""}]},{"nativeSrc":"9350:165:15","nodeType":"YulAssignment","src":"9350:165:15","value":{"arguments":[{"kind":"number","nativeSrc":"9384:66:15","nodeType":"YulLiteral","src":"9384:66:15","type":"","value":"0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9479:2:15","nodeType":"YulLiteral","src":"9479:2:15","type":"","value":"64"},{"name":"chunk","nativeSrc":"9483:5:15","nodeType":"YulIdentifier","src":"9483:5:15"}],"functionName":{"name":"shl","nativeSrc":"9475:3:15","nodeType":"YulIdentifier","src":"9475:3:15"},"nativeSrc":"9475:14:15","nodeType":"YulFunctionCall","src":"9475:14:15"},{"name":"chunk","nativeSrc":"9491:5:15","nodeType":"YulIdentifier","src":"9491:5:15"}],"functionName":{"name":"or","nativeSrc":"9472:2:15","nodeType":"YulIdentifier","src":"9472:2:15"},"nativeSrc":"9472:25:15","nodeType":"YulFunctionCall","src":"9472:25:15"}],"functionName":{"name":"and","nativeSrc":"9359:3:15","nodeType":"YulIdentifier","src":"9359:3:15"},"nativeSrc":"9359:156:15","nodeType":"YulFunctionCall","src":"9359:156:15"},"variableNames":[{"name":"chunk","nativeSrc":"9350:5:15","nodeType":"YulIdentifier","src":"9350:5:15"}]},{"nativeSrc":"9532:165:15","nodeType":"YulAssignment","src":"9532:165:15","value":{"arguments":[{"kind":"number","nativeSrc":"9566:66:15","nodeType":"YulLiteral","src":"9566:66:15","type":"","value":"0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9661:2:15","nodeType":"YulLiteral","src":"9661:2:15","type":"","value":"32"},{"name":"chunk","nativeSrc":"9665:5:15","nodeType":"YulIdentifier","src":"9665:5:15"}],"functionName":{"name":"shl","nativeSrc":"9657:3:15","nodeType":"YulIdentifier","src":"9657:3:15"},"nativeSrc":"9657:14:15","nodeType":"YulFunctionCall","src":"9657:14:15"},{"name":"chunk","nativeSrc":"9673:5:15","nodeType":"YulIdentifier","src":"9673:5:15"}],"functionName":{"name":"or","nativeSrc":"9654:2:15","nodeType":"YulIdentifier","src":"9654:2:15"},"nativeSrc":"9654:25:15","nodeType":"YulFunctionCall","src":"9654:25:15"}],"functionName":{"name":"and","nativeSrc":"9541:3:15","nodeType":"YulIdentifier","src":"9541:3:15"},"nativeSrc":"9541:156:15","nodeType":"YulFunctionCall","src":"9541:156:15"},"variableNames":[{"name":"chunk","nativeSrc":"9532:5:15","nodeType":"YulIdentifier","src":"9532:5:15"}]},{"nativeSrc":"9714:165:15","nodeType":"YulAssignment","src":"9714:165:15","value":{"arguments":[{"kind":"number","nativeSrc":"9748:66:15","nodeType":"YulLiteral","src":"9748:66:15","type":"","value":"0x0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9843:2:15","nodeType":"YulLiteral","src":"9843:2:15","type":"","value":"16"},{"name":"chunk","nativeSrc":"9847:5:15","nodeType":"YulIdentifier","src":"9847:5:15"}],"functionName":{"name":"shl","nativeSrc":"9839:3:15","nodeType":"YulIdentifier","src":"9839:3:15"},"nativeSrc":"9839:14:15","nodeType":"YulFunctionCall","src":"9839:14:15"},{"name":"chunk","nativeSrc":"9855:5:15","nodeType":"YulIdentifier","src":"9855:5:15"}],"functionName":{"name":"or","nativeSrc":"9836:2:15","nodeType":"YulIdentifier","src":"9836:2:15"},"nativeSrc":"9836:25:15","nodeType":"YulFunctionCall","src":"9836:25:15"}],"functionName":{"name":"and","nativeSrc":"9723:3:15","nodeType":"YulIdentifier","src":"9723:3:15"},"nativeSrc":"9723:156:15","nodeType":"YulFunctionCall","src":"9723:156:15"},"variableNames":[{"name":"chunk","nativeSrc":"9714:5:15","nodeType":"YulIdentifier","src":"9714:5:15"}]},{"nativeSrc":"9896:164:15","nodeType":"YulAssignment","src":"9896:164:15","value":{"arguments":[{"kind":"number","nativeSrc":"9930:66:15","nodeType":"YulLiteral","src":"9930:66:15","type":"","value":"0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10025:1:15","nodeType":"YulLiteral","src":"10025:1:15","type":"","value":"8"},{"name":"chunk","nativeSrc":"10028:5:15","nodeType":"YulIdentifier","src":"10028:5:15"}],"functionName":{"name":"shl","nativeSrc":"10021:3:15","nodeType":"YulIdentifier","src":"10021:3:15"},"nativeSrc":"10021:13:15","nodeType":"YulFunctionCall","src":"10021:13:15"},{"name":"chunk","nativeSrc":"10036:5:15","nodeType":"YulIdentifier","src":"10036:5:15"}],"functionName":{"name":"or","nativeSrc":"10018:2:15","nodeType":"YulIdentifier","src":"10018:2:15"},"nativeSrc":"10018:24:15","nodeType":"YulFunctionCall","src":"10018:24:15"}],"functionName":{"name":"and","nativeSrc":"9905:3:15","nodeType":"YulIdentifier","src":"9905:3:15"},"nativeSrc":"9905:155:15","nodeType":"YulFunctionCall","src":"9905:155:15"},"variableNames":[{"name":"chunk","nativeSrc":"9896:5:15","nodeType":"YulIdentifier","src":"9896:5:15"}]},{"nativeSrc":"10077:164:15","nodeType":"YulAssignment","src":"10077:164:15","value":{"arguments":[{"kind":"number","nativeSrc":"10111:66:15","nodeType":"YulLiteral","src":"10111:66:15","type":"","value":"0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10206:1:15","nodeType":"YulLiteral","src":"10206:1:15","type":"","value":"4"},{"name":"chunk","nativeSrc":"10209:5:15","nodeType":"YulIdentifier","src":"10209:5:15"}],"functionName":{"name":"shl","nativeSrc":"10202:3:15","nodeType":"YulIdentifier","src":"10202:3:15"},"nativeSrc":"10202:13:15","nodeType":"YulFunctionCall","src":"10202:13:15"},{"name":"chunk","nativeSrc":"10217:5:15","nodeType":"YulIdentifier","src":"10217:5:15"}],"functionName":{"name":"or","nativeSrc":"10199:2:15","nodeType":"YulIdentifier","src":"10199:2:15"},"nativeSrc":"10199:24:15","nodeType":"YulFunctionCall","src":"10199:24:15"}],"functionName":{"name":"and","nativeSrc":"10086:3:15","nodeType":"YulIdentifier","src":"10086:3:15"},"nativeSrc":"10086:155:15","nodeType":"YulFunctionCall","src":"10086:155:15"},"variableNames":[{"name":"chunk","nativeSrc":"10077:5:15","nodeType":"YulIdentifier","src":"10077:5:15"}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"output","nativeSrc":"10273:6:15","nodeType":"YulIdentifier","src":"10273:6:15"},{"kind":"number","nativeSrc":"10281:4:15","nodeType":"YulLiteral","src":"10281:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10269:3:15","nodeType":"YulIdentifier","src":"10269:3:15"},"nativeSrc":"10269:17:15","nodeType":"YulFunctionCall","src":"10269:17:15"},{"arguments":[{"name":"i","nativeSrc":"10292:1:15","nodeType":"YulIdentifier","src":"10292:1:15"},{"kind":"number","nativeSrc":"10295:1:15","nodeType":"YulLiteral","src":"10295:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"10288:3:15","nodeType":"YulIdentifier","src":"10288:3:15"},"nativeSrc":"10288:9:15","nodeType":"YulFunctionCall","src":"10288:9:15"}],"functionName":{"name":"add","nativeSrc":"10265:3:15","nodeType":"YulIdentifier","src":"10265:3:15"},"nativeSrc":"10265:33:15","nodeType":"YulFunctionCall","src":"10265:33:15"},{"name":"chunk","nativeSrc":"10300:5:15","nodeType":"YulIdentifier","src":"10300:5:15"}],"functionName":{"name":"mstore","nativeSrc":"10258:6:15","nodeType":"YulIdentifier","src":"10258:6:15"},"nativeSrc":"10258:48:15","nodeType":"YulFunctionCall","src":"10258:48:15"},"nativeSrc":"10258:48:15","nodeType":"YulExpressionStatement","src":"10258:48:15"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"9200:1:15","nodeType":"YulIdentifier","src":"9200:1:15"},{"name":"length","nativeSrc":"9203:6:15","nodeType":"YulIdentifier","src":"9203:6:15"}],"functionName":{"name":"lt","nativeSrc":"9197:2:15","nodeType":"YulIdentifier","src":"9197:2:15"},"nativeSrc":"9197:13:15","nodeType":"YulFunctionCall","src":"9197:13:15"},"nativeSrc":"9150:1170:15","nodeType":"YulForLoop","post":{"nativeSrc":"9211:49:15","nodeType":"YulBlock","src":"9211:49:15","statements":[{"nativeSrc":"9229:17:15","nodeType":"YulAssignment","src":"9229:17:15","value":{"arguments":[{"name":"i","nativeSrc":"9238:1:15","nodeType":"YulIdentifier","src":"9238:1:15"},{"kind":"number","nativeSrc":"9241:4:15","nodeType":"YulLiteral","src":"9241:4:15","type":"","value":"0x10"}],"functionName":{"name":"add","nativeSrc":"9234:3:15","nodeType":"YulIdentifier","src":"9234:3:15"},"nativeSrc":"9234:12:15","nodeType":"YulFunctionCall","src":"9234:12:15"},"variableNames":[{"name":"i","nativeSrc":"9229:1:15","nodeType":"YulIdentifier","src":"9229:1:15"}]}]},"pre":{"nativeSrc":"9154:42:15","nodeType":"YulBlock","src":"9154:42:15","statements":[{"nativeSrc":"9172:10:15","nodeType":"YulVariableDeclaration","src":"9172:10:15","value":{"kind":"number","nativeSrc":"9181:1:15","nodeType":"YulLiteral","src":"9181:1:15","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"9176:1:15","nodeType":"YulTypedName","src":"9176:1:15","type":""}]}]},"src":"9150:1170:15"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3495,"isOffset":false,"isSlot":false,"src":"8989:5:15","valueSize":1},{"declaration":3495,"isOffset":false,"isSlot":false,"src":"9315:5:15","valueSize":1},{"declaration":3498,"isOffset":false,"isSlot":false,"src":"10273:6:15","valueSize":1},{"declaration":3498,"isOffset":false,"isSlot":false,"src":"9008:6:15","valueSize":1},{"declaration":3498,"isOffset":false,"isSlot":false,"src":"9063:6:15","valueSize":1},{"declaration":3498,"isOffset":false,"isSlot":false,"src":"9114:6:15","valueSize":1}],"flags":["memory-safe"],"id":3500,"nodeType":"InlineAssembly","src":"8930:1400:15"}]},"documentation":{"id":3493,"nodeType":"StructuredDocumentation","src":"8688:144:15","text":" @dev Split each byte in `input` into two nibbles (4 bits each)\n Example: hex\"01234567\" → hex\"0001020304050607\""},"id":3502,"implemented":true,"kind":"function","modifiers":[],"name":"toNibbles","nameLocation":"8846:9:15","nodeType":"FunctionDefinition","parameters":{"id":3496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3495,"mutability":"mutable","name":"input","nameLocation":"8869:5:15","nodeType":"VariableDeclaration","scope":3502,"src":"8856:18:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3494,"name":"bytes","nodeType":"ElementaryTypeName","src":"8856:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8855:20:15"},"returnParameters":{"id":3499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3498,"mutability":"mutable","name":"output","nameLocation":"8912:6:15","nodeType":"VariableDeclaration","scope":3502,"src":"8899:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3497,"name":"bytes","nodeType":"ElementaryTypeName","src":"8899:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8898:21:15"},"scope":3877,"src":"8837:1499:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3526,"nodeType":"Block","src":"10494:76:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3512,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3505,"src":"10511:1:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10513:6:15","memberName":"length","nodeType":"MemberAccess","src":"10511:8:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3514,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"10523:1:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10525:6:15","memberName":"length","nodeType":"MemberAccess","src":"10523:8:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10511:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3518,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3505,"src":"10545:1:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3517,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"10535:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10535:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3521,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"10561:1:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3520,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"10551:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10551:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10535:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10511:52:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3511,"id":3525,"nodeType":"Return","src":"10504:59:15"}]},"documentation":{"id":3503,"nodeType":"StructuredDocumentation","src":"10342:71:15","text":" @dev Returns true if the two byte buffers are equal."},"id":3527,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"10427:5:15","nodeType":"FunctionDefinition","parameters":{"id":3508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3505,"mutability":"mutable","name":"a","nameLocation":"10446:1:15","nodeType":"VariableDeclaration","scope":3527,"src":"10433:14:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3504,"name":"bytes","nodeType":"ElementaryTypeName","src":"10433:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3507,"mutability":"mutable","name":"b","nameLocation":"10462:1:15","nodeType":"VariableDeclaration","scope":3527,"src":"10449:14:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3506,"name":"bytes","nodeType":"ElementaryTypeName","src":"10449:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10432:32:15"},"returnParameters":{"id":3511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3527,"src":"10488:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3509,"name":"bool","nodeType":"ElementaryTypeName","src":"10488:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10487:6:15"},"scope":3877,"src":"10418:152:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3617,"nodeType":"Block","src":"10874:1024:15","statements":[{"expression":{"id":3551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3535,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"10884:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3536,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"10920:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10929:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10920:10:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3539,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10919:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646","id":3540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10934:66:15","typeDescriptions":{"typeIdentifier":"t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1","typeString":"int_const 4505...(67 digits omitted)...9455"},"value":"0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"},"src":"10919:81:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3542,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10918:83:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3543,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11018:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646","id":3544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11026:66:15","typeDescriptions":{"typeIdentifier":"t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1","typeString":"int_const 4505...(67 digits omitted)...9455"},"value":"0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"},"src":"11018:74:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3546,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11017:76:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":3547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11097:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11017:81:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3549,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11016:83:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10918:181:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10884:215:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3552,"nodeType":"ExpressionStatement","src":"10884:215:15"},{"expression":{"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3553,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11109:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3554,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11157:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11166:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11157:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3557,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11156:13:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646","id":3558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11172:66:15","typeDescriptions":{"typeIdentifier":"t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1","typeString":"int_const 1766...(65 digits omitted)...4255"},"value":"0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"},"src":"11156:82:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3560,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11155:84:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3561,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11256:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646","id":3562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11264:66:15","typeDescriptions":{"typeIdentifier":"t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1","typeString":"int_const 1766...(65 digits omitted)...4255"},"value":"0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"},"src":"11256:74:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3564,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11255:76:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":3565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11335:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11255:82:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3567,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11254:84:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11155:183:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11109:229:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3570,"nodeType":"ExpressionStatement","src":"11109:229:15"},{"expression":{"id":3587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3571,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11348:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3572,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11396:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11405:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11396:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3575,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11395:13:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646","id":3576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11411:66:15","typeDescriptions":{"typeIdentifier":"t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1","typeString":"int_const 2695...(60 digits omitted)...3855"},"value":"0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"},"src":"11395:82:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3578,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11394:84:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3579,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11495:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646","id":3580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11503:66:15","typeDescriptions":{"typeIdentifier":"t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1","typeString":"int_const 2695...(60 digits omitted)...3855"},"value":"0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"},"src":"11495:74:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3582,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11494:76:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":3583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11574:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11494:82:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3585,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11493:84:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11394:183:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11348:229:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3588,"nodeType":"ExpressionStatement","src":"11348:229:15"},{"expression":{"id":3605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3589,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11587:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3590,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11635:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":3591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11644:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11635:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3593,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11634:13:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646","id":3594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11650:66:15","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763495507056286727952657427581105975853055_by_1","typeString":"int_const 6277...(50 digits omitted)...3055"},"value":"0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"},"src":"11634:82:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3596,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11633:84:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11734:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646","id":3598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11742:66:15","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763495507056286727952657427581105975853055_by_1","typeString":"int_const 6277...(50 digits omitted)...3055"},"value":"0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"},"src":"11734:74:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3600,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11733:76:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":3601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11813:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11733:82:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3603,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11732:84:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11633:183:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11587:229:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3606,"nodeType":"ExpressionStatement","src":"11587:229:15"},{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11834:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":3608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11843:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11834:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3610,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11833:14:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"11851:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":3612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11860:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11851:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3614,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11850:14:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11833:31:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3534,"id":3616,"nodeType":"Return","src":"11826:38:15"}]},"documentation":{"id":3528,"nodeType":"StructuredDocumentation","src":"10576:222:15","text":" @dev Reverses the byte order of a bytes32 value, converting between little-endian and big-endian.\n Inspired by https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel[Reverse Parallel]"},"id":3618,"implemented":true,"kind":"function","modifiers":[],"name":"reverseBytes32","nameLocation":"10812:14:15","nodeType":"FunctionDefinition","parameters":{"id":3531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3530,"mutability":"mutable","name":"value","nameLocation":"10835:5:15","nodeType":"VariableDeclaration","scope":3618,"src":"10827:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10827:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10826:15:15"},"returnParameters":{"id":3534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3618,"src":"10865:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3532,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10865:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10864:9:15"},"scope":3877,"src":"10803:1095:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3690,"nodeType":"Block","src":"12047:590:15","statements":[{"expression":{"id":3642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3626,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12057:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3627,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12093:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646303046463030464630304646303046463030464630304646303046463030","id":3628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12101:34:15","typeDescriptions":{"typeIdentifier":"t_rational_338958311018522360492699998064329424640_by_1","typeString":"int_const 3389...(31 digits omitted)...4640"},"value":"0xFF00FF00FF00FF00FF00FF00FF00FF00"},"src":"12093:42:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3630,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12092:44:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12140:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12092:49:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3633,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12091:51:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3634,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12159:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783030464630304646303046463030464630304646303046463030464630304646","id":3635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12167:34:15","typeDescriptions":{"typeIdentifier":"t_rational_1324055902416102970674609367438786815_by_1","typeString":"int_const 1324...(29 digits omitted)...6815"},"value":"0x00FF00FF00FF00FF00FF00FF00FF00FF"},"src":"12159:42:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3637,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12158:44:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":3638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12206:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12158:49:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3640,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12157:51:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12091:117:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12057:151:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":3643,"nodeType":"ExpressionStatement","src":"12057:151:15"},{"expression":{"id":3660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3644,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12218:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3645,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12266:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646464630303030464646463030303046464646303030304646464630303030","id":3646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12274:34:15","typeDescriptions":{"typeIdentifier":"t_rational_340277174703306882242637262502835978240_by_1","typeString":"int_const 3402...(31 digits omitted)...8240"},"value":"0xFFFF0000FFFF0000FFFF0000FFFF0000"},"src":"12266:42:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3648,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12265:44:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12313:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12265:50:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3651,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12264:52:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12333:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783030303046464646303030304646464630303030464646463030303046464646","id":3653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12341:34:15","typeDescriptions":{"typeIdentifier":"t_rational_5192217631581220737344928932233215_by_1","typeString":"int_const 5192...(26 digits omitted)...3215"},"value":"0x0000FFFF0000FFFF0000FFFF0000FFFF"},"src":"12333:42:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3655,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12332:44:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":3656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12380:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12332:50:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3658,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12331:52:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12264:119:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12218:165:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":3661,"nodeType":"ExpressionStatement","src":"12218:165:15"},{"expression":{"id":3678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3662,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12393:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3663,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12441:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646464646464646303030303030303046464646464646463030303030303030","id":3664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12449:34:15","typeDescriptions":{"typeIdentifier":"t_rational_340282366841710300967557013907638845440_by_1","typeString":"int_const 3402...(31 digits omitted)...5440"},"value":"0xFFFFFFFF00000000FFFFFFFF00000000"},"src":"12441:42:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3666,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12440:44:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12440:50:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3669,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12439:52:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3670,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12508:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783030303030303030464646464646464630303030303030304646464646464646","id":3671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12516:34:15","typeDescriptions":{"typeIdentifier":"t_rational_79228162495817593524129366015_by_1","typeString":"int_const 79228162495817593524129366015"},"value":"0x00000000FFFFFFFF00000000FFFFFFFF"},"src":"12508:42:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3673,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12507:44:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":3674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12555:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12507:50:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3676,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12506:52:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12439:119:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12393:165:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":3679,"nodeType":"ExpressionStatement","src":"12393:165:15"},{"expression":{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12576:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":3681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12585:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12576:11:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3683,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12575:13:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":3686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3684,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12592:5:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":3685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12601:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12592:11:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":3687,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12591:13:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12575:29:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"functionReturnParameters":3625,"id":3689,"nodeType":"Return","src":"12568:36:15"}]},"documentation":{"id":3619,"nodeType":"StructuredDocumentation","src":"11904:67:15","text":"@dev Same as {reverseBytes32} but optimized for 128-bit values."},"id":3691,"implemented":true,"kind":"function","modifiers":[],"name":"reverseBytes16","nameLocation":"11985:14:15","nodeType":"FunctionDefinition","parameters":{"id":3622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3621,"mutability":"mutable","name":"value","nameLocation":"12008:5:15","nodeType":"VariableDeclaration","scope":3691,"src":"12000:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":3620,"name":"bytes16","nodeType":"ElementaryTypeName","src":"12000:7:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"visibility":"internal"}],"src":"11999:15:15"},"returnParameters":{"id":3625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3624,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3691,"src":"12038:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":3623,"name":"bytes16","nodeType":"ElementaryTypeName","src":"12038:7:15","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"visibility":"internal"}],"src":"12037:9:15"},"scope":3877,"src":"11976:661:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3745,"nodeType":"Block","src":"12782:303:15","statements":[{"expression":{"id":3715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3699,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"12792:5:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3700,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"12802:5:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307846463030464630304646303046463030","id":3701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12810:18:15","typeDescriptions":{"typeIdentifier":"t_rational_18374966859414961920_by_1","typeString":"int_const 18374966859414961920"},"value":"0xFF00FF00FF00FF00"},"src":"12802:26:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":3703,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12801:28:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12833:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12801:33:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":3706,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12800:35:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3707,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"12840:5:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830304646303046463030464630304646","id":3708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12848:18:15","typeDescriptions":{"typeIdentifier":"t_rational_71777214294589695_by_1","typeString":"int_const 71777214294589695"},"value":"0x00FF00FF00FF00FF"},"src":"12840:26:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":3710,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12839:28:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":3711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12871:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12839:33:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":3713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12838:35:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"src":"12800:73:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"src":"12792:81:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"id":3716,"nodeType":"ExpressionStatement","src":"12792:81:15"},{"expression":{"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3717,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"12897:5:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3718,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"12907:5:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307846464646303030304646464630303030","id":3719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12915:18:15","typeDescriptions":{"typeIdentifier":"t_rational_18446462603027742720_by_1","typeString":"int_const 18446462603027742720"},"value":"0xFFFF0000FFFF0000"},"src":"12907:26:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":3721,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12906:28:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12938:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12906:34:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":3724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12905:36:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3725,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"12946:5:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030464646463030303046464646","id":3726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12954:18:15","typeDescriptions":{"typeIdentifier":"t_rational_281470681808895_by_1","typeString":"int_const 281470681808895"},"value":"0x0000FFFF0000FFFF"},"src":"12946:26:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":3728,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12945:28:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":3729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12977:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12945:34:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":3731,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12944:36:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"src":"12905:75:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"src":"12897:83:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"id":3734,"nodeType":"ExpressionStatement","src":"12897:83:15"},{"expression":{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3735,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"13024:5:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13033:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"13024:11:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":3738,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13023:13:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":3741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3739,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"13040:5:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":3740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13049:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"13040:11:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":3742,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13039:13:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"src":"13023:29:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"functionReturnParameters":3698,"id":3744,"nodeType":"Return","src":"13016:36:15"}]},"documentation":{"id":3692,"nodeType":"StructuredDocumentation","src":"12643:66:15","text":"@dev Same as {reverseBytes32} but optimized for 64-bit values."},"id":3746,"implemented":true,"kind":"function","modifiers":[],"name":"reverseBytes8","nameLocation":"12723:13:15","nodeType":"FunctionDefinition","parameters":{"id":3695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3694,"mutability":"mutable","name":"value","nameLocation":"12744:5:15","nodeType":"VariableDeclaration","scope":3746,"src":"12737:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3693,"name":"bytes8","nodeType":"ElementaryTypeName","src":"12737:6:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"}],"src":"12736:14:15"},"returnParameters":{"id":3698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3697,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3746,"src":"12774:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3696,"name":"bytes8","nodeType":"ElementaryTypeName","src":"12774:6:15","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"}],"src":"12773:8:15"},"scope":3877,"src":"12714:371:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3782,"nodeType":"Block","src":"13230:168:15","statements":[{"expression":{"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"13240:5:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3755,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"13250:5:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646303046463030","id":3756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13258:10:15","typeDescriptions":{"typeIdentifier":"t_rational_4278255360_by_1","typeString":"int_const 4278255360"},"value":"0xFF00FF00"},"src":"13250:18:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":3758,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13249:20:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13273:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13249:25:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":3761,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13248:27:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"13280:5:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783030464630304646","id":3763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13288:10:15","typeDescriptions":{"typeIdentifier":"t_rational_16711935_by_1","typeString":"int_const 16711935"},"value":"0x00FF00FF"},"src":"13280:18:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":3765,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13279:20:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":3766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13303:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13279:25:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":3768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13278:27:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"13248:57:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"13240:65:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3771,"nodeType":"ExpressionStatement","src":"13240:65:15"},{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3772,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"13337:5:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13346:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13337:11:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":3775,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13336:13:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3776,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"13353:5:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":3777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13362:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13353:11:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":3779,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13352:13:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"13336:29:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":3753,"id":3781,"nodeType":"Return","src":"13329:36:15"}]},"documentation":{"id":3747,"nodeType":"StructuredDocumentation","src":"13091:66:15","text":"@dev Same as {reverseBytes32} but optimized for 32-bit values."},"id":3783,"implemented":true,"kind":"function","modifiers":[],"name":"reverseBytes4","nameLocation":"13171:13:15","nodeType":"FunctionDefinition","parameters":{"id":3750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3749,"mutability":"mutable","name":"value","nameLocation":"13192:5:15","nodeType":"VariableDeclaration","scope":3783,"src":"13185:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3748,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13185:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"13184:14:15"},"returnParameters":{"id":3753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3783,"src":"13222:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3751,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13222:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"13221:8:15"},"scope":3877,"src":"13162:236:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3801,"nodeType":"Block","src":"13543:51:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":3799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":3793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3791,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3786,"src":"13561:5:15","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13570:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13561:10:15","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}}],"id":3794,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13560:12:15","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":3797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3795,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3786,"src":"13576:5:15","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":3796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13585:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13576:10:15","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}}],"id":3798,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13575:12:15","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"13560:27:15","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"functionReturnParameters":3790,"id":3800,"nodeType":"Return","src":"13553:34:15"}]},"documentation":{"id":3784,"nodeType":"StructuredDocumentation","src":"13404:66:15","text":"@dev Same as {reverseBytes32} but optimized for 16-bit values."},"id":3802,"implemented":true,"kind":"function","modifiers":[],"name":"reverseBytes2","nameLocation":"13484:13:15","nodeType":"FunctionDefinition","parameters":{"id":3787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3786,"mutability":"mutable","name":"value","nameLocation":"13505:5:15","nodeType":"VariableDeclaration","scope":3802,"src":"13498:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"typeName":{"id":3785,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13498:6:15","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"visibility":"internal"}],"src":"13497:14:15"},"returnParameters":{"id":3790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3802,"src":"13535:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"typeName":{"id":3788,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13535:6:15","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"visibility":"internal"}],"src":"13534:8:15"},"scope":3877,"src":"13475:119:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3863,"nodeType":"Block","src":"13811:313:15","statements":[{"body":{"id":3856,"nodeType":"Block","src":"13871:213:15","statements":[{"assignments":[3823],"declarations":[{"constant":false,"id":3823,"mutability":"mutable","name":"chunk","nameLocation":"13893:5:15","nodeType":"VariableDeclaration","scope":3856,"src":"13885:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3822,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13885:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3828,"initialValue":{"arguments":[{"id":3825,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3805,"src":"13924:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3826,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"13932:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3824,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"13901:22:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":3827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13901:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13885:49:15"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3829,"name":"chunk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3823,"src":"13952:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13969:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13961:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3830,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13961:7:15","typeDescriptions":{}}},"id":3833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13961:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13952:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3855,"nodeType":"IfStatement","src":"13948:126:15","trueBody":{"id":3854,"nodeType":"Block","src":"13973:101:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":3837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14007:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3838,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"14011:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14007:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"arguments":[{"id":3844,"name":"chunk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3823,"src":"14032:5:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14024:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3842,"name":"uint256","nodeType":"ElementaryTypeName","src":"14024:7:15","typeDescriptions":{}}},"id":3845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14024:14:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3840,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"14015:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14020:3:15","memberName":"clz","nodeType":"MemberAccess","referencedDeclaration":7506,"src":"14015:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14015:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14007:32:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":3848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14041:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":3849,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3805,"src":"14045:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14052:6:15","memberName":"length","nodeType":"MemberAccess","src":"14045:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14041:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3835,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"13998:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":3836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14003:3:15","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6177,"src":"13998:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13998:61:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3809,"id":3853,"nodeType":"Return","src":"13991:68:15"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3814,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"13841:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3815,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3805,"src":"13845:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13852:6:15","memberName":"length","nodeType":"MemberAccess","src":"13845:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13841:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3857,"initializationExpression":{"assignments":[3811],"declarations":[{"constant":false,"id":3811,"mutability":"mutable","name":"i","nameLocation":"13834:1:15","nodeType":"VariableDeclaration","scope":3857,"src":"13826:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3810,"name":"uint256","nodeType":"ElementaryTypeName","src":"13826:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3813,"initialValue":{"hexValue":"30","id":3812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13838:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13826:13:15"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":3820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3818,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"13860:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"30783230","id":3819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13865:4:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"13860:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3821,"nodeType":"ExpressionStatement","src":"13860:9:15"},"nodeType":"ForStatement","src":"13821:263:15"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":3858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14100:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":3859,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3805,"src":"14104:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14111:6:15","memberName":"length","nodeType":"MemberAccess","src":"14104:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14100:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3809,"id":3862,"nodeType":"Return","src":"14093:24:15"}]},"documentation":{"id":3803,"nodeType":"StructuredDocumentation","src":"13600:140:15","text":" @dev Counts the number of leading zero bits a bytes array. Returns `8 * buffer.length`\n if the buffer is all zeros."},"id":3864,"implemented":true,"kind":"function","modifiers":[],"name":"clz","nameLocation":"13754:3:15","nodeType":"FunctionDefinition","parameters":{"id":3806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3805,"mutability":"mutable","name":"buffer","nameLocation":"13771:6:15","nodeType":"VariableDeclaration","scope":3864,"src":"13758:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3804,"name":"bytes","nodeType":"ElementaryTypeName","src":"13758:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13757:21:15"},"returnParameters":{"id":3809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3808,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3864,"src":"13802:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3807,"name":"uint256","nodeType":"ElementaryTypeName","src":"13802:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13801:9:15"},"scope":3877,"src":"13745:379:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3875,"nodeType":"Block","src":"14509:225:15","statements":[{"AST":{"nativeSrc":"14658:70:15","nodeType":"YulBlock","src":"14658:70:15","statements":[{"nativeSrc":"14672:46:15","nodeType":"YulAssignment","src":"14672:46:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"14695:6:15","nodeType":"YulIdentifier","src":"14695:6:15"},{"kind":"number","nativeSrc":"14703:4:15","nodeType":"YulLiteral","src":"14703:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14691:3:15","nodeType":"YulIdentifier","src":"14691:3:15"},"nativeSrc":"14691:17:15","nodeType":"YulFunctionCall","src":"14691:17:15"},{"name":"offset","nativeSrc":"14710:6:15","nodeType":"YulIdentifier","src":"14710:6:15"}],"functionName":{"name":"add","nativeSrc":"14687:3:15","nodeType":"YulIdentifier","src":"14687:3:15"},"nativeSrc":"14687:30:15","nodeType":"YulFunctionCall","src":"14687:30:15"}],"functionName":{"name":"mload","nativeSrc":"14681:5:15","nodeType":"YulIdentifier","src":"14681:5:15"},"nativeSrc":"14681:37:15","nodeType":"YulFunctionCall","src":"14681:37:15"},"variableNames":[{"name":"value","nativeSrc":"14672:5:15","nodeType":"YulIdentifier","src":"14672:5:15"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3867,"isOffset":false,"isSlot":false,"src":"14695:6:15","valueSize":1},{"declaration":3869,"isOffset":false,"isSlot":false,"src":"14710:6:15","valueSize":1},{"declaration":3872,"isOffset":false,"isSlot":false,"src":"14672:5:15","valueSize":1}],"flags":["memory-safe"],"id":3874,"nodeType":"InlineAssembly","src":"14633:95:15"}]},"documentation":{"id":3865,"nodeType":"StructuredDocumentation","src":"14130:268:15","text":" @dev Reads a bytes32 from a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."},"id":3876,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeReadBytesOffset","nameLocation":"14412:22:15","nodeType":"FunctionDefinition","parameters":{"id":3870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3867,"mutability":"mutable","name":"buffer","nameLocation":"14448:6:15","nodeType":"VariableDeclaration","scope":3876,"src":"14435:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3866,"name":"bytes","nodeType":"ElementaryTypeName","src":"14435:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3869,"mutability":"mutable","name":"offset","nameLocation":"14464:6:15","nodeType":"VariableDeclaration","scope":3876,"src":"14456:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3868,"name":"uint256","nodeType":"ElementaryTypeName","src":"14456:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14434:37:15"},"returnParameters":{"id":3873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3872,"mutability":"mutable","name":"value","nameLocation":"14502:5:15","nodeType":"VariableDeclaration","scope":3876,"src":"14494:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3871,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14494:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14493:15:15"},"scope":3877,"src":"14403:331:15","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":3878,"src":"198:14538:15","usedErrors":[],"usedEvents":[]}],"src":"99:14638:15"},"id":15},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[3907]},"id":3908,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3879,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:16"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":3880,"nodeType":"StructuredDocumentation","src":"127:496:16","text":" @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 This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":3907,"linearizedBaseContracts":[3907],"name":"Context","nameLocation":"642:7:16","nodeType":"ContractDefinition","nodes":[{"body":{"id":3888,"nodeType":"Block","src":"718:34:16","statements":[{"expression":{"expression":{"id":3885,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"735:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:16","memberName":"sender","nodeType":"MemberAccess","src":"735:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3884,"id":3887,"nodeType":"Return","src":"728:17:16"}]},"id":3889,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:16","nodeType":"FunctionDefinition","parameters":{"id":3881,"nodeType":"ParameterList","parameters":[],"src":"675:2:16"},"returnParameters":{"id":3884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3889,"src":"709:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3882,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:16"},"scope":3907,"src":"656:96:16","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3897,"nodeType":"Block","src":"825:32:16","statements":[{"expression":{"expression":{"id":3894,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"842:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:16","memberName":"data","nodeType":"MemberAccess","src":"842:8:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":3893,"id":3896,"nodeType":"Return","src":"835:15:16"}]},"id":3898,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:16","nodeType":"FunctionDefinition","parameters":{"id":3890,"nodeType":"ParameterList","parameters":[],"src":"775:2:16"},"returnParameters":{"id":3893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3892,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3898,"src":"809:14:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3891,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:16"},"scope":3907,"src":"758:99:16","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3905,"nodeType":"Block","src":"935:25:16","statements":[{"expression":{"hexValue":"30","id":3903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3902,"id":3904,"nodeType":"Return","src":"945:8:16"}]},"id":3906,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:16","nodeType":"FunctionDefinition","parameters":{"id":3899,"nodeType":"ParameterList","parameters":[],"src":"892:2:16"},"returnParameters":{"id":3902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3906,"src":"926:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3900,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:16"},"scope":3907,"src":"863:97:16","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":3908,"src":"624:338:16","usedErrors":[],"usedEvents":[]}],"src":"101:862:16"},"id":16},"@openzeppelin/contracts/utils/Panic.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","exportedSymbols":{"Panic":[3959]},"id":3960,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3909,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:17"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":3910,"nodeType":"StructuredDocumentation","src":"125:489:17","text":" @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n using Panic for uint256;\n // Use any of the declared internal constants\n function foo() { Panic.GENERIC.panic(); }\n // Alternatively\n function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"},"fullyImplemented":true,"id":3959,"linearizedBaseContracts":[3959],"name":"Panic","nameLocation":"665:5:17","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":3911,"nodeType":"StructuredDocumentation","src":"677:36:17","text":"@dev generic / unspecified error"},"id":3914,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:17","nodeType":"VariableDeclaration","scope":3959,"src":"718:40:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3912,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":3913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":3915,"nodeType":"StructuredDocumentation","src":"764:37:17","text":"@dev used by the assert() builtin"},"id":3918,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:17","nodeType":"VariableDeclaration","scope":3959,"src":"806:39:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3916,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":3917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":3919,"nodeType":"StructuredDocumentation","src":"851:41:17","text":"@dev arithmetic underflow or overflow"},"id":3922,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:17","nodeType":"VariableDeclaration","scope":3959,"src":"897:47:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3920,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":3921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:17","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":3923,"nodeType":"StructuredDocumentation","src":"950:35:17","text":"@dev division or modulo by zero"},"id":3926,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:17","nodeType":"VariableDeclaration","scope":3959,"src":"990:49:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3924,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":3925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:17","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":3927,"nodeType":"StructuredDocumentation","src":"1045:30:17","text":"@dev enum conversion error"},"id":3930,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:17","nodeType":"VariableDeclaration","scope":3959,"src":"1080:54:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3928,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":3929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:17","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":3931,"nodeType":"StructuredDocumentation","src":"1140:36:17","text":"@dev invalid encoding in storage"},"id":3934,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:17","nodeType":"VariableDeclaration","scope":3959,"src":"1181:55:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3932,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":3933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:17","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":3935,"nodeType":"StructuredDocumentation","src":"1242:24:17","text":"@dev empty array pop"},"id":3938,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:17","nodeType":"VariableDeclaration","scope":3959,"src":"1271:48:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3936,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":3937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:17","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":3939,"nodeType":"StructuredDocumentation","src":"1325:35:17","text":"@dev array out of bounds access"},"id":3942,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:17","nodeType":"VariableDeclaration","scope":3959,"src":"1365:52:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3940,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":3941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:17","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":3943,"nodeType":"StructuredDocumentation","src":"1423:65:17","text":"@dev resource error (too large allocation or too large array)"},"id":3946,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:17","nodeType":"VariableDeclaration","scope":3959,"src":"1493:47:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3944,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":3945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:17","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":3947,"nodeType":"StructuredDocumentation","src":"1546:42:17","text":"@dev calling invalid internal function"},"id":3950,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:17","nodeType":"VariableDeclaration","scope":3959,"src":"1593:58:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3948,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":3949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:17","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":3957,"nodeType":"Block","src":"1819:151:17","statements":[{"AST":{"nativeSrc":"1854:110:17","nodeType":"YulBlock","src":"1854:110:17","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:17","nodeType":"YulLiteral","src":"1875:4:17","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:17","nodeType":"YulLiteral","src":"1881:10:17","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:17","nodeType":"YulIdentifier","src":"1868:6:17"},"nativeSrc":"1868:24:17","nodeType":"YulFunctionCall","src":"1868:24:17"},"nativeSrc":"1868:24:17","nodeType":"YulExpressionStatement","src":"1868:24:17"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:17","nodeType":"YulLiteral","src":"1912:4:17","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:17","nodeType":"YulIdentifier","src":"1918:4:17"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:17","nodeType":"YulIdentifier","src":"1905:6:17"},"nativeSrc":"1905:18:17","nodeType":"YulFunctionCall","src":"1905:18:17"},"nativeSrc":"1905:18:17","nodeType":"YulExpressionStatement","src":"1905:18:17"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:17","nodeType":"YulLiteral","src":"1943:4:17","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:17","nodeType":"YulLiteral","src":"1949:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:17","nodeType":"YulIdentifier","src":"1936:6:17"},"nativeSrc":"1936:18:17","nodeType":"YulFunctionCall","src":"1936:18:17"},"nativeSrc":"1936:18:17","nodeType":"YulExpressionStatement","src":"1936:18:17"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3953,"isOffset":false,"isSlot":false,"src":"1918:4:17","valueSize":1}],"flags":["memory-safe"],"id":3956,"nodeType":"InlineAssembly","src":"1829:135:17"}]},"documentation":{"id":3951,"nodeType":"StructuredDocumentation","src":"1658:113:17","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":3958,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:17","nodeType":"FunctionDefinition","parameters":{"id":3954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3953,"mutability":"mutable","name":"code","nameLocation":"1799:4:17","nodeType":"VariableDeclaration","scope":3958,"src":"1791:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3952,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:17"},"returnParameters":{"id":3955,"nodeType":"ParameterList","parameters":[],"src":"1819:0:17"},"scope":3959,"src":"1776:194:17","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3960,"src":"657:1315:17","usedErrors":[],"usedEvents":[]}],"src":"99:1874:17"},"id":17},"@openzeppelin/contracts/utils/Pausable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Pausable.sol","exportedSymbols":{"Context":[3907],"Pausable":[4067]},"id":4068,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3961,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:18"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":3963,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4068,"sourceUnit":3908,"src":"128:45:18","symbolAliases":[{"foreign":{"id":3962,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"136:7:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3965,"name":"Context","nameLocations":["645:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":3907,"src":"645:7:18"},"id":3966,"nodeType":"InheritanceSpecifier","src":"645:7:18"}],"canonicalName":"Pausable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3964,"nodeType":"StructuredDocumentation","src":"175:439:18","text":" @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\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."},"fullyImplemented":true,"id":4067,"linearizedBaseContracts":[4067,3907],"name":"Pausable","nameLocation":"633:8:18","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3968,"mutability":"mutable","name":"_paused","nameLocation":"672:7:18","nodeType":"VariableDeclaration","scope":4067,"src":"659:20:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3967,"name":"bool","nodeType":"ElementaryTypeName","src":"659:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":3969,"nodeType":"StructuredDocumentation","src":"686:73:18","text":" @dev Emitted when the pause is triggered by `account`."},"eventSelector":"62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258","id":3973,"name":"Paused","nameLocation":"770:6:18","nodeType":"EventDefinition","parameters":{"id":3972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3971,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"785:7:18","nodeType":"VariableDeclaration","scope":3973,"src":"777:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3970,"name":"address","nodeType":"ElementaryTypeName","src":"777:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"776:17:18"},"src":"764:30:18"},{"anonymous":false,"documentation":{"id":3974,"nodeType":"StructuredDocumentation","src":"800:70:18","text":" @dev Emitted when the pause is lifted by `account`."},"eventSelector":"5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa","id":3978,"name":"Unpaused","nameLocation":"881:8:18","nodeType":"EventDefinition","parameters":{"id":3977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3976,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"898:7:18","nodeType":"VariableDeclaration","scope":3978,"src":"890:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3975,"name":"address","nodeType":"ElementaryTypeName","src":"890:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"889:17:18"},"src":"875:32:18"},{"documentation":{"id":3979,"nodeType":"StructuredDocumentation","src":"913:76:18","text":" @dev The operation failed because the contract is paused."},"errorSelector":"d93c0665","id":3981,"name":"EnforcedPause","nameLocation":"1000:13:18","nodeType":"ErrorDefinition","parameters":{"id":3980,"nodeType":"ParameterList","parameters":[],"src":"1013:2:18"},"src":"994:22:18"},{"documentation":{"id":3982,"nodeType":"StructuredDocumentation","src":"1022:80:18","text":" @dev The operation failed because the contract is not paused."},"errorSelector":"8dfc202b","id":3984,"name":"ExpectedPause","nameLocation":"1113:13:18","nodeType":"ErrorDefinition","parameters":{"id":3983,"nodeType":"ParameterList","parameters":[],"src":"1126:2:18"},"src":"1107:22:18"},{"body":{"id":3991,"nodeType":"Block","src":"1340:47:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3987,"name":"_requireNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4021,"src":"1350:17:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1350:19:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3989,"nodeType":"ExpressionStatement","src":"1350:19:18"},{"id":3990,"nodeType":"PlaceholderStatement","src":"1379:1:18"}]},"documentation":{"id":3985,"nodeType":"StructuredDocumentation","src":"1135:175:18","text":" @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."},"id":3992,"name":"whenNotPaused","nameLocation":"1324:13:18","nodeType":"ModifierDefinition","parameters":{"id":3986,"nodeType":"ParameterList","parameters":[],"src":"1337:2:18"},"src":"1315:72:18","virtual":false,"visibility":"internal"},{"body":{"id":3999,"nodeType":"Block","src":"1587:44:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3995,"name":"_requirePaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4034,"src":"1597:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1597:16:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3997,"nodeType":"ExpressionStatement","src":"1597:16:18"},{"id":3998,"nodeType":"PlaceholderStatement","src":"1623:1:18"}]},"documentation":{"id":3993,"nodeType":"StructuredDocumentation","src":"1393:167:18","text":" @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."},"id":4000,"name":"whenPaused","nameLocation":"1574:10:18","nodeType":"ModifierDefinition","parameters":{"id":3994,"nodeType":"ParameterList","parameters":[],"src":"1584:2:18"},"src":"1565:66:18","virtual":false,"visibility":"internal"},{"body":{"id":4008,"nodeType":"Block","src":"1779:31:18","statements":[{"expression":{"id":4006,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3968,"src":"1796:7:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4005,"id":4007,"nodeType":"Return","src":"1789:14:18"}]},"documentation":{"id":4001,"nodeType":"StructuredDocumentation","src":"1637:84:18","text":" @dev Returns true if the contract is paused, and false otherwise."},"functionSelector":"5c975abb","id":4009,"implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"1735:6:18","nodeType":"FunctionDefinition","parameters":{"id":4002,"nodeType":"ParameterList","parameters":[],"src":"1741:2:18"},"returnParameters":{"id":4005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4004,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4009,"src":"1773:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4003,"name":"bool","nodeType":"ElementaryTypeName","src":"1773:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1772:6:18"},"scope":4067,"src":"1726:84:18","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4020,"nodeType":"Block","src":"1929:77:18","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":4013,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4009,"src":"1943:6:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1943:8:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4019,"nodeType":"IfStatement","src":"1939:61:18","trueBody":{"id":4018,"nodeType":"Block","src":"1953:47:18","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4015,"name":"EnforcedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"1974:13:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1974:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4017,"nodeType":"RevertStatement","src":"1967:22:18"}]}}]},"documentation":{"id":4010,"nodeType":"StructuredDocumentation","src":"1816:57:18","text":" @dev Throws if the contract is paused."},"id":4021,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNotPaused","nameLocation":"1887:17:18","nodeType":"FunctionDefinition","parameters":{"id":4011,"nodeType":"ParameterList","parameters":[],"src":"1904:2:18"},"returnParameters":{"id":4012,"nodeType":"ParameterList","parameters":[],"src":"1929:0:18"},"scope":4067,"src":"1878:128:18","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4033,"nodeType":"Block","src":"2126:78:18","statements":[{"condition":{"id":4027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2140:9:18","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4025,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4009,"src":"2141:6:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2141:8:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4032,"nodeType":"IfStatement","src":"2136:62:18","trueBody":{"id":4031,"nodeType":"Block","src":"2151:47:18","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4028,"name":"ExpectedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3984,"src":"2172:13:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2172:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4030,"nodeType":"RevertStatement","src":"2165:22:18"}]}}]},"documentation":{"id":4022,"nodeType":"StructuredDocumentation","src":"2012:61:18","text":" @dev Throws if the contract is not paused."},"id":4034,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePaused","nameLocation":"2087:14:18","nodeType":"FunctionDefinition","parameters":{"id":4023,"nodeType":"ParameterList","parameters":[],"src":"2101:2:18"},"returnParameters":{"id":4024,"nodeType":"ParameterList","parameters":[],"src":"2126:0:18"},"scope":4067,"src":"2078:126:18","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4049,"nodeType":"Block","src":"2388:66:18","statements":[{"expression":{"id":4042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4040,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3968,"src":"2398:7:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":4041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2408:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2398:14:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4043,"nodeType":"ExpressionStatement","src":"2398:14:18"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"2434:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2434:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4044,"name":"Paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3973,"src":"2427:6:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2427:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4048,"nodeType":"EmitStatement","src":"2422:25:18"}]},"documentation":{"id":4035,"nodeType":"StructuredDocumentation","src":"2210:124:18","text":" @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."},"id":4050,"implemented":true,"kind":"function","modifiers":[{"id":4038,"kind":"modifierInvocation","modifierName":{"id":4037,"name":"whenNotPaused","nameLocations":["2374:13:18"],"nodeType":"IdentifierPath","referencedDeclaration":3992,"src":"2374:13:18"},"nodeType":"ModifierInvocation","src":"2374:13:18"}],"name":"_pause","nameLocation":"2348:6:18","nodeType":"FunctionDefinition","parameters":{"id":4036,"nodeType":"ParameterList","parameters":[],"src":"2354:2:18"},"returnParameters":{"id":4039,"nodeType":"ParameterList","parameters":[],"src":"2388:0:18"},"scope":4067,"src":"2339:115:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4065,"nodeType":"Block","src":"2634:69:18","statements":[{"expression":{"id":4058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4056,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3968,"src":"2644:7:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":4057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2654:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2644:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4059,"nodeType":"ExpressionStatement","src":"2644:15:18"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4061,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"2683:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2683:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4060,"name":"Unpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3978,"src":"2674:8:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2674:22:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4064,"nodeType":"EmitStatement","src":"2669:27:18"}]},"documentation":{"id":4051,"nodeType":"StructuredDocumentation","src":"2460:121:18","text":" @dev Returns to normal state.\n Requirements:\n - The contract must be paused."},"id":4066,"implemented":true,"kind":"function","modifiers":[{"id":4054,"kind":"modifierInvocation","modifierName":{"id":4053,"name":"whenPaused","nameLocations":["2623:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":4000,"src":"2623:10:18"},"nodeType":"ModifierInvocation","src":"2623:10:18"}],"name":"_unpause","nameLocation":"2595:8:18","nodeType":"FunctionDefinition","parameters":{"id":4052,"nodeType":"ParameterList","parameters":[],"src":"2603:2:18"},"returnParameters":{"id":4055,"nodeType":"ParameterList","parameters":[],"src":"2634:0:18"},"scope":4067,"src":"2586:117:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4068,"src":"615:2090:18","usedErrors":[3981,3984],"usedEvents":[3973,3978]}],"src":"102:2604:18"},"id":18},"@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[4180],"StorageSlot":[4304]},"id":4181,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4069,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:19"},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"./StorageSlot.sol","id":4071,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4181,"sourceUnit":4305,"src":"135:46:19","symbolAliases":[{"foreign":{"id":4070,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4304,"src":"143:11:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuard","contractDependencies":[],"contractKind":"contract","documentation":{"id":4072,"nodeType":"StructuredDocumentation","src":"183:1066:19","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n consider using {ReentrancyGuardTransient} instead.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n IMPORTANT: Deprecated. This storage-based reentrancy guard will be removed and replaced\n by the {ReentrancyGuardTransient} variant in v6.0.\n @custom:stateless"},"fullyImplemented":true,"id":4180,"linearizedBaseContracts":[4180],"name":"ReentrancyGuard","nameLocation":"1268:15:19","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4075,"libraryName":{"id":4073,"name":"StorageSlot","nameLocations":["1296:11:19"],"nodeType":"IdentifierPath","referencedDeclaration":4304,"src":"1296:11:19"},"nodeType":"UsingForDirective","src":"1290:30:19","typeName":{"id":4074,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1312:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"constant":true,"id":4078,"mutability":"constant","name":"REENTRANCY_GUARD_STORAGE","nameLocation":"1470:24:19","nodeType":"VariableDeclaration","scope":4180,"src":"1445:126:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4076,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1445:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":4077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1505:66:19","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"constant":true,"id":4081,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"2351:11:19","nodeType":"VariableDeclaration","scope":4180,"src":"2326:40:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4079,"name":"uint256","nodeType":"ElementaryTypeName","src":"2326:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":4080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2365:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":4084,"mutability":"constant","name":"ENTERED","nameLocation":"2397:7:19","nodeType":"VariableDeclaration","scope":4180,"src":"2372:36:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4082,"name":"uint256","nodeType":"ElementaryTypeName","src":"2372:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":4083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2407:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"documentation":{"id":4085,"nodeType":"StructuredDocumentation","src":"2415:52:19","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":4087,"name":"ReentrancyGuardReentrantCall","nameLocation":"2478:28:19","nodeType":"ErrorDefinition","parameters":{"id":4086,"nodeType":"ParameterList","parameters":[],"src":"2506:2:19"},"src":"2472:37:19"},{"body":{"id":4098,"nodeType":"Block","src":"2529:83:19","statements":[{"expression":{"id":4096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4090,"name":"_reentrancyGuardStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4179,"src":"2539:27:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":4091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2539:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2569:14:19","memberName":"getUint256Slot","nodeType":"MemberAccess","referencedDeclaration":4248,"src":"2539:44:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Uint256Slot_$4195_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":4093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2539:46:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4195_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":4094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2586:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4194,"src":"2539:52:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4095,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4081,"src":"2594:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2539:66:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4097,"nodeType":"ExpressionStatement","src":"2539:66:19"}]},"id":4099,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4088,"nodeType":"ParameterList","parameters":[],"src":"2526:2:19"},"returnParameters":{"id":4089,"nodeType":"ParameterList","parameters":[],"src":"2529:0:19"},"scope":4180,"src":"2515:97:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4109,"nodeType":"Block","src":"3013:79:19","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4102,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4144,"src":"3023:19:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3023:21:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4104,"nodeType":"ExpressionStatement","src":"3023:21:19"},{"id":4105,"nodeType":"PlaceholderStatement","src":"3054:1:19"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4106,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"3065:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3065:20:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4108,"nodeType":"ExpressionStatement","src":"3065:20:19"}]},"documentation":{"id":4100,"nodeType":"StructuredDocumentation","src":"2618:366:19","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":4110,"name":"nonReentrant","nameLocation":"2998:12:19","nodeType":"ModifierDefinition","parameters":{"id":4101,"nodeType":"ParameterList","parameters":[],"src":"3010:2:19"},"src":"2989:103:19","virtual":false,"visibility":"internal"},{"body":{"id":4117,"nodeType":"Block","src":"3527:53:19","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4113,"name":"_nonReentrantBeforeView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"3537:23:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4115,"nodeType":"ExpressionStatement","src":"3537:25:19"},{"id":4116,"nodeType":"PlaceholderStatement","src":"3572:1:19"}]},"documentation":{"id":4111,"nodeType":"StructuredDocumentation","src":"3098:396:19","text":" @dev A `view` only version of {nonReentrant}. Use to block view functions\n from being called, preventing reading from inconsistent contract state.\n CAUTION: This is a \"view\" modifier and does not change the reentrancy\n status. Use it only on view functions. For payable or non-payable functions,\n use the standard {nonReentrant} modifier instead."},"id":4118,"name":"nonReentrantView","nameLocation":"3508:16:19","nodeType":"ModifierDefinition","parameters":{"id":4112,"nodeType":"ParameterList","parameters":[],"src":"3524:2:19"},"src":"3499:81:19","virtual":false,"visibility":"internal"},{"body":{"id":4128,"nodeType":"Block","src":"3634:109:19","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":4121,"name":"_reentrancyGuardEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"3648:23:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3648:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4127,"nodeType":"IfStatement","src":"3644:93:19","trueBody":{"id":4126,"nodeType":"Block","src":"3675:62:19","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4123,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"3696:28:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3696:30:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4125,"nodeType":"RevertStatement","src":"3689:37:19"}]}}]},"id":4129,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBeforeView","nameLocation":"3595:23:19","nodeType":"FunctionDefinition","parameters":{"id":4119,"nodeType":"ParameterList","parameters":[],"src":"3618:2:19"},"returnParameters":{"id":4120,"nodeType":"ParameterList","parameters":[],"src":"3634:0:19"},"scope":4180,"src":"3586:157:19","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4143,"nodeType":"Block","src":"3788:253:19","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4132,"name":"_nonReentrantBeforeView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"3872:23:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3872:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4134,"nodeType":"ExpressionStatement","src":"3872:25:19"},{"expression":{"id":4141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4135,"name":"_reentrancyGuardStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4179,"src":"3972:27:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":4136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3972:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4002:14:19","memberName":"getUint256Slot","nodeType":"MemberAccess","referencedDeclaration":4248,"src":"3972:44:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Uint256Slot_$4195_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":4138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3972:46:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4195_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":4139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4019:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4194,"src":"3972:52:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4140,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4084,"src":"4027:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3972:62:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4142,"nodeType":"ExpressionStatement","src":"3972:62:19"}]},"id":4144,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"3758:19:19","nodeType":"FunctionDefinition","parameters":{"id":4130,"nodeType":"ParameterList","parameters":[],"src":"3777:2:19"},"returnParameters":{"id":4131,"nodeType":"ParameterList","parameters":[],"src":"3788:0:19"},"scope":4180,"src":"3749:292:19","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":4155,"nodeType":"Block","src":"4085:215:19","statements":[{"expression":{"id":4153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4147,"name":"_reentrancyGuardStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4179,"src":"4227:27:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":4148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4227:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4257:14:19","memberName":"getUint256Slot","nodeType":"MemberAccess","referencedDeclaration":4248,"src":"4227:44:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Uint256Slot_$4195_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":4150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4227:46:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4195_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":4151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4274:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4194,"src":"4227:52:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4152,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4081,"src":"4282:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4227:66:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4154,"nodeType":"ExpressionStatement","src":"4227:66:19"}]},"id":4156,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"4056:18:19","nodeType":"FunctionDefinition","parameters":{"id":4145,"nodeType":"ParameterList","parameters":[],"src":"4074:2:19"},"returnParameters":{"id":4146,"nodeType":"ParameterList","parameters":[],"src":"4085:0:19"},"scope":4180,"src":"4047:253:19","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":4170,"nodeType":"Block","src":"4543:87:19","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4162,"name":"_reentrancyGuardStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4179,"src":"4560:27:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":4163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4560:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4590:14:19","memberName":"getUint256Slot","nodeType":"MemberAccess","referencedDeclaration":4248,"src":"4560:44:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Uint256Slot_$4195_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":4165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4560:46:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4195_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":4166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4607:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4194,"src":"4560:52:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4167,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4084,"src":"4616:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4560:63:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4161,"id":4169,"nodeType":"Return","src":"4553:70:19"}]},"documentation":{"id":4157,"nodeType":"StructuredDocumentation","src":"4306:168:19","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":4171,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"4488:23:19","nodeType":"FunctionDefinition","parameters":{"id":4158,"nodeType":"ParameterList","parameters":[],"src":"4511:2:19"},"returnParameters":{"id":4161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4160,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4171,"src":"4537:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4159,"name":"bool","nodeType":"ElementaryTypeName","src":"4537:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4536:6:19"},"scope":4180,"src":"4479:151:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4178,"nodeType":"Block","src":"4715:48:19","statements":[{"expression":{"id":4176,"name":"REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4078,"src":"4732:24:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4175,"id":4177,"nodeType":"Return","src":"4725:31:19"}]},"id":4179,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardStorageSlot","nameLocation":"4645:27:19","nodeType":"FunctionDefinition","parameters":{"id":4172,"nodeType":"ParameterList","parameters":[],"src":"4672:2:19"},"returnParameters":{"id":4175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4174,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4179,"src":"4706:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4173,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4706:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4705:9:19"},"scope":4180,"src":"4636:127:19","stateMutability":"pure","virtual":true,"visibility":"internal"}],"scope":4181,"src":"1250:3515:19","usedErrors":[4087],"usedEvents":[]}],"src":"109:4657:19"},"id":19},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[4304]},"id":4305,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4182,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:20"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":4183,"nodeType":"StructuredDocumentation","src":"219:1187:20","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":4304,"linearizedBaseContracts":[4304],"name":"StorageSlot","nameLocation":"1415:11:20","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":4186,"members":[{"constant":false,"id":4185,"mutability":"mutable","name":"value","nameLocation":"1470:5:20","nodeType":"VariableDeclaration","scope":4186,"src":"1462:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4184,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:20","nodeType":"StructDefinition","scope":4304,"src":"1433:49:20","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":4189,"members":[{"constant":false,"id":4188,"mutability":"mutable","name":"value","nameLocation":"1522:5:20","nodeType":"VariableDeclaration","scope":4189,"src":"1517:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4187,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:20","nodeType":"StructDefinition","scope":4304,"src":"1488:46:20","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":4192,"members":[{"constant":false,"id":4191,"mutability":"mutable","name":"value","nameLocation":"1577:5:20","nodeType":"VariableDeclaration","scope":4192,"src":"1569:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4190,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:20","nodeType":"StructDefinition","scope":4304,"src":"1540:49:20","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":4195,"members":[{"constant":false,"id":4194,"mutability":"mutable","name":"value","nameLocation":"1632:5:20","nodeType":"VariableDeclaration","scope":4195,"src":"1624:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4193,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:20","nodeType":"StructDefinition","scope":4304,"src":"1595:49:20","visibility":"public"},{"canonicalName":"StorageSlot.Int256Slot","id":4198,"members":[{"constant":false,"id":4197,"mutability":"mutable","name":"value","nameLocation":"1685:5:20","nodeType":"VariableDeclaration","scope":4198,"src":"1678:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4196,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:20","nodeType":"StructDefinition","scope":4304,"src":"1650:47:20","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":4201,"members":[{"constant":false,"id":4200,"mutability":"mutable","name":"value","nameLocation":"1738:5:20","nodeType":"VariableDeclaration","scope":4201,"src":"1731:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":4199,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:20","nodeType":"StructDefinition","scope":4304,"src":"1703:47:20","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":4204,"members":[{"constant":false,"id":4203,"mutability":"mutable","name":"value","nameLocation":"1789:5:20","nodeType":"VariableDeclaration","scope":4204,"src":"1783:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4202,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:20","nodeType":"StructDefinition","scope":4304,"src":"1756:45:20","visibility":"public"},{"body":{"id":4214,"nodeType":"Block","src":"1983:79:20","statements":[{"AST":{"nativeSrc":"2018:38:20","nodeType":"YulBlock","src":"2018:38:20","statements":[{"nativeSrc":"2032:14:20","nodeType":"YulAssignment","src":"2032:14:20","value":{"name":"slot","nativeSrc":"2042:4:20","nodeType":"YulIdentifier","src":"2042:4:20"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:20","nodeType":"YulIdentifier","src":"2032:6:20"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4211,"isOffset":false,"isSlot":true,"src":"2032:6:20","suffix":"slot","valueSize":1},{"declaration":4207,"isOffset":false,"isSlot":false,"src":"2042:4:20","valueSize":1}],"flags":["memory-safe"],"id":4213,"nodeType":"InlineAssembly","src":"1993:63:20"}]},"documentation":{"id":4205,"nodeType":"StructuredDocumentation","src":"1807:87:20","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":4215,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:20","nodeType":"FunctionDefinition","parameters":{"id":4208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4207,"mutability":"mutable","name":"slot","nameLocation":"1931:4:20","nodeType":"VariableDeclaration","scope":4215,"src":"1923:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4206,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:20"},"returnParameters":{"id":4212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4211,"mutability":"mutable","name":"r","nameLocation":"1980:1:20","nodeType":"VariableDeclaration","scope":4215,"src":"1960:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$4186_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":4210,"nodeType":"UserDefinedTypeName","pathNode":{"id":4209,"name":"AddressSlot","nameLocations":["1960:11:20"],"nodeType":"IdentifierPath","referencedDeclaration":4186,"src":"1960:11:20"},"referencedDeclaration":4186,"src":"1960:11:20","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$4186_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:20"},"scope":4304,"src":"1899:163:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4225,"nodeType":"Block","src":"2243:79:20","statements":[{"AST":{"nativeSrc":"2278:38:20","nodeType":"YulBlock","src":"2278:38:20","statements":[{"nativeSrc":"2292:14:20","nodeType":"YulAssignment","src":"2292:14:20","value":{"name":"slot","nativeSrc":"2302:4:20","nodeType":"YulIdentifier","src":"2302:4:20"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:20","nodeType":"YulIdentifier","src":"2292:6:20"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4222,"isOffset":false,"isSlot":true,"src":"2292:6:20","suffix":"slot","valueSize":1},{"declaration":4218,"isOffset":false,"isSlot":false,"src":"2302:4:20","valueSize":1}],"flags":["memory-safe"],"id":4224,"nodeType":"InlineAssembly","src":"2253:63:20"}]},"documentation":{"id":4216,"nodeType":"StructuredDocumentation","src":"2068:86:20","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"id":4226,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:20","nodeType":"FunctionDefinition","parameters":{"id":4219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4218,"mutability":"mutable","name":"slot","nameLocation":"2191:4:20","nodeType":"VariableDeclaration","scope":4226,"src":"2183:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:20"},"returnParameters":{"id":4223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4222,"mutability":"mutable","name":"r","nameLocation":"2240:1:20","nodeType":"VariableDeclaration","scope":4226,"src":"2220:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$4189_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":4221,"nodeType":"UserDefinedTypeName","pathNode":{"id":4220,"name":"BooleanSlot","nameLocations":["2220:11:20"],"nodeType":"IdentifierPath","referencedDeclaration":4189,"src":"2220:11:20"},"referencedDeclaration":4189,"src":"2220:11:20","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$4189_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:20"},"scope":4304,"src":"2159:163:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4236,"nodeType":"Block","src":"2503:79:20","statements":[{"AST":{"nativeSrc":"2538:38:20","nodeType":"YulBlock","src":"2538:38:20","statements":[{"nativeSrc":"2552:14:20","nodeType":"YulAssignment","src":"2552:14:20","value":{"name":"slot","nativeSrc":"2562:4:20","nodeType":"YulIdentifier","src":"2562:4:20"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:20","nodeType":"YulIdentifier","src":"2552:6:20"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4233,"isOffset":false,"isSlot":true,"src":"2552:6:20","suffix":"slot","valueSize":1},{"declaration":4229,"isOffset":false,"isSlot":false,"src":"2562:4:20","valueSize":1}],"flags":["memory-safe"],"id":4235,"nodeType":"InlineAssembly","src":"2513:63:20"}]},"documentation":{"id":4227,"nodeType":"StructuredDocumentation","src":"2328:86:20","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"id":4237,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:20","nodeType":"FunctionDefinition","parameters":{"id":4230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4229,"mutability":"mutable","name":"slot","nameLocation":"2451:4:20","nodeType":"VariableDeclaration","scope":4237,"src":"2443:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4228,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:20"},"returnParameters":{"id":4234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4233,"mutability":"mutable","name":"r","nameLocation":"2500:1:20","nodeType":"VariableDeclaration","scope":4237,"src":"2480:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$4192_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":4232,"nodeType":"UserDefinedTypeName","pathNode":{"id":4231,"name":"Bytes32Slot","nameLocations":["2480:11:20"],"nodeType":"IdentifierPath","referencedDeclaration":4192,"src":"2480:11:20"},"referencedDeclaration":4192,"src":"2480:11:20","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$4192_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:20"},"scope":4304,"src":"2419:163:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4247,"nodeType":"Block","src":"2763:79:20","statements":[{"AST":{"nativeSrc":"2798:38:20","nodeType":"YulBlock","src":"2798:38:20","statements":[{"nativeSrc":"2812:14:20","nodeType":"YulAssignment","src":"2812:14:20","value":{"name":"slot","nativeSrc":"2822:4:20","nodeType":"YulIdentifier","src":"2822:4:20"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:20","nodeType":"YulIdentifier","src":"2812:6:20"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4244,"isOffset":false,"isSlot":true,"src":"2812:6:20","suffix":"slot","valueSize":1},{"declaration":4240,"isOffset":false,"isSlot":false,"src":"2822:4:20","valueSize":1}],"flags":["memory-safe"],"id":4246,"nodeType":"InlineAssembly","src":"2773:63:20"}]},"documentation":{"id":4238,"nodeType":"StructuredDocumentation","src":"2588:86:20","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"id":4248,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:20","nodeType":"FunctionDefinition","parameters":{"id":4241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4240,"mutability":"mutable","name":"slot","nameLocation":"2711:4:20","nodeType":"VariableDeclaration","scope":4248,"src":"2703:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4239,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:20"},"returnParameters":{"id":4245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4244,"mutability":"mutable","name":"r","nameLocation":"2760:1:20","nodeType":"VariableDeclaration","scope":4248,"src":"2740:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4195_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":4243,"nodeType":"UserDefinedTypeName","pathNode":{"id":4242,"name":"Uint256Slot","nameLocations":["2740:11:20"],"nodeType":"IdentifierPath","referencedDeclaration":4195,"src":"2740:11:20"},"referencedDeclaration":4195,"src":"2740:11:20","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4195_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:20"},"scope":4304,"src":"2679:163:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4258,"nodeType":"Block","src":"3020:79:20","statements":[{"AST":{"nativeSrc":"3055:38:20","nodeType":"YulBlock","src":"3055:38:20","statements":[{"nativeSrc":"3069:14:20","nodeType":"YulAssignment","src":"3069:14:20","value":{"name":"slot","nativeSrc":"3079:4:20","nodeType":"YulIdentifier","src":"3079:4:20"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:20","nodeType":"YulIdentifier","src":"3069:6:20"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4255,"isOffset":false,"isSlot":true,"src":"3069:6:20","suffix":"slot","valueSize":1},{"declaration":4251,"isOffset":false,"isSlot":false,"src":"3079:4:20","valueSize":1}],"flags":["memory-safe"],"id":4257,"nodeType":"InlineAssembly","src":"3030:63:20"}]},"documentation":{"id":4249,"nodeType":"StructuredDocumentation","src":"2848:85:20","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"id":4259,"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:20","nodeType":"FunctionDefinition","parameters":{"id":4252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4251,"mutability":"mutable","name":"slot","nameLocation":"2969:4:20","nodeType":"VariableDeclaration","scope":4259,"src":"2961:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4250,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:20"},"returnParameters":{"id":4256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4255,"mutability":"mutable","name":"r","nameLocation":"3017:1:20","nodeType":"VariableDeclaration","scope":4259,"src":"2998:20:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$4198_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":4254,"nodeType":"UserDefinedTypeName","pathNode":{"id":4253,"name":"Int256Slot","nameLocations":["2998:10:20"],"nodeType":"IdentifierPath","referencedDeclaration":4198,"src":"2998:10:20"},"referencedDeclaration":4198,"src":"2998:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$4198_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:20"},"scope":4304,"src":"2938:161:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4269,"nodeType":"Block","src":"3277:79:20","statements":[{"AST":{"nativeSrc":"3312:38:20","nodeType":"YulBlock","src":"3312:38:20","statements":[{"nativeSrc":"3326:14:20","nodeType":"YulAssignment","src":"3326:14:20","value":{"name":"slot","nativeSrc":"3336:4:20","nodeType":"YulIdentifier","src":"3336:4:20"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:20","nodeType":"YulIdentifier","src":"3326:6:20"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4266,"isOffset":false,"isSlot":true,"src":"3326:6:20","suffix":"slot","valueSize":1},{"declaration":4262,"isOffset":false,"isSlot":false,"src":"3336:4:20","valueSize":1}],"flags":["memory-safe"],"id":4268,"nodeType":"InlineAssembly","src":"3287:63:20"}]},"documentation":{"id":4260,"nodeType":"StructuredDocumentation","src":"3105:85:20","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"id":4270,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:20","nodeType":"FunctionDefinition","parameters":{"id":4263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4262,"mutability":"mutable","name":"slot","nameLocation":"3226:4:20","nodeType":"VariableDeclaration","scope":4270,"src":"3218:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4261,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:20"},"returnParameters":{"id":4267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4266,"mutability":"mutable","name":"r","nameLocation":"3274:1:20","nodeType":"VariableDeclaration","scope":4270,"src":"3255:20:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$4201_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":4265,"nodeType":"UserDefinedTypeName","pathNode":{"id":4264,"name":"StringSlot","nameLocations":["3255:10:20"],"nodeType":"IdentifierPath","referencedDeclaration":4201,"src":"3255:10:20"},"referencedDeclaration":4201,"src":"3255:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$4201_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:20"},"scope":4304,"src":"3195:161:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4280,"nodeType":"Block","src":"3558:85:20","statements":[{"AST":{"nativeSrc":"3593:44:20","nodeType":"YulBlock","src":"3593:44:20","statements":[{"nativeSrc":"3607:20:20","nodeType":"YulAssignment","src":"3607:20:20","value":{"name":"store.slot","nativeSrc":"3617:10:20","nodeType":"YulIdentifier","src":"3617:10:20"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:20","nodeType":"YulIdentifier","src":"3607:6:20"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4277,"isOffset":false,"isSlot":true,"src":"3607:6:20","suffix":"slot","valueSize":1},{"declaration":4273,"isOffset":false,"isSlot":true,"src":"3617:10:20","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":4279,"nodeType":"InlineAssembly","src":"3568:69:20"}]},"documentation":{"id":4271,"nodeType":"StructuredDocumentation","src":"3362:101:20","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":4281,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:20","nodeType":"FunctionDefinition","parameters":{"id":4274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4273,"mutability":"mutable","name":"store","nameLocation":"3506:5:20","nodeType":"VariableDeclaration","scope":4281,"src":"3491:20:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":4272,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:20"},"returnParameters":{"id":4278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4277,"mutability":"mutable","name":"r","nameLocation":"3555:1:20","nodeType":"VariableDeclaration","scope":4281,"src":"3536:20:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$4201_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":4276,"nodeType":"UserDefinedTypeName","pathNode":{"id":4275,"name":"StringSlot","nameLocations":["3536:10:20"],"nodeType":"IdentifierPath","referencedDeclaration":4201,"src":"3536:10:20"},"referencedDeclaration":4201,"src":"3536:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$4201_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:20"},"scope":4304,"src":"3468:175:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4291,"nodeType":"Block","src":"3818:79:20","statements":[{"AST":{"nativeSrc":"3853:38:20","nodeType":"YulBlock","src":"3853:38:20","statements":[{"nativeSrc":"3867:14:20","nodeType":"YulAssignment","src":"3867:14:20","value":{"name":"slot","nativeSrc":"3877:4:20","nodeType":"YulIdentifier","src":"3877:4:20"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:20","nodeType":"YulIdentifier","src":"3867:6:20"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4288,"isOffset":false,"isSlot":true,"src":"3867:6:20","suffix":"slot","valueSize":1},{"declaration":4284,"isOffset":false,"isSlot":false,"src":"3877:4:20","valueSize":1}],"flags":["memory-safe"],"id":4290,"nodeType":"InlineAssembly","src":"3828:63:20"}]},"documentation":{"id":4282,"nodeType":"StructuredDocumentation","src":"3649:84:20","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"id":4292,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:20","nodeType":"FunctionDefinition","parameters":{"id":4285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4284,"mutability":"mutable","name":"slot","nameLocation":"3768:4:20","nodeType":"VariableDeclaration","scope":4292,"src":"3760:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4283,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:20"},"returnParameters":{"id":4289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4288,"mutability":"mutable","name":"r","nameLocation":"3815:1:20","nodeType":"VariableDeclaration","scope":4292,"src":"3797:19:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$4204_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":4287,"nodeType":"UserDefinedTypeName","pathNode":{"id":4286,"name":"BytesSlot","nameLocations":["3797:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":4204,"src":"3797:9:20"},"referencedDeclaration":4204,"src":"3797:9:20","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$4204_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:20"},"scope":4304,"src":"3738:159:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4302,"nodeType":"Block","src":"4094:85:20","statements":[{"AST":{"nativeSrc":"4129:44:20","nodeType":"YulBlock","src":"4129:44:20","statements":[{"nativeSrc":"4143:20:20","nodeType":"YulAssignment","src":"4143:20:20","value":{"name":"store.slot","nativeSrc":"4153:10:20","nodeType":"YulIdentifier","src":"4153:10:20"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:20","nodeType":"YulIdentifier","src":"4143:6:20"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4299,"isOffset":false,"isSlot":true,"src":"4143:6:20","suffix":"slot","valueSize":1},{"declaration":4295,"isOffset":false,"isSlot":true,"src":"4153:10:20","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":4301,"nodeType":"InlineAssembly","src":"4104:69:20"}]},"documentation":{"id":4293,"nodeType":"StructuredDocumentation","src":"3903:99:20","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":4303,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:20","nodeType":"FunctionDefinition","parameters":{"id":4296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4295,"mutability":"mutable","name":"store","nameLocation":"4043:5:20","nodeType":"VariableDeclaration","scope":4303,"src":"4029:19:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4294,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:20"},"returnParameters":{"id":4300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4299,"mutability":"mutable","name":"r","nameLocation":"4091:1:20","nodeType":"VariableDeclaration","scope":4303,"src":"4073:19:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$4204_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":4298,"nodeType":"UserDefinedTypeName","pathNode":{"id":4297,"name":"BytesSlot","nameLocations":["4073:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":4204,"src":"4073:9:20"},"referencedDeclaration":4204,"src":"4073:9:20","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$4204_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:20"},"scope":4304,"src":"4007:172:20","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4305,"src":"1407:2774:20","usedErrors":[],"usedEvents":[]}],"src":"193:3989:20"},"id":20},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Bytes":[3877],"Math":[7507],"SafeCast":[9272],"SignedMath":[9416],"Strings":[5814]},"id":5815,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4306,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"101:24:21"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":4308,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5815,"sourceUnit":7508,"src":"127:37:21","symbolAliases":[{"foreign":{"id":4307,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"135:4:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./math/SafeCast.sol","id":4310,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5815,"sourceUnit":9273,"src":"165:45:21","symbolAliases":[{"foreign":{"id":4309,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"173:8:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":4312,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5815,"sourceUnit":9417,"src":"211:49:21","symbolAliases":[{"foreign":{"id":4311,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9416,"src":"219:10:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Bytes.sol","file":"./Bytes.sol","id":4314,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5815,"sourceUnit":3878,"src":"261:34:21","symbolAliases":[{"foreign":{"id":4313,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"269:5:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":4315,"nodeType":"StructuredDocumentation","src":"297:34:21","text":" @dev String operations."},"fullyImplemented":true,"id":5814,"linearizedBaseContracts":[5814],"name":"Strings","nameLocation":"340:7:21","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4317,"libraryName":{"id":4316,"name":"SafeCast","nameLocations":["360:8:21"],"nodeType":"IdentifierPath","referencedDeclaration":9272,"src":"360:8:21"},"nodeType":"UsingForDirective","src":"354:21:21"},{"constant":true,"id":4320,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"406:10:21","nodeType":"VariableDeclaration","scope":5814,"src":"381:56:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":4318,"name":"bytes16","nodeType":"ElementaryTypeName","src":"381:7:21","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":4319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"419:18:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":4323,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"466:14:21","nodeType":"VariableDeclaration","scope":5814,"src":"443:42:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4321,"name":"uint8","nodeType":"ElementaryTypeName","src":"443:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":4322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"483:2:21","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"constant":true,"id":4336,"mutability":"constant","name":"SPECIAL_CHARS_LOOKUP","nameLocation":"516:20:21","nodeType":"VariableDeclaration","scope":5814,"src":"491:210:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4324,"name":"uint256","nodeType":"ElementaryTypeName","src":"491:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_4951760157141521121071333375_by_1","typeString":"int_const 4951760157141521121071333375"},"id":4335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_21474836479_by_1","typeString":"int_const 21474836479"},"id":4330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"30786666666666666666","id":4325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"547:10:21","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"},"id":4328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"649:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783232","id":4327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"654:4:21","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"649:9:21","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}}],"id":4329,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"648:11:21","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}},"src":"547:112:21","typeDescriptions":{"typeIdentifier":"t_rational_21474836479_by_1","typeString":"int_const 21474836479"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"},"id":4333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"691:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783563","id":4332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"696:4:21","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"691:9:21","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}}],"id":4334,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"690:11:21","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}},"src":"547:154:21","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521121071333375_by_1","typeString":"int_const 4951760157141521121071333375"}},"visibility":"private"},{"documentation":{"id":4337,"nodeType":"StructuredDocumentation","src":"721:81:21","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","id":4343,"name":"StringsInsufficientHexLength","nameLocation":"813:28:21","nodeType":"ErrorDefinition","parameters":{"id":4342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4339,"mutability":"mutable","name":"value","nameLocation":"850:5:21","nodeType":"VariableDeclaration","scope":4343,"src":"842:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4338,"name":"uint256","nodeType":"ElementaryTypeName","src":"842:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4341,"mutability":"mutable","name":"length","nameLocation":"865:6:21","nodeType":"VariableDeclaration","scope":4343,"src":"857:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4340,"name":"uint256","nodeType":"ElementaryTypeName","src":"857:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"841:31:21"},"src":"807:66:21"},{"documentation":{"id":4344,"nodeType":"StructuredDocumentation","src":"879:108:21","text":" @dev The string being parsed contains characters that are not in scope of the given base."},"errorSelector":"94e2737e","id":4346,"name":"StringsInvalidChar","nameLocation":"998:18:21","nodeType":"ErrorDefinition","parameters":{"id":4345,"nodeType":"ParameterList","parameters":[],"src":"1016:2:21"},"src":"992:27:21"},{"documentation":{"id":4347,"nodeType":"StructuredDocumentation","src":"1025:84:21","text":" @dev The string being parsed is not a properly formatted address."},"errorSelector":"1d15ae44","id":4349,"name":"StringsInvalidAddressFormat","nameLocation":"1120:27:21","nodeType":"ErrorDefinition","parameters":{"id":4348,"nodeType":"ParameterList","parameters":[],"src":"1147:2:21"},"src":"1114:36:21"},{"body":{"id":4396,"nodeType":"Block","src":"1322:563:21","statements":[{"id":4395,"nodeType":"UncheckedBlock","src":"1332:547:21","statements":[{"assignments":[4358],"declarations":[{"constant":false,"id":4358,"mutability":"mutable","name":"length","nameLocation":"1364:6:21","nodeType":"VariableDeclaration","scope":4395,"src":"1356:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4357,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4365,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4361,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"1384:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4359,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"1373:4:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":4360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1378:5:21","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":7318,"src":"1373:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:17:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1393:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1373:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1356:38:21"},{"assignments":[4367],"declarations":[{"constant":false,"id":4367,"mutability":"mutable","name":"buffer","nameLocation":"1422:6:21","nodeType":"VariableDeclaration","scope":4395,"src":"1408:20:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4366,"name":"string","nodeType":"ElementaryTypeName","src":"1408:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":4372,"initialValue":{"arguments":[{"id":4370,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4358,"src":"1442:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1431:10:21","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":4368,"name":"string","nodeType":"ElementaryTypeName","src":"1435:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":4371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1431:18:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"1408:41:21"},{"assignments":[4374],"declarations":[{"constant":false,"id":4374,"mutability":"mutable","name":"ptr","nameLocation":"1471:3:21","nodeType":"VariableDeclaration","scope":4395,"src":"1463:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4373,"name":"uint256","nodeType":"ElementaryTypeName","src":"1463:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4375,"nodeType":"VariableDeclarationStatement","src":"1463:11:21"},{"AST":{"nativeSrc":"1513:69:21","nodeType":"YulBlock","src":"1513:69:21","statements":[{"nativeSrc":"1531:37:21","nodeType":"YulAssignment","src":"1531:37:21","value":{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"1546:6:21","nodeType":"YulIdentifier","src":"1546:6:21"},{"kind":"number","nativeSrc":"1554:4:21","nodeType":"YulLiteral","src":"1554:4:21","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1542:3:21","nodeType":"YulIdentifier","src":"1542:3:21"},"nativeSrc":"1542:17:21","nodeType":"YulFunctionCall","src":"1542:17:21"},{"name":"length","nativeSrc":"1561:6:21","nodeType":"YulIdentifier","src":"1561:6:21"}],"functionName":{"name":"add","nativeSrc":"1538:3:21","nodeType":"YulIdentifier","src":"1538:3:21"},"nativeSrc":"1538:30:21","nodeType":"YulFunctionCall","src":"1538:30:21"},"variableNames":[{"name":"ptr","nativeSrc":"1531:3:21","nodeType":"YulIdentifier","src":"1531:3:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4367,"isOffset":false,"isSlot":false,"src":"1546:6:21","valueSize":1},{"declaration":4358,"isOffset":false,"isSlot":false,"src":"1561:6:21","valueSize":1},{"declaration":4374,"isOffset":false,"isSlot":false,"src":"1531:3:21","valueSize":1}],"flags":["memory-safe"],"id":4376,"nodeType":"InlineAssembly","src":"1488:94:21"},{"body":{"id":4391,"nodeType":"Block","src":"1608:234:21","statements":[{"expression":{"id":4379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1626:5:21","subExpression":{"id":4378,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"1626:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4380,"nodeType":"ExpressionStatement","src":"1626:5:21"},{"AST":{"nativeSrc":"1674:86:21","nodeType":"YulBlock","src":"1674:86:21","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1704:3:21","nodeType":"YulIdentifier","src":"1704:3:21"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1718:5:21","nodeType":"YulIdentifier","src":"1718:5:21"},{"kind":"number","nativeSrc":"1725:2:21","nodeType":"YulLiteral","src":"1725:2:21","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"1714:3:21","nodeType":"YulIdentifier","src":"1714:3:21"},"nativeSrc":"1714:14:21","nodeType":"YulFunctionCall","src":"1714:14:21"},{"name":"HEX_DIGITS","nativeSrc":"1730:10:21","nodeType":"YulIdentifier","src":"1730:10:21"}],"functionName":{"name":"byte","nativeSrc":"1709:4:21","nodeType":"YulIdentifier","src":"1709:4:21"},"nativeSrc":"1709:32:21","nodeType":"YulFunctionCall","src":"1709:32:21"}],"functionName":{"name":"mstore8","nativeSrc":"1696:7:21","nodeType":"YulIdentifier","src":"1696:7:21"},"nativeSrc":"1696:46:21","nodeType":"YulFunctionCall","src":"1696:46:21"},"nativeSrc":"1696:46:21","nodeType":"YulExpressionStatement","src":"1696:46:21"}]},"evmVersion":"cancun","externalReferences":[{"declaration":4320,"isOffset":false,"isSlot":false,"src":"1730:10:21","valueSize":1},{"declaration":4374,"isOffset":false,"isSlot":false,"src":"1704:3:21","valueSize":1},{"declaration":4352,"isOffset":false,"isSlot":false,"src":"1718:5:21","valueSize":1}],"flags":["memory-safe"],"id":4381,"nodeType":"InlineAssembly","src":"1649:111:21"},{"expression":{"id":4384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4382,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"1777:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":4383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1786:2:21","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1777:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4385,"nodeType":"ExpressionStatement","src":"1777:11:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"1810:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1819:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1810:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4390,"nodeType":"IfStatement","src":"1806:21:21","trueBody":{"id":4389,"nodeType":"Break","src":"1822:5:21"}}]},"condition":{"hexValue":"74727565","id":4377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1602:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":4392,"nodeType":"WhileStatement","src":"1595:247:21"},{"expression":{"id":4393,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4367,"src":"1862:6:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4356,"id":4394,"nodeType":"Return","src":"1855:13:21"}]}]},"documentation":{"id":4350,"nodeType":"StructuredDocumentation","src":"1156:90:21","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":4397,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1260:8:21","nodeType":"FunctionDefinition","parameters":{"id":4353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4352,"mutability":"mutable","name":"value","nameLocation":"1277:5:21","nodeType":"VariableDeclaration","scope":4397,"src":"1269:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4351,"name":"uint256","nodeType":"ElementaryTypeName","src":"1269:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1268:15:21"},"returnParameters":{"id":4356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4355,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4397,"src":"1307:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4354,"name":"string","nodeType":"ElementaryTypeName","src":"1307:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1306:15:21"},"scope":5814,"src":"1251:634:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4422,"nodeType":"Block","src":"2061:92:21","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4408,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4400,"src":"2092:5:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2092:9:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":4412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2110:2:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":4413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2092:20:21","trueExpression":{"hexValue":"2d","id":4411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2104:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":4417,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4400,"src":"2138:5:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":4415,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9416,"src":"2123:10:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$9416_$","typeString":"type(library SignedMath)"}},"id":4416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2134:3:21","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":9415,"src":"2123:14:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":4418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2123:21:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4414,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4397,"src":"2114:8:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":4419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2114:31:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":4406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2078:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4405,"name":"string","nodeType":"ElementaryTypeName","src":"2078:6:21","typeDescriptions":{}}},"id":4407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2085:6:21","memberName":"concat","nodeType":"MemberAccess","src":"2078:13:21","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":4420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2078:68:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4404,"id":4421,"nodeType":"Return","src":"2071:75:21"}]},"documentation":{"id":4398,"nodeType":"StructuredDocumentation","src":"1891:89:21","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":4423,"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"1994:14:21","nodeType":"FunctionDefinition","parameters":{"id":4401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4400,"mutability":"mutable","name":"value","nameLocation":"2016:5:21","nodeType":"VariableDeclaration","scope":4423,"src":"2009:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4399,"name":"int256","nodeType":"ElementaryTypeName","src":"2009:6:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2008:14:21"},"returnParameters":{"id":4404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4403,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4423,"src":"2046:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4402,"name":"string","nodeType":"ElementaryTypeName","src":"2046:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2045:15:21"},"scope":5814,"src":"1985:168:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4442,"nodeType":"Block","src":"2332:100:21","statements":[{"id":4441,"nodeType":"UncheckedBlock","src":"2342:84:21","statements":[{"expression":{"arguments":[{"id":4432,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4426,"src":"2385:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4426,"src":"2404:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4433,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"2392:4:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":4434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2397:6:21","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":7429,"src":"2392:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2392:18:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2413:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2392:22:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4431,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[4443,4526,4546,4700],"referencedDeclaration":4526,"src":"2373:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":4439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2373:42:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4430,"id":4440,"nodeType":"Return","src":"2366:49:21"}]}]},"documentation":{"id":4424,"nodeType":"StructuredDocumentation","src":"2159:94:21","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":4443,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2267:11:21","nodeType":"FunctionDefinition","parameters":{"id":4427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4426,"mutability":"mutable","name":"value","nameLocation":"2287:5:21","nodeType":"VariableDeclaration","scope":4443,"src":"2279:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4425,"name":"uint256","nodeType":"ElementaryTypeName","src":"2279:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2278:15:21"},"returnParameters":{"id":4430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4429,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4443,"src":"2317:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4428,"name":"string","nodeType":"ElementaryTypeName","src":"2317:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2316:15:21"},"scope":5814,"src":"2258:174:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4525,"nodeType":"Block","src":"2645:435:21","statements":[{"assignments":[4454],"declarations":[{"constant":false,"id":4454,"mutability":"mutable","name":"localValue","nameLocation":"2663:10:21","nodeType":"VariableDeclaration","scope":4525,"src":"2655:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4453,"name":"uint256","nodeType":"ElementaryTypeName","src":"2655:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4456,"initialValue":{"id":4455,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4446,"src":"2676:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2655:26:21"},{"assignments":[4458],"declarations":[{"constant":false,"id":4458,"mutability":"mutable","name":"buffer","nameLocation":"2704:6:21","nodeType":"VariableDeclaration","scope":4525,"src":"2691:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4457,"name":"bytes","nodeType":"ElementaryTypeName","src":"2691:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4467,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2723:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4462,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4448,"src":"2727:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2723:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":4464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2736:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2723:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2713:9:21","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4459,"name":"bytes","nodeType":"ElementaryTypeName","src":"2717:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2713:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2691:47:21"},{"expression":{"id":4472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4468,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"2748:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4470,"indexExpression":{"hexValue":"30","id":4469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2755:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2748:9:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":4471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2760:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2748:15:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4473,"nodeType":"ExpressionStatement","src":"2748:15:21"},{"expression":{"id":4478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4474,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"2773:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4476,"indexExpression":{"hexValue":"31","id":4475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2780:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2773:9:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":4477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2785:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2773:15:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4479,"nodeType":"ExpressionStatement","src":"2773:15:21"},{"body":{"id":4508,"nodeType":"Block","src":"2843:95:21","statements":[{"expression":{"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4494,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"2857:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4496,"indexExpression":{"id":4495,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4481,"src":"2864:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2857:9:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4497,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"2869:10:21","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":4501,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4498,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"2880:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":4499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2893:3:21","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2880:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2869:28:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2857:40:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4503,"nodeType":"ExpressionStatement","src":"2857:40:21"},{"expression":{"id":4506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4504,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"2911:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":4505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2926:1:21","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2911:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4507,"nodeType":"ExpressionStatement","src":"2911:16:21"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4488,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4481,"src":"2831:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":4489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2835:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2831:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4509,"initializationExpression":{"assignments":[4481],"declarations":[{"constant":false,"id":4481,"mutability":"mutable","name":"i","nameLocation":"2811:1:21","nodeType":"VariableDeclaration","scope":4509,"src":"2803:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2803:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4487,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2815:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4483,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4448,"src":"2819:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2815:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2828:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2815:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2803:26:21"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":4492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2838:3:21","subExpression":{"id":4491,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4481,"src":"2840:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4493,"nodeType":"ExpressionStatement","src":"2838:3:21"},"nodeType":"ForStatement","src":"2798:140:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4510,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"2951:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2965:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2951:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4519,"nodeType":"IfStatement","src":"2947:96:21","trueBody":{"id":4518,"nodeType":"Block","src":"2968:75:21","statements":[{"errorCall":{"arguments":[{"id":4514,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4446,"src":"3018:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4515,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4448,"src":"3025:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4513,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4343,"src":"2989:28:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":4516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2989:43:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4517,"nodeType":"RevertStatement","src":"2982:50:21"}]}},{"expression":{"arguments":[{"id":4522,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"3066:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3059:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4520,"name":"string","nodeType":"ElementaryTypeName","src":"3059:6:21","typeDescriptions":{}}},"id":4523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3059:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4452,"id":4524,"nodeType":"Return","src":"3052:21:21"}]},"documentation":{"id":4444,"nodeType":"StructuredDocumentation","src":"2438:112:21","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":4526,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2564:11:21","nodeType":"FunctionDefinition","parameters":{"id":4449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4446,"mutability":"mutable","name":"value","nameLocation":"2584:5:21","nodeType":"VariableDeclaration","scope":4526,"src":"2576:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4445,"name":"uint256","nodeType":"ElementaryTypeName","src":"2576:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4448,"mutability":"mutable","name":"length","nameLocation":"2599:6:21","nodeType":"VariableDeclaration","scope":4526,"src":"2591:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4447,"name":"uint256","nodeType":"ElementaryTypeName","src":"2591:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2575:31:21"},"returnParameters":{"id":4452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4526,"src":"2630:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4450,"name":"string","nodeType":"ElementaryTypeName","src":"2630:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2629:15:21"},"scope":5814,"src":"2555:525:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4545,"nodeType":"Block","src":"3312:75:21","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":4539,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"3357:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3349:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4537,"name":"uint160","nodeType":"ElementaryTypeName","src":"3349:7:21","typeDescriptions":{}}},"id":4540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3349:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3341:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4535,"name":"uint256","nodeType":"ElementaryTypeName","src":"3341:7:21","typeDescriptions":{}}},"id":4541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3341:22:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4542,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4323,"src":"3365:14:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":4534,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[4443,4526,4546,4700],"referencedDeclaration":4526,"src":"3329:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":4543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3329:51:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4533,"id":4544,"nodeType":"Return","src":"3322:58:21"}]},"documentation":{"id":4527,"nodeType":"StructuredDocumentation","src":"3086:148:21","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"id":4546,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"3248:11:21","nodeType":"FunctionDefinition","parameters":{"id":4530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4529,"mutability":"mutable","name":"addr","nameLocation":"3268:4:21","nodeType":"VariableDeclaration","scope":4546,"src":"3260:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4528,"name":"address","nodeType":"ElementaryTypeName","src":"3260:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3259:14:21"},"returnParameters":{"id":4533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4532,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4546,"src":"3297:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4531,"name":"string","nodeType":"ElementaryTypeName","src":"3297:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3296:15:21"},"scope":5814,"src":"3239:148:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4610,"nodeType":"Block","src":"3644:642:21","statements":[{"assignments":[4555],"declarations":[{"constant":false,"id":4555,"mutability":"mutable","name":"buffer","nameLocation":"3667:6:21","nodeType":"VariableDeclaration","scope":4610,"src":"3654:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4554,"name":"bytes","nodeType":"ElementaryTypeName","src":"3654:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4562,"initialValue":{"arguments":[{"arguments":[{"id":4559,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4549,"src":"3694:4:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4558,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[4443,4526,4546,4700],"referencedDeclaration":4546,"src":"3682:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) pure returns (string memory)"}},"id":4560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3682:17:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3676:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4556,"name":"bytes","nodeType":"ElementaryTypeName","src":"3676:5:21","typeDescriptions":{}}},"id":4561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3676:24:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3654:46:21"},{"assignments":[4564],"declarations":[{"constant":false,"id":4564,"mutability":"mutable","name":"hashValue","nameLocation":"3793:9:21","nodeType":"VariableDeclaration","scope":4610,"src":"3785:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4563,"name":"uint256","nodeType":"ElementaryTypeName","src":"3785:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4565,"nodeType":"VariableDeclarationStatement","src":"3785:17:21"},{"AST":{"nativeSrc":"3837:78:21","nodeType":"YulBlock","src":"3837:78:21","statements":[{"nativeSrc":"3851:54:21","nodeType":"YulAssignment","src":"3851:54:21","value":{"arguments":[{"kind":"number","nativeSrc":"3868:2:21","nodeType":"YulLiteral","src":"3868:2:21","type":"","value":"96"},{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"3886:6:21","nodeType":"YulIdentifier","src":"3886:6:21"},{"kind":"number","nativeSrc":"3894:4:21","nodeType":"YulLiteral","src":"3894:4:21","type":"","value":"0x22"}],"functionName":{"name":"add","nativeSrc":"3882:3:21","nodeType":"YulIdentifier","src":"3882:3:21"},"nativeSrc":"3882:17:21","nodeType":"YulFunctionCall","src":"3882:17:21"},{"kind":"number","nativeSrc":"3901:2:21","nodeType":"YulLiteral","src":"3901:2:21","type":"","value":"40"}],"functionName":{"name":"keccak256","nativeSrc":"3872:9:21","nodeType":"YulIdentifier","src":"3872:9:21"},"nativeSrc":"3872:32:21","nodeType":"YulFunctionCall","src":"3872:32:21"}],"functionName":{"name":"shr","nativeSrc":"3864:3:21","nodeType":"YulIdentifier","src":"3864:3:21"},"nativeSrc":"3864:41:21","nodeType":"YulFunctionCall","src":"3864:41:21"},"variableNames":[{"name":"hashValue","nativeSrc":"3851:9:21","nodeType":"YulIdentifier","src":"3851:9:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4555,"isOffset":false,"isSlot":false,"src":"3886:6:21","valueSize":1},{"declaration":4564,"isOffset":false,"isSlot":false,"src":"3851:9:21","valueSize":1}],"flags":["memory-safe"],"id":4566,"nodeType":"InlineAssembly","src":"3812:103:21"},{"body":{"id":4603,"nodeType":"Block","src":"3958:291:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4577,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"4064:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":4578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4076:3:21","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"4064:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"37","id":4580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4082:1:21","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"4064:19:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":4584,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"4093:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4586,"indexExpression":{"id":4585,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"4100:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4093:9:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":4583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4087:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4582,"name":"uint8","nodeType":"ElementaryTypeName","src":"4087:5:21","typeDescriptions":{}}},"id":4587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4087:16:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":4588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4106:2:21","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"4087:21:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4064:44:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4598,"nodeType":"IfStatement","src":"4060:150:21","trueBody":{"id":4597,"nodeType":"Block","src":"4110:100:21","statements":[{"expression":{"id":4595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4591,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"4178:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4593,"indexExpression":{"id":4592,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"4185:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4178:9:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"^=","rightHandSide":{"hexValue":"30783230","id":4594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4191:4:21","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"4178:17:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4596,"nodeType":"ExpressionStatement","src":"4178:17:21"}]}},{"expression":{"id":4601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4599,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"4223:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":4600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4237:1:21","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"4223:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4602,"nodeType":"ExpressionStatement","src":"4223:15:21"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4571,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"3946:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":4572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3950:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3946:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4604,"initializationExpression":{"assignments":[4568],"declarations":[{"constant":false,"id":4568,"mutability":"mutable","name":"i","nameLocation":"3938:1:21","nodeType":"VariableDeclaration","scope":4604,"src":"3930:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4567,"name":"uint256","nodeType":"ElementaryTypeName","src":"3930:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4570,"initialValue":{"hexValue":"3431","id":4569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3942:2:21","typeDescriptions":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"value":"41"},"nodeType":"VariableDeclarationStatement","src":"3930:14:21"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":4575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"3953:3:21","subExpression":{"id":4574,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"3955:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4576,"nodeType":"ExpressionStatement","src":"3953:3:21"},"nodeType":"ForStatement","src":"3925:324:21"},{"expression":{"arguments":[{"id":4607,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"4272:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4265:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4605,"name":"string","nodeType":"ElementaryTypeName","src":"4265:6:21","typeDescriptions":{}}},"id":4608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4265:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4553,"id":4609,"nodeType":"Return","src":"4258:21:21"}]},"documentation":{"id":4547,"nodeType":"StructuredDocumentation","src":"3393:165:21","text":" @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n representation, according to EIP-55."},"id":4611,"implemented":true,"kind":"function","modifiers":[],"name":"toChecksumHexString","nameLocation":"3572:19:21","nodeType":"FunctionDefinition","parameters":{"id":4550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4549,"mutability":"mutable","name":"addr","nameLocation":"3600:4:21","nodeType":"VariableDeclaration","scope":4611,"src":"3592:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4548,"name":"address","nodeType":"ElementaryTypeName","src":"3592:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3591:14:21"},"returnParameters":{"id":4553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4552,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4611,"src":"3629:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4551,"name":"string","nodeType":"ElementaryTypeName","src":"3629:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3628:15:21"},"scope":5814,"src":"3563:723:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4699,"nodeType":"Block","src":"4475:424:21","statements":[{"id":4698,"nodeType":"UncheckedBlock","src":"4485:408:21","statements":[{"assignments":[4620],"declarations":[{"constant":false,"id":4620,"mutability":"mutable","name":"buffer","nameLocation":"4522:6:21","nodeType":"VariableDeclaration","scope":4698,"src":"4509:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4619,"name":"bytes","nodeType":"ElementaryTypeName","src":"4509:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4630,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4541:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":4624,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4614,"src":"4545:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4551:6:21","memberName":"length","nodeType":"MemberAccess","src":"4545:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4541:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":4627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4560:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4541:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4531:9:21","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4621,"name":"bytes","nodeType":"ElementaryTypeName","src":"4535:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4531:31:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4509:53:21"},{"expression":{"id":4635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4631,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"4576:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4633,"indexExpression":{"hexValue":"30","id":4632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4583:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4576:9:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":4634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4588:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"4576:15:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4636,"nodeType":"ExpressionStatement","src":"4576:15:21"},{"expression":{"id":4641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4637,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"4605:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4639,"indexExpression":{"hexValue":"31","id":4638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4612:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4605:9:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":4640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4617:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"4605:15:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4642,"nodeType":"ExpressionStatement","src":"4605:15:21"},{"body":{"id":4691,"nodeType":"Block","src":"4677:171:21","statements":[{"assignments":[4655],"declarations":[{"constant":false,"id":4655,"mutability":"mutable","name":"v","nameLocation":"4701:1:21","nodeType":"VariableDeclaration","scope":4691,"src":"4695:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4654,"name":"uint8","nodeType":"ElementaryTypeName","src":"4695:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":4662,"initialValue":{"arguments":[{"baseExpression":{"id":4658,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4614,"src":"4711:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4660,"indexExpression":{"id":4659,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"4717:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4711:8:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":4657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4705:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4656,"name":"uint8","nodeType":"ElementaryTypeName","src":"4705:5:21","typeDescriptions":{}}},"id":4661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4705:15:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4695:25:21"},{"expression":{"id":4675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4663,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"4738:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4669,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4745:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4665,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"4749:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4745:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":4667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4753:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4745:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4738:17:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4670,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"4758:10:21","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":4674,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4671,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4655,"src":"4769:1:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":4672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4774:1:21","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"4769:6:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4758:18:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"4738:38:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4676,"nodeType":"ExpressionStatement","src":"4738:38:21"},{"expression":{"id":4689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4677,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"4794:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4683,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4801:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4679,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"4805:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4801:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":4681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4809:1:21","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"4801:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4794:17:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4684,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"4814:10:21","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":4688,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4685,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4655,"src":"4825:1:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":4686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4829:3:21","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"4825:7:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4814:19:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"4794:39:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4690,"nodeType":"ExpressionStatement","src":"4794:39:21"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4647,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"4654:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4648,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4614,"src":"4658:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4664:6:21","memberName":"length","nodeType":"MemberAccess","src":"4658:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4654:16:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4692,"initializationExpression":{"assignments":[4644],"declarations":[{"constant":false,"id":4644,"mutability":"mutable","name":"i","nameLocation":"4647:1:21","nodeType":"VariableDeclaration","scope":4692,"src":"4639:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4643,"name":"uint256","nodeType":"ElementaryTypeName","src":"4639:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4646,"initialValue":{"hexValue":"30","id":4645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4651:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4639:13:21"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":4652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4672:3:21","subExpression":{"id":4651,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"4674:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4653,"nodeType":"ExpressionStatement","src":"4672:3:21"},"nodeType":"ForStatement","src":"4634:214:21"},{"expression":{"arguments":[{"id":4695,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"4875:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4868:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4693,"name":"string","nodeType":"ElementaryTypeName","src":"4868:6:21","typeDescriptions":{}}},"id":4696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4868:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4618,"id":4697,"nodeType":"Return","src":"4861:21:21"}]}]},"documentation":{"id":4612,"nodeType":"StructuredDocumentation","src":"4292:99:21","text":" @dev Converts a `bytes` buffer to its ASCII `string` hexadecimal representation."},"id":4700,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"4405:11:21","nodeType":"FunctionDefinition","parameters":{"id":4615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4614,"mutability":"mutable","name":"input","nameLocation":"4430:5:21","nodeType":"VariableDeclaration","scope":4700,"src":"4417:18:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4613,"name":"bytes","nodeType":"ElementaryTypeName","src":"4417:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4416:20:21"},"returnParameters":{"id":4618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4617,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4700,"src":"4460:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4616,"name":"string","nodeType":"ElementaryTypeName","src":"4460:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4459:15:21"},"scope":5814,"src":"4396:503:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4722,"nodeType":"Block","src":"5054:55:21","statements":[{"expression":{"arguments":[{"arguments":[{"id":4714,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"5089:1:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5083:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4712,"name":"bytes","nodeType":"ElementaryTypeName","src":"5083:5:21","typeDescriptions":{}}},"id":4715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5083:8:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":4718,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4705,"src":"5099:1:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5093:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4716,"name":"bytes","nodeType":"ElementaryTypeName","src":"5093:5:21","typeDescriptions":{}}},"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5093:8:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4710,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"5071:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$3877_$","typeString":"type(library Bytes)"}},"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5077:5:21","memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":3527,"src":"5071:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":4720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5071:31:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4709,"id":4721,"nodeType":"Return","src":"5064:38:21"}]},"documentation":{"id":4701,"nodeType":"StructuredDocumentation","src":"4905:66:21","text":" @dev Returns true if the two strings are equal."},"id":4723,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"4985:5:21","nodeType":"FunctionDefinition","parameters":{"id":4706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4703,"mutability":"mutable","name":"a","nameLocation":"5005:1:21","nodeType":"VariableDeclaration","scope":4723,"src":"4991:15:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4702,"name":"string","nodeType":"ElementaryTypeName","src":"4991:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4705,"mutability":"mutable","name":"b","nameLocation":"5022:1:21","nodeType":"VariableDeclaration","scope":4723,"src":"5008:15:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4704,"name":"string","nodeType":"ElementaryTypeName","src":"5008:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4990:34:21"},"returnParameters":{"id":4709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4723,"src":"5048:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4707,"name":"bool","nodeType":"ElementaryTypeName","src":"5048:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5047:6:21"},"scope":5814,"src":"4976:133:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4741,"nodeType":"Block","src":"5406:64:21","statements":[{"expression":{"arguments":[{"id":4732,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"5433:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":4733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5440:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":4736,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"5449:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5443:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4734,"name":"bytes","nodeType":"ElementaryTypeName","src":"5443:5:21","typeDescriptions":{}}},"id":4737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5443:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5456:6:21","memberName":"length","nodeType":"MemberAccess","src":"5443:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4731,"name":"parseUint","nodeType":"Identifier","overloadedDeclarations":[4742,4773],"referencedDeclaration":4773,"src":"5423:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (uint256)"}},"id":4739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5423:40:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4730,"id":4740,"nodeType":"Return","src":"5416:47:21"}]},"documentation":{"id":4724,"nodeType":"StructuredDocumentation","src":"5115:214:21","text":" @dev Parse a decimal string and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"},"id":4742,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"5343:9:21","nodeType":"FunctionDefinition","parameters":{"id":4727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4726,"mutability":"mutable","name":"input","nameLocation":"5367:5:21","nodeType":"VariableDeclaration","scope":4742,"src":"5353:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4725,"name":"string","nodeType":"ElementaryTypeName","src":"5353:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5352:21:21"},"returnParameters":{"id":4730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4742,"src":"5397:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4728,"name":"uint256","nodeType":"ElementaryTypeName","src":"5397:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5396:9:21"},"scope":5814,"src":"5334:136:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4772,"nodeType":"Block","src":"5875:153:21","statements":[{"assignments":[4755,4757],"declarations":[{"constant":false,"id":4755,"mutability":"mutable","name":"success","nameLocation":"5891:7:21","nodeType":"VariableDeclaration","scope":4772,"src":"5886:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4754,"name":"bool","nodeType":"ElementaryTypeName","src":"5886:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4757,"mutability":"mutable","name":"value","nameLocation":"5908:5:21","nodeType":"VariableDeclaration","scope":4772,"src":"5900:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4756,"name":"uint256","nodeType":"ElementaryTypeName","src":"5900:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4763,"initialValue":{"arguments":[{"id":4759,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4745,"src":"5930:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":4760,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"5937:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4761,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4749,"src":"5944:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4758,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[4794,4831],"referencedDeclaration":4831,"src":"5917:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":4762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5917:31:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5885:63:21"},{"condition":{"id":4765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5962:8:21","subExpression":{"id":4764,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4755,"src":"5963:7:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4769,"nodeType":"IfStatement","src":"5958:41:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4766,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"5979:18:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5979:20:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4768,"nodeType":"RevertStatement","src":"5972:27:21"}},{"expression":{"id":4770,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4757,"src":"6016:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4753,"id":4771,"nodeType":"Return","src":"6009:12:21"}]},"documentation":{"id":4743,"nodeType":"StructuredDocumentation","src":"5476:294:21","text":" @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"},"id":4773,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"5784:9:21","nodeType":"FunctionDefinition","parameters":{"id":4750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4745,"mutability":"mutable","name":"input","nameLocation":"5808:5:21","nodeType":"VariableDeclaration","scope":4773,"src":"5794:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4744,"name":"string","nodeType":"ElementaryTypeName","src":"5794:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4747,"mutability":"mutable","name":"begin","nameLocation":"5823:5:21","nodeType":"VariableDeclaration","scope":4773,"src":"5815:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4746,"name":"uint256","nodeType":"ElementaryTypeName","src":"5815:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4749,"mutability":"mutable","name":"end","nameLocation":"5838:3:21","nodeType":"VariableDeclaration","scope":4773,"src":"5830:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4748,"name":"uint256","nodeType":"ElementaryTypeName","src":"5830:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5793:49:21"},"returnParameters":{"id":4753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4773,"src":"5866:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4751,"name":"uint256","nodeType":"ElementaryTypeName","src":"5866:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5865:9:21"},"scope":5814,"src":"5775:253:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4793,"nodeType":"Block","src":"6349:83:21","statements":[{"expression":{"arguments":[{"id":4784,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4776,"src":"6395:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":4785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6402:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":4788,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4776,"src":"6411:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6405:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4786,"name":"bytes","nodeType":"ElementaryTypeName","src":"6405:5:21","typeDescriptions":{}}},"id":4789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6405:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6418:6:21","memberName":"length","nodeType":"MemberAccess","src":"6405:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4783,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4901,"src":"6366:28:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":4791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6366:59:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":4782,"id":4792,"nodeType":"Return","src":"6359:66:21"}]},"documentation":{"id":4774,"nodeType":"StructuredDocumentation","src":"6034:215:21","text":" @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":4794,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"6263:12:21","nodeType":"FunctionDefinition","parameters":{"id":4777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4776,"mutability":"mutable","name":"input","nameLocation":"6290:5:21","nodeType":"VariableDeclaration","scope":4794,"src":"6276:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4775,"name":"string","nodeType":"ElementaryTypeName","src":"6276:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6275:21:21"},"returnParameters":{"id":4782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4779,"mutability":"mutable","name":"success","nameLocation":"6325:7:21","nodeType":"VariableDeclaration","scope":4794,"src":"6320:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4778,"name":"bool","nodeType":"ElementaryTypeName","src":"6320:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4781,"mutability":"mutable","name":"value","nameLocation":"6342:5:21","nodeType":"VariableDeclaration","scope":4794,"src":"6334:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4780,"name":"uint256","nodeType":"ElementaryTypeName","src":"6334:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6319:29:21"},"scope":5814,"src":"6254:178:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4830,"nodeType":"Block","src":"6834:144:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4808,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"6848:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4811,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4797,"src":"6860:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6854:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4809,"name":"bytes","nodeType":"ElementaryTypeName","src":"6854:5:21","typeDescriptions":{}}},"id":4812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6854:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6867:6:21","memberName":"length","nodeType":"MemberAccess","src":"6854:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6848:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4815,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4799,"src":"6877:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4816,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"6885:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6877:11:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6848:40:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4823,"nodeType":"IfStatement","src":"6844:63:21","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":4819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6898:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":4820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6905:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4821,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6897:10:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":4807,"id":4822,"nodeType":"Return","src":"6890:17:21"}},{"expression":{"arguments":[{"id":4825,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4797,"src":"6953:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":4826,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4799,"src":"6960:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4827,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"6967:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4824,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4901,"src":"6924:28:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":4828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6924:47:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":4807,"id":4829,"nodeType":"Return","src":"6917:54:21"}]},"documentation":{"id":4795,"nodeType":"StructuredDocumentation","src":"6438:238:21","text":" @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":4831,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"6690:12:21","nodeType":"FunctionDefinition","parameters":{"id":4802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4797,"mutability":"mutable","name":"input","nameLocation":"6726:5:21","nodeType":"VariableDeclaration","scope":4831,"src":"6712:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4796,"name":"string","nodeType":"ElementaryTypeName","src":"6712:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4799,"mutability":"mutable","name":"begin","nameLocation":"6749:5:21","nodeType":"VariableDeclaration","scope":4831,"src":"6741:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4798,"name":"uint256","nodeType":"ElementaryTypeName","src":"6741:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4801,"mutability":"mutable","name":"end","nameLocation":"6772:3:21","nodeType":"VariableDeclaration","scope":4831,"src":"6764:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4800,"name":"uint256","nodeType":"ElementaryTypeName","src":"6764:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6702:79:21"},"returnParameters":{"id":4807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4804,"mutability":"mutable","name":"success","nameLocation":"6810:7:21","nodeType":"VariableDeclaration","scope":4831,"src":"6805:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4803,"name":"bool","nodeType":"ElementaryTypeName","src":"6805:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4806,"mutability":"mutable","name":"value","nameLocation":"6827:5:21","nodeType":"VariableDeclaration","scope":4831,"src":"6819:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4805,"name":"uint256","nodeType":"ElementaryTypeName","src":"6819:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6804:29:21"},"scope":5814,"src":"6681:297:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4900,"nodeType":"Block","src":"7381:347:21","statements":[{"assignments":[4846],"declarations":[{"constant":false,"id":4846,"mutability":"mutable","name":"buffer","nameLocation":"7404:6:21","nodeType":"VariableDeclaration","scope":4900,"src":"7391:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4845,"name":"bytes","nodeType":"ElementaryTypeName","src":"7391:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4851,"initialValue":{"arguments":[{"id":4849,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"7419:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7413:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4847,"name":"bytes","nodeType":"ElementaryTypeName","src":"7413:5:21","typeDescriptions":{}}},"id":4850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7413:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7391:34:21"},{"assignments":[4853],"declarations":[{"constant":false,"id":4853,"mutability":"mutable","name":"result","nameLocation":"7444:6:21","nodeType":"VariableDeclaration","scope":4900,"src":"7436:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4852,"name":"uint256","nodeType":"ElementaryTypeName","src":"7436:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4855,"initialValue":{"hexValue":"30","id":4854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7453:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7436:18:21"},{"body":{"id":4894,"nodeType":"Block","src":"7502:189:21","statements":[{"assignments":[4867],"declarations":[{"constant":false,"id":4867,"mutability":"mutable","name":"chr","nameLocation":"7522:3:21","nodeType":"VariableDeclaration","scope":4894,"src":"7516:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4866,"name":"uint8","nodeType":"ElementaryTypeName","src":"7516:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":4877,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":4872,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4846,"src":"7571:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4873,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"7579:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4871,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"7548:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":4874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7548:33:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4870,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7541:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":4869,"name":"bytes1","nodeType":"ElementaryTypeName","src":"7541:6:21","typeDescriptions":{}}},"id":4875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7541:41:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":4868,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5581,"src":"7528:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":4876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7528:55:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"7516:67:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4878,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4867,"src":"7601:3:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"39","id":4879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7607:1:21","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"7601:7:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4885,"nodeType":"IfStatement","src":"7597:30:21","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":4881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7618:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":4882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7625:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4883,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7617:10:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":4844,"id":4884,"nodeType":"Return","src":"7610:17:21"}},{"expression":{"id":4888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4886,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"7641:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3130","id":4887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7651:2:21","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"7641:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4889,"nodeType":"ExpressionStatement","src":"7641:12:21"},{"expression":{"id":4892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4890,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"7667:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4891,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4867,"src":"7677:3:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7667:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4893,"nodeType":"ExpressionStatement","src":"7667:13:21"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4860,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"7488:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4861,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4838,"src":"7492:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7488:7:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4895,"initializationExpression":{"assignments":[4857],"declarations":[{"constant":false,"id":4857,"mutability":"mutable","name":"i","nameLocation":"7477:1:21","nodeType":"VariableDeclaration","scope":4895,"src":"7469:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4856,"name":"uint256","nodeType":"ElementaryTypeName","src":"7469:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4859,"initialValue":{"id":4858,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4836,"src":"7481:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7469:17:21"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7497:3:21","subExpression":{"id":4863,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"7499:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4865,"nodeType":"ExpressionStatement","src":"7497:3:21"},"nodeType":"ForStatement","src":"7464:227:21"},{"expression":{"components":[{"hexValue":"74727565","id":4896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7708:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":4897,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"7714:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4898,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7707:14:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":4844,"id":4899,"nodeType":"Return","src":"7700:21:21"}]},"documentation":{"id":4832,"nodeType":"StructuredDocumentation","src":"6984:224:21","text":" @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":4901,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseUintUncheckedBounds","nameLocation":"7222:28:21","nodeType":"FunctionDefinition","parameters":{"id":4839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4834,"mutability":"mutable","name":"input","nameLocation":"7274:5:21","nodeType":"VariableDeclaration","scope":4901,"src":"7260:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4833,"name":"string","nodeType":"ElementaryTypeName","src":"7260:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4836,"mutability":"mutable","name":"begin","nameLocation":"7297:5:21","nodeType":"VariableDeclaration","scope":4901,"src":"7289:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4835,"name":"uint256","nodeType":"ElementaryTypeName","src":"7289:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4838,"mutability":"mutable","name":"end","nameLocation":"7320:3:21","nodeType":"VariableDeclaration","scope":4901,"src":"7312:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4837,"name":"uint256","nodeType":"ElementaryTypeName","src":"7312:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7250:79:21"},"returnParameters":{"id":4844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4841,"mutability":"mutable","name":"success","nameLocation":"7357:7:21","nodeType":"VariableDeclaration","scope":4901,"src":"7352:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4840,"name":"bool","nodeType":"ElementaryTypeName","src":"7352:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4843,"mutability":"mutable","name":"value","nameLocation":"7374:5:21","nodeType":"VariableDeclaration","scope":4901,"src":"7366:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4842,"name":"uint256","nodeType":"ElementaryTypeName","src":"7366:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7351:29:21"},"scope":5814,"src":"7213:515:21","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":4919,"nodeType":"Block","src":"8025:63:21","statements":[{"expression":{"arguments":[{"id":4910,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4904,"src":"8051:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":4911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8058:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":4914,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4904,"src":"8067:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8061:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4912,"name":"bytes","nodeType":"ElementaryTypeName","src":"8061:5:21","typeDescriptions":{}}},"id":4915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8061:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8074:6:21","memberName":"length","nodeType":"MemberAccess","src":"8061:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4909,"name":"parseInt","nodeType":"Identifier","overloadedDeclarations":[4920,4951],"referencedDeclaration":4951,"src":"8042:8:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (int256)"}},"id":4917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8042:39:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4908,"id":4918,"nodeType":"Return","src":"8035:46:21"}]},"documentation":{"id":4902,"nodeType":"StructuredDocumentation","src":"7734:216:21","text":" @dev Parse a decimal string and returns the value as a `int256`.\n Requirements:\n - The string must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."},"id":4920,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"7964:8:21","nodeType":"FunctionDefinition","parameters":{"id":4905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4904,"mutability":"mutable","name":"input","nameLocation":"7987:5:21","nodeType":"VariableDeclaration","scope":4920,"src":"7973:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4903,"name":"string","nodeType":"ElementaryTypeName","src":"7973:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7972:21:21"},"returnParameters":{"id":4908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4920,"src":"8017:6:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4906,"name":"int256","nodeType":"ElementaryTypeName","src":"8017:6:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8016:8:21"},"scope":5814,"src":"7955:133:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4950,"nodeType":"Block","src":"8493:151:21","statements":[{"assignments":[4933,4935],"declarations":[{"constant":false,"id":4933,"mutability":"mutable","name":"success","nameLocation":"8509:7:21","nodeType":"VariableDeclaration","scope":4950,"src":"8504:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4932,"name":"bool","nodeType":"ElementaryTypeName","src":"8504:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4935,"mutability":"mutable","name":"value","nameLocation":"8525:5:21","nodeType":"VariableDeclaration","scope":4950,"src":"8518:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4934,"name":"int256","nodeType":"ElementaryTypeName","src":"8518:6:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4941,"initialValue":{"arguments":[{"id":4937,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4923,"src":"8546:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":4938,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4925,"src":"8553:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4939,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"8560:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4936,"name":"tryParseInt","nodeType":"Identifier","overloadedDeclarations":[4972,5014],"referencedDeclaration":5014,"src":"8534:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":4940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8534:30:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"nodeType":"VariableDeclarationStatement","src":"8503:61:21"},{"condition":{"id":4943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8578:8:21","subExpression":{"id":4942,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4933,"src":"8579:7:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4947,"nodeType":"IfStatement","src":"8574:41:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4944,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"8595:18:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8595:20:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4946,"nodeType":"RevertStatement","src":"8588:27:21"}},{"expression":{"id":4948,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4935,"src":"8632:5:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4931,"id":4949,"nodeType":"Return","src":"8625:12:21"}]},"documentation":{"id":4921,"nodeType":"StructuredDocumentation","src":"8094:296:21","text":" @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."},"id":4951,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"8404:8:21","nodeType":"FunctionDefinition","parameters":{"id":4928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4923,"mutability":"mutable","name":"input","nameLocation":"8427:5:21","nodeType":"VariableDeclaration","scope":4951,"src":"8413:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4922,"name":"string","nodeType":"ElementaryTypeName","src":"8413:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4925,"mutability":"mutable","name":"begin","nameLocation":"8442:5:21","nodeType":"VariableDeclaration","scope":4951,"src":"8434:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4924,"name":"uint256","nodeType":"ElementaryTypeName","src":"8434:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4927,"mutability":"mutable","name":"end","nameLocation":"8457:3:21","nodeType":"VariableDeclaration","scope":4951,"src":"8449:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4926,"name":"uint256","nodeType":"ElementaryTypeName","src":"8449:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8412:49:21"},"returnParameters":{"id":4931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4951,"src":"8485:6:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4929,"name":"int256","nodeType":"ElementaryTypeName","src":"8485:6:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8484:8:21"},"scope":5814,"src":"8395:249:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4971,"nodeType":"Block","src":"9035:82:21","statements":[{"expression":{"arguments":[{"id":4962,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4954,"src":"9080:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":4963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9087:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":4966,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4954,"src":"9096:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9090:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4964,"name":"bytes","nodeType":"ElementaryTypeName","src":"9090:5:21","typeDescriptions":{}}},"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9090:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9103:6:21","memberName":"length","nodeType":"MemberAccess","src":"9090:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4961,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5135,"src":"9052:27:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":4969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9052:58:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":4960,"id":4970,"nodeType":"Return","src":"9045:65:21"}]},"documentation":{"id":4952,"nodeType":"StructuredDocumentation","src":"8650:287:21","text":" @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\n the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."},"id":4972,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"8951:11:21","nodeType":"FunctionDefinition","parameters":{"id":4955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4954,"mutability":"mutable","name":"input","nameLocation":"8977:5:21","nodeType":"VariableDeclaration","scope":4972,"src":"8963:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4953,"name":"string","nodeType":"ElementaryTypeName","src":"8963:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8962:21:21"},"returnParameters":{"id":4960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4957,"mutability":"mutable","name":"success","nameLocation":"9012:7:21","nodeType":"VariableDeclaration","scope":4972,"src":"9007:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4956,"name":"bool","nodeType":"ElementaryTypeName","src":"9007:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4959,"mutability":"mutable","name":"value","nameLocation":"9028:5:21","nodeType":"VariableDeclaration","scope":4972,"src":"9021:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4958,"name":"int256","nodeType":"ElementaryTypeName","src":"9021:6:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9006:28:21"},"scope":5814,"src":"8942:175:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"constant":true,"id":4977,"mutability":"constant","name":"ABS_MIN_INT256","nameLocation":"9148:14:21","nodeType":"VariableDeclaration","scope":5814,"src":"9123:50:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4973,"name":"uint256","nodeType":"ElementaryTypeName","src":"9123:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":4976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":4975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9170:3:21","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"9165:8:21","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"visibility":"private"},{"body":{"id":5013,"nodeType":"Block","src":"9639:143:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4991,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"9653:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":4994,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"9665:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9659:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4992,"name":"bytes","nodeType":"ElementaryTypeName","src":"9659:5:21","typeDescriptions":{}}},"id":4995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9659:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9672:6:21","memberName":"length","nodeType":"MemberAccess","src":"9659:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9653:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4998,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"9682:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4999,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"9690:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9682:11:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9653:40:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5006,"nodeType":"IfStatement","src":"9649:63:21","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9703:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9710:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5004,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9702:10:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":4990,"id":5005,"nodeType":"Return","src":"9695:17:21"}},{"expression":{"arguments":[{"id":5008,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"9757:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5009,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"9764:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5010,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"9771:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5007,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5135,"src":"9729:27:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":5011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9729:46:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":4990,"id":5012,"nodeType":"Return","src":"9722:53:21"}]},"documentation":{"id":4978,"nodeType":"StructuredDocumentation","src":"9180:303:21","text":" @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character or if the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."},"id":5014,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"9497:11:21","nodeType":"FunctionDefinition","parameters":{"id":4985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4980,"mutability":"mutable","name":"input","nameLocation":"9532:5:21","nodeType":"VariableDeclaration","scope":5014,"src":"9518:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4979,"name":"string","nodeType":"ElementaryTypeName","src":"9518:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4982,"mutability":"mutable","name":"begin","nameLocation":"9555:5:21","nodeType":"VariableDeclaration","scope":5014,"src":"9547:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4981,"name":"uint256","nodeType":"ElementaryTypeName","src":"9547:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4984,"mutability":"mutable","name":"end","nameLocation":"9578:3:21","nodeType":"VariableDeclaration","scope":5014,"src":"9570:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4983,"name":"uint256","nodeType":"ElementaryTypeName","src":"9570:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9508:79:21"},"returnParameters":{"id":4990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4987,"mutability":"mutable","name":"success","nameLocation":"9616:7:21","nodeType":"VariableDeclaration","scope":5014,"src":"9611:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4986,"name":"bool","nodeType":"ElementaryTypeName","src":"9611:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4989,"mutability":"mutable","name":"value","nameLocation":"9632:5:21","nodeType":"VariableDeclaration","scope":5014,"src":"9625:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4988,"name":"int256","nodeType":"ElementaryTypeName","src":"9625:6:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9610:28:21"},"scope":5814,"src":"9488:294:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5134,"nodeType":"Block","src":"10182:812:21","statements":[{"assignments":[5029],"declarations":[{"constant":false,"id":5029,"mutability":"mutable","name":"buffer","nameLocation":"10205:6:21","nodeType":"VariableDeclaration","scope":5134,"src":"10192:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5028,"name":"bytes","nodeType":"ElementaryTypeName","src":"10192:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5034,"initialValue":{"arguments":[{"id":5032,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"10220:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10214:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5030,"name":"bytes","nodeType":"ElementaryTypeName","src":"10214:5:21","typeDescriptions":{}}},"id":5033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10214:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"10192:34:21"},{"assignments":[5036],"declarations":[{"constant":false,"id":5036,"mutability":"mutable","name":"sign","nameLocation":"10290:4:21","nodeType":"VariableDeclaration","scope":5134,"src":"10283:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":5035,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10283:6:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":5052,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5037,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"10297:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5038,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5021,"src":"10306:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10297:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":5047,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"10354:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5048,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"10362:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5046,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"10331:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":5049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10331:37:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10324:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5044,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10324:6:21","typeDescriptions":{}}},"id":5050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10324:45:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":5051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10297:72:21","trueExpression":{"arguments":[{"hexValue":"30","id":5042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10312:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5040,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10312:6:21","typeDescriptions":{}}},"id":5043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10312:9:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"10283:86:21"},{"assignments":[5054],"declarations":[{"constant":false,"id":5054,"mutability":"mutable","name":"positiveSign","nameLocation":"10455:12:21","nodeType":"VariableDeclaration","scope":5134,"src":"10450:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5053,"name":"bool","nodeType":"ElementaryTypeName","src":"10450:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5061,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":5060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5055,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5036,"src":"10470:4:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2b","id":5058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10485:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""},"value":"+"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""}],"id":5057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10478:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5056,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10478:6:21","typeDescriptions":{}}},"id":5059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10478:11:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"10470:19:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"10450:39:21"},{"assignments":[5063],"declarations":[{"constant":false,"id":5063,"mutability":"mutable","name":"negativeSign","nameLocation":"10504:12:21","nodeType":"VariableDeclaration","scope":5134,"src":"10499:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5062,"name":"bool","nodeType":"ElementaryTypeName","src":"10499:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5070,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5064,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5036,"src":"10519:4:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2d","id":5067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10534:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""}],"id":5066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10527:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5065,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10527:6:21","typeDescriptions":{}}},"id":5068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10527:11:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"10519:19:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"10499:39:21"},{"assignments":[5072],"declarations":[{"constant":false,"id":5072,"mutability":"mutable","name":"offset","nameLocation":"10556:6:21","nodeType":"VariableDeclaration","scope":5134,"src":"10548:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5071,"name":"uint256","nodeType":"ElementaryTypeName","src":"10548:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5079,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5073,"name":"positiveSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"10566:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":5074,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5063,"src":"10582:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10566:28:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5076,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10565:30:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10596:6:21","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"10565:37:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":5078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10565:39:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10548:56:21"},{"assignments":[5081,5083],"declarations":[{"constant":false,"id":5081,"mutability":"mutable","name":"absSuccess","nameLocation":"10621:10:21","nodeType":"VariableDeclaration","scope":5134,"src":"10616:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5080,"name":"bool","nodeType":"ElementaryTypeName","src":"10616:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5083,"mutability":"mutable","name":"absValue","nameLocation":"10641:8:21","nodeType":"VariableDeclaration","scope":5134,"src":"10633:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5082,"name":"uint256","nodeType":"ElementaryTypeName","src":"10633:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5091,"initialValue":{"arguments":[{"id":5085,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"10666:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5086,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"10673:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5087,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5072,"src":"10681:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10673:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5089,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5021,"src":"10689:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5084,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[4794,4831],"referencedDeclaration":4831,"src":"10653:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10653:40:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10615:78:21"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5092,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5081,"src":"10708:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5093,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5083,"src":"10722:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5094,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"10733:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10722:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10708:39:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5112,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5081,"src":"10850:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":5113,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5063,"src":"10864:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10850:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5115,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5083,"src":"10880:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5116,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"10892:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10880:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10850:56:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10978:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10985:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5130,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10977:10:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5027,"id":5131,"nodeType":"Return","src":"10970:17:21"},"id":5132,"nodeType":"IfStatement","src":"10846:141:21","trueBody":{"id":5127,"nodeType":"Block","src":"10908:56:21","statements":[{"expression":{"components":[{"hexValue":"74727565","id":5119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10930:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"arguments":[{"id":5122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10941:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5121,"name":"int256","nodeType":"ElementaryTypeName","src":"10941:6:21","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":5120,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"10936:4:21","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10936:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":5124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10949:3:21","memberName":"min","nodeType":"MemberAccess","src":"10936:16:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5125,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10929:24:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":5027,"id":5126,"nodeType":"Return","src":"10922:31:21"}]}},"id":5133,"nodeType":"IfStatement","src":"10704:283:21","trueBody":{"id":5111,"nodeType":"Block","src":"10749:91:21","statements":[{"expression":{"components":[{"hexValue":"74727565","id":5097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10771:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"condition":{"id":5098,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5063,"src":"10777:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5106,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5083,"src":"10819:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10812:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5104,"name":"int256","nodeType":"ElementaryTypeName","src":"10812:6:21","typeDescriptions":{}}},"id":5107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10812:16:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10777:51:21","trueExpression":{"id":5103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10792:17:21","subExpression":{"arguments":[{"id":5101,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5083,"src":"10800:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10793:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5099,"name":"int256","nodeType":"ElementaryTypeName","src":"10793:6:21","typeDescriptions":{}}},"id":5102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10793:16:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5109,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10770:59:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":5027,"id":5110,"nodeType":"Return","src":"10763:66:21"}]}}]},"documentation":{"id":5015,"nodeType":"StructuredDocumentation","src":"9788:223:21","text":" @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":5135,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseIntUncheckedBounds","nameLocation":"10025:27:21","nodeType":"FunctionDefinition","parameters":{"id":5022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5017,"mutability":"mutable","name":"input","nameLocation":"10076:5:21","nodeType":"VariableDeclaration","scope":5135,"src":"10062:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5016,"name":"string","nodeType":"ElementaryTypeName","src":"10062:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5019,"mutability":"mutable","name":"begin","nameLocation":"10099:5:21","nodeType":"VariableDeclaration","scope":5135,"src":"10091:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5018,"name":"uint256","nodeType":"ElementaryTypeName","src":"10091:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5021,"mutability":"mutable","name":"end","nameLocation":"10122:3:21","nodeType":"VariableDeclaration","scope":5135,"src":"10114:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5020,"name":"uint256","nodeType":"ElementaryTypeName","src":"10114:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10052:79:21"},"returnParameters":{"id":5027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5024,"mutability":"mutable","name":"success","nameLocation":"10159:7:21","nodeType":"VariableDeclaration","scope":5135,"src":"10154:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5023,"name":"bool","nodeType":"ElementaryTypeName","src":"10154:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5026,"mutability":"mutable","name":"value","nameLocation":"10175:5:21","nodeType":"VariableDeclaration","scope":5135,"src":"10168:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5025,"name":"int256","nodeType":"ElementaryTypeName","src":"10168:6:21","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"10153:28:21"},"scope":5814,"src":"10016:978:21","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5153,"nodeType":"Block","src":"11339:67:21","statements":[{"expression":{"arguments":[{"id":5144,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5138,"src":"11369:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11376:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5148,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5138,"src":"11385:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11379:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5146,"name":"bytes","nodeType":"ElementaryTypeName","src":"11379:5:21","typeDescriptions":{}}},"id":5149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11379:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11392:6:21","memberName":"length","nodeType":"MemberAccess","src":"11379:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5143,"name":"parseHexUint","nodeType":"Identifier","overloadedDeclarations":[5154,5185],"referencedDeclaration":5185,"src":"11356:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (uint256)"}},"id":5151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11356:43:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5142,"id":5152,"nodeType":"Return","src":"11349:50:21"}]},"documentation":{"id":5136,"nodeType":"StructuredDocumentation","src":"11000:259:21","text":" @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."},"id":5154,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"11273:12:21","nodeType":"FunctionDefinition","parameters":{"id":5139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5138,"mutability":"mutable","name":"input","nameLocation":"11300:5:21","nodeType":"VariableDeclaration","scope":5154,"src":"11286:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5137,"name":"string","nodeType":"ElementaryTypeName","src":"11286:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11285:21:21"},"returnParameters":{"id":5142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5154,"src":"11330:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5140,"name":"uint256","nodeType":"ElementaryTypeName","src":"11330:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11329:9:21"},"scope":5814,"src":"11264:142:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5184,"nodeType":"Block","src":"11827:156:21","statements":[{"assignments":[5167,5169],"declarations":[{"constant":false,"id":5167,"mutability":"mutable","name":"success","nameLocation":"11843:7:21","nodeType":"VariableDeclaration","scope":5184,"src":"11838:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5166,"name":"bool","nodeType":"ElementaryTypeName","src":"11838:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5169,"mutability":"mutable","name":"value","nameLocation":"11860:5:21","nodeType":"VariableDeclaration","scope":5184,"src":"11852:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5168,"name":"uint256","nodeType":"ElementaryTypeName","src":"11852:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5175,"initialValue":{"arguments":[{"id":5171,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5157,"src":"11885:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5172,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5159,"src":"11892:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5173,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5161,"src":"11899:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5170,"name":"tryParseHexUint","nodeType":"Identifier","overloadedDeclarations":[5206,5243],"referencedDeclaration":5243,"src":"11869:15:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11869:34:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11837:66:21"},{"condition":{"id":5177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11917:8:21","subExpression":{"id":5176,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"11918:7:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5181,"nodeType":"IfStatement","src":"11913:41:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5178,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"11934:18:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11934:20:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5180,"nodeType":"RevertStatement","src":"11927:27:21"}},{"expression":{"id":5182,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"11971:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5165,"id":5183,"nodeType":"Return","src":"11964:12:21"}]},"documentation":{"id":5155,"nodeType":"StructuredDocumentation","src":"11412:307:21","text":" @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."},"id":5185,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"11733:12:21","nodeType":"FunctionDefinition","parameters":{"id":5162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5157,"mutability":"mutable","name":"input","nameLocation":"11760:5:21","nodeType":"VariableDeclaration","scope":5185,"src":"11746:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5156,"name":"string","nodeType":"ElementaryTypeName","src":"11746:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5159,"mutability":"mutable","name":"begin","nameLocation":"11775:5:21","nodeType":"VariableDeclaration","scope":5185,"src":"11767:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5158,"name":"uint256","nodeType":"ElementaryTypeName","src":"11767:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5161,"mutability":"mutable","name":"end","nameLocation":"11790:3:21","nodeType":"VariableDeclaration","scope":5185,"src":"11782:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5160,"name":"uint256","nodeType":"ElementaryTypeName","src":"11782:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11745:49:21"},"returnParameters":{"id":5165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5185,"src":"11818:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5163,"name":"uint256","nodeType":"ElementaryTypeName","src":"11818:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11817:9:21"},"scope":5814,"src":"11724:259:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5205,"nodeType":"Block","src":"12310:86:21","statements":[{"expression":{"arguments":[{"id":5196,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5188,"src":"12359:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12366:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5200,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5188,"src":"12375:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12369:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5198,"name":"bytes","nodeType":"ElementaryTypeName","src":"12369:5:21","typeDescriptions":{}}},"id":5201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12369:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12382:6:21","memberName":"length","nodeType":"MemberAccess","src":"12369:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5195,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5346,"src":"12327:31:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12327:62:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5194,"id":5204,"nodeType":"Return","src":"12320:69:21"}]},"documentation":{"id":5186,"nodeType":"StructuredDocumentation","src":"11989:218:21","text":" @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":5206,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"12221:15:21","nodeType":"FunctionDefinition","parameters":{"id":5189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5188,"mutability":"mutable","name":"input","nameLocation":"12251:5:21","nodeType":"VariableDeclaration","scope":5206,"src":"12237:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5187,"name":"string","nodeType":"ElementaryTypeName","src":"12237:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"12236:21:21"},"returnParameters":{"id":5194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5191,"mutability":"mutable","name":"success","nameLocation":"12286:7:21","nodeType":"VariableDeclaration","scope":5206,"src":"12281:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5190,"name":"bool","nodeType":"ElementaryTypeName","src":"12281:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5193,"mutability":"mutable","name":"value","nameLocation":"12303:5:21","nodeType":"VariableDeclaration","scope":5206,"src":"12295:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5192,"name":"uint256","nodeType":"ElementaryTypeName","src":"12295:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12280:29:21"},"scope":5814,"src":"12212:184:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5242,"nodeType":"Block","src":"12804:147:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5220,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5213,"src":"12818:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5223,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5209,"src":"12830:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12824:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5221,"name":"bytes","nodeType":"ElementaryTypeName","src":"12824:5:21","typeDescriptions":{}}},"id":5224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12824:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12837:6:21","memberName":"length","nodeType":"MemberAccess","src":"12824:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12818:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5227,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"12847:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5228,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5213,"src":"12855:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12847:11:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12818:40:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5235,"nodeType":"IfStatement","src":"12814:63:21","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12868:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12875:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5233,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12867:10:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5219,"id":5234,"nodeType":"Return","src":"12860:17:21"}},{"expression":{"arguments":[{"id":5237,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5209,"src":"12926:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5238,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"12933:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5239,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5213,"src":"12940:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5236,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5346,"src":"12894:31:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12894:50:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5219,"id":5241,"nodeType":"Return","src":"12887:57:21"}]},"documentation":{"id":5207,"nodeType":"StructuredDocumentation","src":"12402:241:21","text":" @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\n invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":5243,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"12657:15:21","nodeType":"FunctionDefinition","parameters":{"id":5214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5209,"mutability":"mutable","name":"input","nameLocation":"12696:5:21","nodeType":"VariableDeclaration","scope":5243,"src":"12682:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5208,"name":"string","nodeType":"ElementaryTypeName","src":"12682:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5211,"mutability":"mutable","name":"begin","nameLocation":"12719:5:21","nodeType":"VariableDeclaration","scope":5243,"src":"12711:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5210,"name":"uint256","nodeType":"ElementaryTypeName","src":"12711:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5213,"mutability":"mutable","name":"end","nameLocation":"12742:3:21","nodeType":"VariableDeclaration","scope":5243,"src":"12734:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5212,"name":"uint256","nodeType":"ElementaryTypeName","src":"12734:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12672:79:21"},"returnParameters":{"id":5219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5216,"mutability":"mutable","name":"success","nameLocation":"12780:7:21","nodeType":"VariableDeclaration","scope":5243,"src":"12775:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5215,"name":"bool","nodeType":"ElementaryTypeName","src":"12775:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5218,"mutability":"mutable","name":"value","nameLocation":"12797:5:21","nodeType":"VariableDeclaration","scope":5243,"src":"12789:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5217,"name":"uint256","nodeType":"ElementaryTypeName","src":"12789:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12774:29:21"},"scope":5814,"src":"12648:303:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5345,"nodeType":"Block","src":"13360:881:21","statements":[{"assignments":[5258],"declarations":[{"constant":false,"id":5258,"mutability":"mutable","name":"buffer","nameLocation":"13383:6:21","nodeType":"VariableDeclaration","scope":5345,"src":"13370:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5257,"name":"bytes","nodeType":"ElementaryTypeName","src":"13370:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5263,"initialValue":{"arguments":[{"id":5261,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5246,"src":"13398:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13392:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5259,"name":"bytes","nodeType":"ElementaryTypeName","src":"13392:5:21","typeDescriptions":{}}},"id":5262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13392:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"13370:34:21"},{"assignments":[5265],"declarations":[{"constant":false,"id":5265,"mutability":"mutable","name":"hasPrefix","nameLocation":"13457:9:21","nodeType":"VariableDeclaration","scope":5345,"src":"13452:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5264,"name":"bool","nodeType":"ElementaryTypeName","src":"13452:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5285,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5266,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5250,"src":"13470:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5267,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5248,"src":"13476:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13484:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13476:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13470:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5271,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13469:17:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":5283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":5275,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5258,"src":"13520:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5276,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5248,"src":"13528:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5274,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"13497:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":5277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13497:37:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13490:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":5272,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13490:6:21","typeDescriptions":{}}},"id":5278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13490:45:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":5281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13546:4:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":5280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13539:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":5279,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13539:6:21","typeDescriptions":{}}},"id":5282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13539:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"13490:61:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13469:82:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"13452:99:21"},{"assignments":[5287],"declarations":[{"constant":false,"id":5287,"mutability":"mutable","name":"offset","nameLocation":"13640:6:21","nodeType":"VariableDeclaration","scope":5345,"src":"13632:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5286,"name":"uint256","nodeType":"ElementaryTypeName","src":"13632:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5293,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5288,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"13649:9:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13659:6:21","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"13649:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":5290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13649:18:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13670:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13649:22:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13632:39:21"},{"assignments":[5295],"declarations":[{"constant":false,"id":5295,"mutability":"mutable","name":"result","nameLocation":"13690:6:21","nodeType":"VariableDeclaration","scope":5345,"src":"13682:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5294,"name":"uint256","nodeType":"ElementaryTypeName","src":"13682:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5297,"initialValue":{"hexValue":"30","id":5296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13699:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13682:18:21"},{"body":{"id":5339,"nodeType":"Block","src":"13757:447:21","statements":[{"assignments":[5311],"declarations":[{"constant":false,"id":5311,"mutability":"mutable","name":"chr","nameLocation":"13777:3:21","nodeType":"VariableDeclaration","scope":5339,"src":"13771:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5310,"name":"uint8","nodeType":"ElementaryTypeName","src":"13771:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5321,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":5316,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5258,"src":"13826:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5317,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5299,"src":"13834:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5315,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"13803:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":5318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13803:33:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13796:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5313,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13796:6:21","typeDescriptions":{}}},"id":5319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13796:41:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5312,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5581,"src":"13783:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":5320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13783:55:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13771:67:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5322,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5311,"src":"13856:3:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3135","id":5323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13862:2:21","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"13856:8:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5329,"nodeType":"IfStatement","src":"13852:31:21","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13874:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13881:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13873:10:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5256,"id":5328,"nodeType":"Return","src":"13866:17:21"}},{"expression":{"id":5332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5330,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5295,"src":"13897:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3136","id":5331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13907:2:21","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13897:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5333,"nodeType":"ExpressionStatement","src":"13897:12:21"},{"id":5338,"nodeType":"UncheckedBlock","src":"13923:271:21","statements":[{"expression":{"id":5336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5334,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5295,"src":"14166:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5335,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5311,"src":"14176:3:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14166:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5337,"nodeType":"ExpressionStatement","src":"14166:13:21"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5304,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5299,"src":"13743:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5305,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5250,"src":"13747:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13743:7:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5340,"initializationExpression":{"assignments":[5299],"declarations":[{"constant":false,"id":5299,"mutability":"mutable","name":"i","nameLocation":"13723:1:21","nodeType":"VariableDeclaration","scope":5340,"src":"13715:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5298,"name":"uint256","nodeType":"ElementaryTypeName","src":"13715:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5303,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5300,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5248,"src":"13727:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5301,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5287,"src":"13735:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13727:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13715:26:21"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13752:3:21","subExpression":{"id":5307,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5299,"src":"13754:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5309,"nodeType":"ExpressionStatement","src":"13752:3:21"},"nodeType":"ForStatement","src":"13710:494:21"},{"expression":{"components":[{"hexValue":"74727565","id":5341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14221:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":5342,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5295,"src":"14227:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14220:14:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5256,"id":5344,"nodeType":"Return","src":"14213:21:21"}]},"documentation":{"id":5244,"nodeType":"StructuredDocumentation","src":"12957:227:21","text":" @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":5346,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseHexUintUncheckedBounds","nameLocation":"13198:31:21","nodeType":"FunctionDefinition","parameters":{"id":5251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5246,"mutability":"mutable","name":"input","nameLocation":"13253:5:21","nodeType":"VariableDeclaration","scope":5346,"src":"13239:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5245,"name":"string","nodeType":"ElementaryTypeName","src":"13239:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5248,"mutability":"mutable","name":"begin","nameLocation":"13276:5:21","nodeType":"VariableDeclaration","scope":5346,"src":"13268:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5247,"name":"uint256","nodeType":"ElementaryTypeName","src":"13268:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5250,"mutability":"mutable","name":"end","nameLocation":"13299:3:21","nodeType":"VariableDeclaration","scope":5346,"src":"13291:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5249,"name":"uint256","nodeType":"ElementaryTypeName","src":"13291:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13229:79:21"},"returnParameters":{"id":5256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5253,"mutability":"mutable","name":"success","nameLocation":"13336:7:21","nodeType":"VariableDeclaration","scope":5346,"src":"13331:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5252,"name":"bool","nodeType":"ElementaryTypeName","src":"13331:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5255,"mutability":"mutable","name":"value","nameLocation":"13353:5:21","nodeType":"VariableDeclaration","scope":5346,"src":"13345:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5254,"name":"uint256","nodeType":"ElementaryTypeName","src":"13345:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13330:29:21"},"scope":5814,"src":"13189:1052:21","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5364,"nodeType":"Block","src":"14539:67:21","statements":[{"expression":{"arguments":[{"id":5355,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5349,"src":"14569:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14576:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5359,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5349,"src":"14585:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14579:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5357,"name":"bytes","nodeType":"ElementaryTypeName","src":"14579:5:21","typeDescriptions":{}}},"id":5360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14579:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14592:6:21","memberName":"length","nodeType":"MemberAccess","src":"14579:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5354,"name":"parseAddress","nodeType":"Identifier","overloadedDeclarations":[5365,5396],"referencedDeclaration":5396,"src":"14556:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (address)"}},"id":5362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14556:43:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5353,"id":5363,"nodeType":"Return","src":"14549:50:21"}]},"documentation":{"id":5347,"nodeType":"StructuredDocumentation","src":"14247:212:21","text":" @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as an `address`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`"},"id":5365,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"14473:12:21","nodeType":"FunctionDefinition","parameters":{"id":5350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5349,"mutability":"mutable","name":"input","nameLocation":"14500:5:21","nodeType":"VariableDeclaration","scope":5365,"src":"14486:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5348,"name":"string","nodeType":"ElementaryTypeName","src":"14486:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14485:21:21"},"returnParameters":{"id":5353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5352,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5365,"src":"14530:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5351,"name":"address","nodeType":"ElementaryTypeName","src":"14530:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14529:9:21"},"scope":5814,"src":"14464:142:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5395,"nodeType":"Block","src":"14979:165:21","statements":[{"assignments":[5378,5380],"declarations":[{"constant":false,"id":5378,"mutability":"mutable","name":"success","nameLocation":"14995:7:21","nodeType":"VariableDeclaration","scope":5395,"src":"14990:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5377,"name":"bool","nodeType":"ElementaryTypeName","src":"14990:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5380,"mutability":"mutable","name":"value","nameLocation":"15012:5:21","nodeType":"VariableDeclaration","scope":5395,"src":"15004:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5379,"name":"address","nodeType":"ElementaryTypeName","src":"15004:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5386,"initialValue":{"arguments":[{"id":5382,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5368,"src":"15037:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5383,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5370,"src":"15044:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5384,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5372,"src":"15051:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5381,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[5417,5521],"referencedDeclaration":5521,"src":"15021:15:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,address)"}},"id":5385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15021:34:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"nodeType":"VariableDeclarationStatement","src":"14989:66:21"},{"condition":{"id":5388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15069:8:21","subExpression":{"id":5387,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5378,"src":"15070:7:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5392,"nodeType":"IfStatement","src":"15065:50:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5389,"name":"StringsInvalidAddressFormat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4349,"src":"15086:27:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15086:29:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5391,"nodeType":"RevertStatement","src":"15079:36:21"}},{"expression":{"id":5393,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5380,"src":"15132:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5376,"id":5394,"nodeType":"Return","src":"15125:12:21"}]},"documentation":{"id":5366,"nodeType":"StructuredDocumentation","src":"14612:259:21","text":" @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`"},"id":5396,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"14885:12:21","nodeType":"FunctionDefinition","parameters":{"id":5373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5368,"mutability":"mutable","name":"input","nameLocation":"14912:5:21","nodeType":"VariableDeclaration","scope":5396,"src":"14898:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5367,"name":"string","nodeType":"ElementaryTypeName","src":"14898:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5370,"mutability":"mutable","name":"begin","nameLocation":"14927:5:21","nodeType":"VariableDeclaration","scope":5396,"src":"14919:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5369,"name":"uint256","nodeType":"ElementaryTypeName","src":"14919:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5372,"mutability":"mutable","name":"end","nameLocation":"14942:3:21","nodeType":"VariableDeclaration","scope":5396,"src":"14934:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5371,"name":"uint256","nodeType":"ElementaryTypeName","src":"14934:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14897:49:21"},"returnParameters":{"id":5376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5396,"src":"14970:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5374,"name":"address","nodeType":"ElementaryTypeName","src":"14970:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14969:9:21"},"scope":5814,"src":"14876:268:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5416,"nodeType":"Block","src":"15451:70:21","statements":[{"expression":{"arguments":[{"id":5407,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5399,"src":"15484:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15491:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5411,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5399,"src":"15500:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15494:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5409,"name":"bytes","nodeType":"ElementaryTypeName","src":"15494:5:21","typeDescriptions":{}}},"id":5412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15494:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15507:6:21","memberName":"length","nodeType":"MemberAccess","src":"15494:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5406,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[5417,5521],"referencedDeclaration":5521,"src":"15468:15:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,address)"}},"id":5414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15468:46:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":5405,"id":5415,"nodeType":"Return","src":"15461:53:21"}]},"documentation":{"id":5397,"nodeType":"StructuredDocumentation","src":"15150:198:21","text":" @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\n formatted address. See {parseAddress-string} requirements."},"id":5417,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"15362:15:21","nodeType":"FunctionDefinition","parameters":{"id":5400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5399,"mutability":"mutable","name":"input","nameLocation":"15392:5:21","nodeType":"VariableDeclaration","scope":5417,"src":"15378:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5398,"name":"string","nodeType":"ElementaryTypeName","src":"15378:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"15377:21:21"},"returnParameters":{"id":5405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5402,"mutability":"mutable","name":"success","nameLocation":"15427:7:21","nodeType":"VariableDeclaration","scope":5417,"src":"15422:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5401,"name":"bool","nodeType":"ElementaryTypeName","src":"15422:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5404,"mutability":"mutable","name":"value","nameLocation":"15444:5:21","nodeType":"VariableDeclaration","scope":5417,"src":"15436:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5403,"name":"address","nodeType":"ElementaryTypeName","src":"15436:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15421:29:21"},"scope":5814,"src":"15353:168:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5520,"nodeType":"Block","src":"15914:733:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5431,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5424,"src":"15928:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5434,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5420,"src":"15940:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15934:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5432,"name":"bytes","nodeType":"ElementaryTypeName","src":"15934:5:21","typeDescriptions":{}}},"id":5435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15934:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15947:6:21","memberName":"length","nodeType":"MemberAccess","src":"15934:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15928:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5438,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"15957:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5439,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5424,"src":"15965:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15957:11:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15928:40:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5449,"nodeType":"IfStatement","src":"15924:72:21","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15978:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":5445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15993:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5444,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15985:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5443,"name":"address","nodeType":"ElementaryTypeName","src":"15985:7:21","typeDescriptions":{}}},"id":5446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15985:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5447,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15977:19:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":5430,"id":5448,"nodeType":"Return","src":"15970:26:21"}},{"assignments":[5451],"declarations":[{"constant":false,"id":5451,"mutability":"mutable","name":"hasPrefix","nameLocation":"16012:9:21","nodeType":"VariableDeclaration","scope":5520,"src":"16007:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5450,"name":"bool","nodeType":"ElementaryTypeName","src":"16007:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5474,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5452,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5424,"src":"16025:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5453,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"16031:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16039:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16031:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16025:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16024:17:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":5472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":5463,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5420,"src":"16081:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16075:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5461,"name":"bytes","nodeType":"ElementaryTypeName","src":"16075:5:21","typeDescriptions":{}}},"id":5464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16075:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5465,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"16089:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5460,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"16052:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":5466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16052:43:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16045:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":5458,"name":"bytes2","nodeType":"ElementaryTypeName","src":"16045:6:21","typeDescriptions":{}}},"id":5467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16045:51:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":5470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16107:4:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":5469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16100:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":5468,"name":"bytes2","nodeType":"ElementaryTypeName","src":"16100:6:21","typeDescriptions":{}}},"id":5471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16100:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"16045:67:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16024:88:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"16007:105:21"},{"assignments":[5476],"declarations":[{"constant":false,"id":5476,"mutability":"mutable","name":"expectedLength","nameLocation":"16201:14:21","nodeType":"VariableDeclaration","scope":5520,"src":"16193:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5475,"name":"uint256","nodeType":"ElementaryTypeName","src":"16193:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5484,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3430","id":5477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16218:2:21","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5478,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5451,"src":"16223:9:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16233:6:21","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"16223:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":5480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16223:18:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16244:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"16223:22:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16218:27:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16193:52:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5485,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5424,"src":"16310:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5486,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"16316:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16310:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5488,"name":"expectedLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5476,"src":"16325:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16310:29:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5518,"nodeType":"Block","src":"16590:51:21","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":5511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16612:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":5514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16627:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16619:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5512,"name":"address","nodeType":"ElementaryTypeName","src":"16619:7:21","typeDescriptions":{}}},"id":5515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16619:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5516,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16611:19:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":5430,"id":5517,"nodeType":"Return","src":"16604:26:21"}]},"id":5519,"nodeType":"IfStatement","src":"16306:335:21","trueBody":{"id":5510,"nodeType":"Block","src":"16341:243:21","statements":[{"assignments":[5491,5493],"declarations":[{"constant":false,"id":5491,"mutability":"mutable","name":"s","nameLocation":"16462:1:21","nodeType":"VariableDeclaration","scope":5510,"src":"16457:6:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5490,"name":"bool","nodeType":"ElementaryTypeName","src":"16457:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5493,"mutability":"mutable","name":"v","nameLocation":"16473:1:21","nodeType":"VariableDeclaration","scope":5510,"src":"16465:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5492,"name":"uint256","nodeType":"ElementaryTypeName","src":"16465:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5499,"initialValue":{"arguments":[{"id":5495,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5420,"src":"16510:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5496,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"16517:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5497,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5424,"src":"16524:3:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5494,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5346,"src":"16478:31:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16478:50:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16456:72:21"},{"expression":{"components":[{"id":5500,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5491,"src":"16550:1:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"id":5505,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"16569:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16561:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5503,"name":"uint160","nodeType":"ElementaryTypeName","src":"16561:7:21","typeDescriptions":{}}},"id":5506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16561:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":5502,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16553:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5501,"name":"address","nodeType":"ElementaryTypeName","src":"16553:7:21","typeDescriptions":{}}},"id":5507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16553:19:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5508,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16549:24:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":5430,"id":5509,"nodeType":"Return","src":"16542:31:21"}]}}]},"documentation":{"id":5418,"nodeType":"StructuredDocumentation","src":"15527:226:21","text":" @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\n formatted address. See {parseAddress-string-uint256-uint256} requirements."},"id":5521,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"15767:15:21","nodeType":"FunctionDefinition","parameters":{"id":5425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5420,"mutability":"mutable","name":"input","nameLocation":"15806:5:21","nodeType":"VariableDeclaration","scope":5521,"src":"15792:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5419,"name":"string","nodeType":"ElementaryTypeName","src":"15792:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5422,"mutability":"mutable","name":"begin","nameLocation":"15829:5:21","nodeType":"VariableDeclaration","scope":5521,"src":"15821:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5421,"name":"uint256","nodeType":"ElementaryTypeName","src":"15821:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5424,"mutability":"mutable","name":"end","nameLocation":"15852:3:21","nodeType":"VariableDeclaration","scope":5521,"src":"15844:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5423,"name":"uint256","nodeType":"ElementaryTypeName","src":"15844:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15782:79:21"},"returnParameters":{"id":5430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5427,"mutability":"mutable","name":"success","nameLocation":"15890:7:21","nodeType":"VariableDeclaration","scope":5521,"src":"15885:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5426,"name":"bool","nodeType":"ElementaryTypeName","src":"15885:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5429,"mutability":"mutable","name":"value","nameLocation":"15907:5:21","nodeType":"VariableDeclaration","scope":5521,"src":"15899:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5428,"name":"address","nodeType":"ElementaryTypeName","src":"15899:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15884:29:21"},"scope":5814,"src":"15758:889:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5580,"nodeType":"Block","src":"16716:461:21","statements":[{"assignments":[5529],"declarations":[{"constant":false,"id":5529,"mutability":"mutable","name":"value","nameLocation":"16732:5:21","nodeType":"VariableDeclaration","scope":5580,"src":"16726:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5528,"name":"uint8","nodeType":"ElementaryTypeName","src":"16726:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5534,"initialValue":{"arguments":[{"id":5532,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5523,"src":"16746:3:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16740:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5530,"name":"uint8","nodeType":"ElementaryTypeName","src":"16740:5:21","typeDescriptions":{}}},"id":5533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16740:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"16726:24:21"},{"id":5577,"nodeType":"UncheckedBlock","src":"16910:238:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5535,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"16938:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3437","id":5536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16946:2:21","typeDescriptions":{"typeIdentifier":"t_rational_47_by_1","typeString":"int_const 47"},"value":"47"},"src":"16938:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5538,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"16952:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3538","id":5539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16960:2:21","typeDescriptions":{"typeIdentifier":"t_rational_58_by_1","typeString":"int_const 58"},"value":"58"},"src":"16952:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16938:24:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5546,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"16998:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":5547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17006:2:21","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"16998:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"17012:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"313033","id":5550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17020:3:21","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"src":"17012:11:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16998:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5557,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"17059:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3634","id":5558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17067:2:21","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"17059:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5560,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"17073:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3731","id":5561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17081:2:21","typeDescriptions":{"typeIdentifier":"t_rational_71_by_1","typeString":"int_const 71"},"value":"71"},"src":"17073:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17059:24:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"expression":{"arguments":[{"id":5570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17127:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5569,"name":"uint8","nodeType":"ElementaryTypeName","src":"17127:5:21","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":5568,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"17122:4:21","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17122:11:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":5572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17134:3:21","memberName":"max","nodeType":"MemberAccess","src":"17122:15:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5527,"id":5573,"nodeType":"Return","src":"17115:22:21"},"id":5574,"nodeType":"IfStatement","src":"17055:82:21","trueBody":{"expression":{"id":5566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5564,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"17085:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3535","id":5565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17094:2:21","typeDescriptions":{"typeIdentifier":"t_rational_55_by_1","typeString":"int_const 55"},"value":"55"},"src":"17085:11:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5567,"nodeType":"ExpressionStatement","src":"17085:11:21"}},"id":5575,"nodeType":"IfStatement","src":"16994:143:21","trueBody":{"expression":{"id":5555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5553,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"17025:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3837","id":5554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17034:2:21","typeDescriptions":{"typeIdentifier":"t_rational_87_by_1","typeString":"int_const 87"},"value":"87"},"src":"17025:11:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5556,"nodeType":"ExpressionStatement","src":"17025:11:21"}},"id":5576,"nodeType":"IfStatement","src":"16934:203:21","trueBody":{"expression":{"id":5544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5542,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"16964:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3438","id":5543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16973:2:21","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"src":"16964:11:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5545,"nodeType":"ExpressionStatement","src":"16964:11:21"}}]},{"expression":{"id":5578,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"17165:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5527,"id":5579,"nodeType":"Return","src":"17158:12:21"}]},"id":5581,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseChr","nameLocation":"16662:12:21","nodeType":"FunctionDefinition","parameters":{"id":5524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5523,"mutability":"mutable","name":"chr","nameLocation":"16682:3:21","nodeType":"VariableDeclaration","scope":5581,"src":"16675:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":5522,"name":"bytes1","nodeType":"ElementaryTypeName","src":"16675:6:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"16674:12:21"},"returnParameters":{"id":5527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5526,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5581,"src":"16709:5:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5525,"name":"uint8","nodeType":"ElementaryTypeName","src":"16709:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16708:7:21"},"scope":5814,"src":"16653:524:21","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5788,"nodeType":"Block","src":"17984:2333:21","statements":[{"assignments":[5590],"declarations":[{"constant":false,"id":5590,"mutability":"mutable","name":"buffer","nameLocation":"18007:6:21","nodeType":"VariableDeclaration","scope":5788,"src":"17994:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5589,"name":"bytes","nodeType":"ElementaryTypeName","src":"17994:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5595,"initialValue":{"arguments":[{"id":5593,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5584,"src":"18022:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18016:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5591,"name":"bytes","nodeType":"ElementaryTypeName","src":"18016:5:21","typeDescriptions":{}}},"id":5594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18016:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17994:34:21"},{"assignments":[5597],"declarations":[{"constant":false,"id":5597,"mutability":"mutable","name":"output","nameLocation":"18318:6:21","nodeType":"VariableDeclaration","scope":5788,"src":"18305:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5596,"name":"bytes","nodeType":"ElementaryTypeName","src":"18305:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5598,"nodeType":"VariableDeclarationStatement","src":"18305:19:21"},{"AST":{"nativeSrc":"18359:45:21","nodeType":"YulBlock","src":"18359:45:21","statements":[{"nativeSrc":"18373:21:21","nodeType":"YulAssignment","src":"18373:21:21","value":{"arguments":[{"kind":"number","nativeSrc":"18389:4:21","nodeType":"YulLiteral","src":"18389:4:21","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"18383:5:21","nodeType":"YulIdentifier","src":"18383:5:21"},"nativeSrc":"18383:11:21","nodeType":"YulFunctionCall","src":"18383:11:21"},"variableNames":[{"name":"output","nativeSrc":"18373:6:21","nodeType":"YulIdentifier","src":"18373:6:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5597,"isOffset":false,"isSlot":false,"src":"18373:6:21","valueSize":1}],"flags":["memory-safe"],"id":5599,"nodeType":"InlineAssembly","src":"18334:70:21"},{"assignments":[5601],"declarations":[{"constant":false,"id":5601,"mutability":"mutable","name":"outputLength","nameLocation":"18421:12:21","nodeType":"VariableDeclaration","scope":5788,"src":"18413:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5600,"name":"uint256","nodeType":"ElementaryTypeName","src":"18413:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5603,"initialValue":{"hexValue":"30","id":5602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18436:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18413:24:21"},{"body":{"id":5780,"nodeType":"Block","src":"18492:1584:21","statements":[{"assignments":[5616],"declarations":[{"constant":false,"id":5616,"mutability":"mutable","name":"char","nameLocation":"18512:4:21","nodeType":"VariableDeclaration","scope":5780,"src":"18506:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5615,"name":"uint8","nodeType":"ElementaryTypeName","src":"18506:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5627,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":5622,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5590,"src":"18555:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5623,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5605,"src":"18563:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5621,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"18532:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":5624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18532:33:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18525:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5619,"name":"bytes1","nodeType":"ElementaryTypeName","src":"18525:6:21","typeDescriptions":{}}},"id":5625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18525:41:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18519:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5617,"name":"uint8","nodeType":"ElementaryTypeName","src":"18519:5:21","typeDescriptions":{}}},"id":5626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18519:48:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"18506:61:21"},{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5628,"name":"SPECIAL_CHARS_LOOKUP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4336,"src":"18587:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18611:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":5630,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"18616:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18611:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5632,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18610:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18587:34:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5634,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18586:36:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18626:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18586:41:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5637,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18585:43:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5778,"nodeType":"Block","src":"19972:94:21","statements":[{"expression":{"arguments":[{"id":5769,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"20014:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"20022:14:21","subExpression":{"id":5770,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"20022:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":5774,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"20045:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":5773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20038:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5772,"name":"bytes1","nodeType":"ElementaryTypeName","src":"20038:6:21","typeDescriptions":{}}},"id":5775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20038:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5768,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"19990:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19990:61:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5777,"nodeType":"ExpressionStatement","src":"19990:61:21"}]},"id":5779,"nodeType":"IfStatement","src":"18581:1485:21","trueBody":{"id":5767,"nodeType":"Block","src":"18630:1336:21","statements":[{"expression":{"arguments":[{"id":5639,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"18672:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18680:14:21","subExpression":{"id":5640,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"18680:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"5c","id":5642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18696:4:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""}],"id":5638,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"18648:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18648:53:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5644,"nodeType":"ExpressionStatement","src":"18648:53:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5645,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"18723:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783038","id":5646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18731:4:21","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"18723:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5655,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"18816:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783039","id":5656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18824:4:21","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"src":"18816:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5665,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"18909:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783061","id":5666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18917:4:21","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"src":"18909:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5675,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"19002:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783063","id":5676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19010:4:21","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"19002:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5685,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"19095:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783064","id":5686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19103:4:21","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"src":"19095:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5695,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"19188:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783563","id":5696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19196:4:21","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"19188:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5705,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"19282:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783232","id":5706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19290:4:21","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"19282:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5759,"nodeType":"Block","src":"19451:501:21","statements":[{"expression":{"arguments":[{"id":5717,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"19571:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19579:14:21","subExpression":{"id":5718,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"19579:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"75","id":5720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19595:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_32cefdcd8e794145c9af8dd1f4b1fbd92d6e547ae855553080fc8bd19c4883a0","typeString":"literal_string \"u\""},"value":"u"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_32cefdcd8e794145c9af8dd1f4b1fbd92d6e547ae855553080fc8bd19c4883a0","typeString":"literal_string \"u\""}],"id":5716,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"19547:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19547:52:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5722,"nodeType":"ExpressionStatement","src":"19547:52:21"},{"expression":{"arguments":[{"id":5724,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"19645:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19653:14:21","subExpression":{"id":5725,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"19653:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":5727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19669:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""}],"id":5723,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"19621:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19621:52:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5729,"nodeType":"ExpressionStatement","src":"19621:52:21"},{"expression":{"arguments":[{"id":5731,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"19719:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19727:14:21","subExpression":{"id":5732,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"19727:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":5734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19743:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""}],"id":5730,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"19695:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19695:52:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5736,"nodeType":"ExpressionStatement","src":"19695:52:21"},{"expression":{"arguments":[{"id":5738,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"19793:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19801:14:21","subExpression":{"id":5739,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"19801:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":5741,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"19817:10:21","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":5745,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5742,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"19828:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":5743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19836:1:21","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19828:9:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19817:21:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5737,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"19769:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19769:70:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5747,"nodeType":"ExpressionStatement","src":"19769:70:21"},{"expression":{"arguments":[{"id":5749,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"19885:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19893:14:21","subExpression":{"id":5750,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"19893:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":5752,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"19909:10:21","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":5756,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5753,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5616,"src":"19920:4:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783066","id":5754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19927:4:21","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0x0f"},"src":"19920:11:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19909:23:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5748,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"19861:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19861:72:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5758,"nodeType":"ExpressionStatement","src":"19861:72:21"}]},"id":5760,"nodeType":"IfStatement","src":"19278:674:21","trueBody":{"id":5715,"nodeType":"Block","src":"19296:149:21","statements":[{"expression":{"arguments":[{"id":5709,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"19398:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19406:14:21","subExpression":{"id":5710,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"19406:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"22","id":5712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19422:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""},"value":"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""}],"id":5708,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"19374:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19374:52:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5714,"nodeType":"ExpressionStatement","src":"19374:52:21"}]}},"id":5761,"nodeType":"IfStatement","src":"19184:768:21","trueBody":{"expression":{"arguments":[{"id":5699,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"19226:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19234:14:21","subExpression":{"id":5700,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"19234:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"5c","id":5702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19250:4:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""}],"id":5698,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"19202:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19202:53:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5704,"nodeType":"ExpressionStatement","src":"19202:53:21"}},"id":5762,"nodeType":"IfStatement","src":"19091:861:21","trueBody":{"expression":{"arguments":[{"id":5689,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"19133:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19141:14:21","subExpression":{"id":5690,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"19141:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"72","id":5692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19157:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_414f72a4d550cad29f17d9d99a4af64b3776ec5538cd440cef0f03fef2e9e010","typeString":"literal_string \"r\""},"value":"r"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_414f72a4d550cad29f17d9d99a4af64b3776ec5538cd440cef0f03fef2e9e010","typeString":"literal_string \"r\""}],"id":5688,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"19109:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19109:52:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5694,"nodeType":"ExpressionStatement","src":"19109:52:21"}},"id":5763,"nodeType":"IfStatement","src":"18998:954:21","trueBody":{"expression":{"arguments":[{"id":5679,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"19040:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19048:14:21","subExpression":{"id":5680,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"19048:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66","id":5682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19064:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_d1e8aeb79500496ef3dc2e57ba746a8315d048b7a664a2bf948db4fa91960483","typeString":"literal_string \"f\""},"value":"f"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_d1e8aeb79500496ef3dc2e57ba746a8315d048b7a664a2bf948db4fa91960483","typeString":"literal_string \"f\""}],"id":5678,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"19016:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19016:52:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5684,"nodeType":"ExpressionStatement","src":"19016:52:21"}},"id":5764,"nodeType":"IfStatement","src":"18905:1047:21","trueBody":{"expression":{"arguments":[{"id":5669,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"18947:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18955:14:21","subExpression":{"id":5670,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"18955:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"6e","id":5672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18971:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b4ecedb4964a40fe416b16c7bd8b46092040ec42ef0aa69e59f09872f105cf3","typeString":"literal_string \"n\""},"value":"n"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_4b4ecedb4964a40fe416b16c7bd8b46092040ec42ef0aa69e59f09872f105cf3","typeString":"literal_string \"n\""}],"id":5668,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"18923:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18923:52:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5674,"nodeType":"ExpressionStatement","src":"18923:52:21"}},"id":5765,"nodeType":"IfStatement","src":"18812:1140:21","trueBody":{"expression":{"arguments":[{"id":5659,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"18854:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18862:14:21","subExpression":{"id":5660,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"18862:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74","id":5662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18878:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_cac1bb71f0a97c8ac94ca9546b43178a9ad254c7b757ac07433aa6df35cd8089","typeString":"literal_string \"t\""},"value":"t"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_cac1bb71f0a97c8ac94ca9546b43178a9ad254c7b757ac07433aa6df35cd8089","typeString":"literal_string \"t\""}],"id":5658,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"18830:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18830:52:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5664,"nodeType":"ExpressionStatement","src":"18830:52:21"}},"id":5766,"nodeType":"IfStatement","src":"18719:1233:21","trueBody":{"expression":{"arguments":[{"id":5649,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"18761:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18769:14:21","subExpression":{"id":5650,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5601,"src":"18769:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"62","id":5652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18785:3:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510","typeString":"literal_string \"b\""},"value":"b"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510","typeString":"literal_string \"b\""}],"id":5648,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5813,"src":"18737:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18737:52:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5654,"nodeType":"ExpressionStatement","src":"18737:52:21"}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5608,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5605,"src":"18468:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5609,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5590,"src":"18472:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18479:6:21","memberName":"length","nodeType":"MemberAccess","src":"18472:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18468:17:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5781,"initializationExpression":{"assignments":[5605],"declarations":[{"constant":false,"id":5605,"mutability":"mutable","name":"i","nameLocation":"18461:1:21","nodeType":"VariableDeclaration","scope":5781,"src":"18453:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5604,"name":"uint256","nodeType":"ElementaryTypeName","src":"18453:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5607,"initialValue":{"hexValue":"30","id":5606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18465:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18453:13:21"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"18487:3:21","subExpression":{"id":5612,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5605,"src":"18489:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5614,"nodeType":"ExpressionStatement","src":"18487:3:21"},"nodeType":"ForStatement","src":"18448:1628:21"},{"AST":{"nativeSrc":"20164:115:21","nodeType":"YulBlock","src":"20164:115:21","statements":[{"expression":{"arguments":[{"name":"output","nativeSrc":"20185:6:21","nodeType":"YulIdentifier","src":"20185:6:21"},{"name":"outputLength","nativeSrc":"20193:12:21","nodeType":"YulIdentifier","src":"20193:12:21"}],"functionName":{"name":"mstore","nativeSrc":"20178:6:21","nodeType":"YulIdentifier","src":"20178:6:21"},"nativeSrc":"20178:28:21","nodeType":"YulFunctionCall","src":"20178:28:21"},"nativeSrc":"20178:28:21","nodeType":"YulExpressionStatement","src":"20178:28:21"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20226:4:21","nodeType":"YulLiteral","src":"20226:4:21","type":"","value":"0x40"},{"arguments":[{"name":"output","nativeSrc":"20236:6:21","nodeType":"YulIdentifier","src":"20236:6:21"},{"arguments":[{"name":"outputLength","nativeSrc":"20248:12:21","nodeType":"YulIdentifier","src":"20248:12:21"},{"kind":"number","nativeSrc":"20262:4:21","nodeType":"YulLiteral","src":"20262:4:21","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20244:3:21","nodeType":"YulIdentifier","src":"20244:3:21"},"nativeSrc":"20244:23:21","nodeType":"YulFunctionCall","src":"20244:23:21"}],"functionName":{"name":"add","nativeSrc":"20232:3:21","nodeType":"YulIdentifier","src":"20232:3:21"},"nativeSrc":"20232:36:21","nodeType":"YulFunctionCall","src":"20232:36:21"}],"functionName":{"name":"mstore","nativeSrc":"20219:6:21","nodeType":"YulIdentifier","src":"20219:6:21"},"nativeSrc":"20219:50:21","nodeType":"YulFunctionCall","src":"20219:50:21"},"nativeSrc":"20219:50:21","nodeType":"YulExpressionStatement","src":"20219:50:21"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5597,"isOffset":false,"isSlot":false,"src":"20185:6:21","valueSize":1},{"declaration":5597,"isOffset":false,"isSlot":false,"src":"20236:6:21","valueSize":1},{"declaration":5601,"isOffset":false,"isSlot":false,"src":"20193:12:21","valueSize":1},{"declaration":5601,"isOffset":false,"isSlot":false,"src":"20248:12:21","valueSize":1}],"flags":["memory-safe"],"id":5782,"nodeType":"InlineAssembly","src":"20139:140:21"},{"expression":{"arguments":[{"id":5785,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"20303:6:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20296:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":5783,"name":"string","nodeType":"ElementaryTypeName","src":"20296:6:21","typeDescriptions":{}}},"id":5786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20296:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":5588,"id":5787,"nodeType":"Return","src":"20289:21:21"}]},"documentation":{"id":5582,"nodeType":"StructuredDocumentation","src":"17183:717:21","text":" @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\n WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\n NOTE: This function escapes backslashes (including those in \\uXXXX sequences) and the characters in ranges\n defined in section 2.5 of RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). All control characters in U+0000\n to U+001F are escaped (\\b, \\t, \\n, \\f, \\r use short form; others use \\u00XX). ECMAScript's `JSON.parse` does\n recover escaped unicode characters that are not in this range, but other tooling may provide different results."},"id":5789,"implemented":true,"kind":"function","modifiers":[],"name":"escapeJSON","nameLocation":"17914:10:21","nodeType":"FunctionDefinition","parameters":{"id":5585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5584,"mutability":"mutable","name":"input","nameLocation":"17939:5:21","nodeType":"VariableDeclaration","scope":5789,"src":"17925:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5583,"name":"string","nodeType":"ElementaryTypeName","src":"17925:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17924:21:21"},"returnParameters":{"id":5588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5587,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5789,"src":"17969:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5586,"name":"string","nodeType":"ElementaryTypeName","src":"17969:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17968:15:21"},"scope":5814,"src":"17905:2412:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5800,"nodeType":"Block","src":"20702:225:21","statements":[{"AST":{"nativeSrc":"20851:70:21","nodeType":"YulBlock","src":"20851:70:21","statements":[{"nativeSrc":"20865:46:21","nodeType":"YulAssignment","src":"20865:46:21","value":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"20888:6:21","nodeType":"YulIdentifier","src":"20888:6:21"},{"kind":"number","nativeSrc":"20896:4:21","nodeType":"YulLiteral","src":"20896:4:21","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20884:3:21","nodeType":"YulIdentifier","src":"20884:3:21"},"nativeSrc":"20884:17:21","nodeType":"YulFunctionCall","src":"20884:17:21"},{"name":"offset","nativeSrc":"20903:6:21","nodeType":"YulIdentifier","src":"20903:6:21"}],"functionName":{"name":"add","nativeSrc":"20880:3:21","nodeType":"YulIdentifier","src":"20880:3:21"},"nativeSrc":"20880:30:21","nodeType":"YulFunctionCall","src":"20880:30:21"}],"functionName":{"name":"mload","nativeSrc":"20874:5:21","nodeType":"YulIdentifier","src":"20874:5:21"},"nativeSrc":"20874:37:21","nodeType":"YulFunctionCall","src":"20874:37:21"},"variableNames":[{"name":"value","nativeSrc":"20865:5:21","nodeType":"YulIdentifier","src":"20865:5:21"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5792,"isOffset":false,"isSlot":false,"src":"20888:6:21","valueSize":1},{"declaration":5794,"isOffset":false,"isSlot":false,"src":"20903:6:21","valueSize":1},{"declaration":5797,"isOffset":false,"isSlot":false,"src":"20865:5:21","valueSize":1}],"flags":["memory-safe"],"id":5799,"nodeType":"InlineAssembly","src":"20826:95:21"}]},"documentation":{"id":5790,"nodeType":"StructuredDocumentation","src":"20323:268:21","text":" @dev Reads a bytes32 from a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."},"id":5801,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeReadBytesOffset","nameLocation":"20605:22:21","nodeType":"FunctionDefinition","parameters":{"id":5795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5792,"mutability":"mutable","name":"buffer","nameLocation":"20641:6:21","nodeType":"VariableDeclaration","scope":5801,"src":"20628:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5791,"name":"bytes","nodeType":"ElementaryTypeName","src":"20628:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5794,"mutability":"mutable","name":"offset","nameLocation":"20657:6:21","nodeType":"VariableDeclaration","scope":5801,"src":"20649:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5793,"name":"uint256","nodeType":"ElementaryTypeName","src":"20649:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20627:37:21"},"returnParameters":{"id":5798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5797,"mutability":"mutable","name":"value","nameLocation":"20695:5:21","nodeType":"VariableDeclaration","scope":5801,"src":"20687:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5796,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20687:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20686:15:21"},"scope":5814,"src":"20596:331:21","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5812,"nodeType":"Block","src":"21300:235:21","statements":[{"AST":{"nativeSrc":"21449:80:21","nodeType":"YulBlock","src":"21449:80:21","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"21479:6:21","nodeType":"YulIdentifier","src":"21479:6:21"},{"kind":"number","nativeSrc":"21487:4:21","nodeType":"YulLiteral","src":"21487:4:21","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21475:3:21","nodeType":"YulIdentifier","src":"21475:3:21"},"nativeSrc":"21475:17:21","nodeType":"YulFunctionCall","src":"21475:17:21"},{"name":"offset","nativeSrc":"21494:6:21","nodeType":"YulIdentifier","src":"21494:6:21"}],"functionName":{"name":"add","nativeSrc":"21471:3:21","nodeType":"YulIdentifier","src":"21471:3:21"},"nativeSrc":"21471:30:21","nodeType":"YulFunctionCall","src":"21471:30:21"},{"arguments":[{"kind":"number","nativeSrc":"21507:3:21","nodeType":"YulLiteral","src":"21507:3:21","type":"","value":"248"},{"name":"value","nativeSrc":"21512:5:21","nodeType":"YulIdentifier","src":"21512:5:21"}],"functionName":{"name":"shr","nativeSrc":"21503:3:21","nodeType":"YulIdentifier","src":"21503:3:21"},"nativeSrc":"21503:15:21","nodeType":"YulFunctionCall","src":"21503:15:21"}],"functionName":{"name":"mstore8","nativeSrc":"21463:7:21","nodeType":"YulIdentifier","src":"21463:7:21"},"nativeSrc":"21463:56:21","nodeType":"YulFunctionCall","src":"21463:56:21"},"nativeSrc":"21463:56:21","nodeType":"YulExpressionStatement","src":"21463:56:21"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5804,"isOffset":false,"isSlot":false,"src":"21479:6:21","valueSize":1},{"declaration":5806,"isOffset":false,"isSlot":false,"src":"21494:6:21","valueSize":1},{"declaration":5808,"isOffset":false,"isSlot":false,"src":"21512:5:21","valueSize":1}],"flags":["memory-safe"],"id":5811,"nodeType":"InlineAssembly","src":"21424:105:21"}]},"documentation":{"id":5802,"nodeType":"StructuredDocumentation","src":"20933:265:21","text":" @dev Write a bytes1 to a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."},"id":5813,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeWriteBytesOffset","nameLocation":"21212:23:21","nodeType":"FunctionDefinition","parameters":{"id":5809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5804,"mutability":"mutable","name":"buffer","nameLocation":"21249:6:21","nodeType":"VariableDeclaration","scope":5813,"src":"21236:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5803,"name":"bytes","nodeType":"ElementaryTypeName","src":"21236:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5806,"mutability":"mutable","name":"offset","nameLocation":"21265:6:21","nodeType":"VariableDeclaration","scope":5813,"src":"21257:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5805,"name":"uint256","nodeType":"ElementaryTypeName","src":"21257:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5808,"mutability":"mutable","name":"value","nameLocation":"21280:5:21","nodeType":"VariableDeclaration","scope":5813,"src":"21273:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":5807,"name":"bytes1","nodeType":"ElementaryTypeName","src":"21273:6:21","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"21235:51:21"},"returnParameters":{"id":5810,"nodeType":"ParameterList","parameters":[],"src":"21300:0:21"},"scope":5814,"src":"21203:332:21","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":5815,"src":"332:21205:21","usedErrors":[4343,4346,4349],"usedEvents":[]}],"src":"101:21437:21"},"id":21},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[5838],"IERC165":[5850]},"id":5839,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5816,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:22"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":5818,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5839,"sourceUnit":5851,"src":"140:38:22","symbolAliases":[{"foreign":{"id":5817,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"148:7:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5820,"name":"IERC165","nameLocations":["688:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":5850,"src":"688:7:22"},"id":5821,"nodeType":"InheritanceSpecifier","src":"688:7:22"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":5819,"nodeType":"StructuredDocumentation","src":"180:479:22","text":" @dev Implementation of the {IERC165} interface.\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 ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"id":5838,"linearizedBaseContracts":[5838,5850],"name":"ERC165","nameLocation":"678:6:22","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[5849],"body":{"id":5836,"nodeType":"Block","src":"812:64:22","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5829,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5824,"src":"829:11:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5831,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"849:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$5850_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$5850_$","typeString":"type(contract IERC165)"}],"id":5830,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"844:4:22","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"844:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$5850","typeString":"type(contract IERC165)"}},"id":5833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"858:11:22","memberName":"interfaceId","nodeType":"MemberAccess","src":"844:25:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"829:40:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5828,"id":5835,"nodeType":"Return","src":"822:47:22"}]},"documentation":{"id":5822,"nodeType":"StructuredDocumentation","src":"702:23:22","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":5837,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"739:17:22","nodeType":"FunctionDefinition","parameters":{"id":5825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5824,"mutability":"mutable","name":"interfaceId","nameLocation":"764:11:22","nodeType":"VariableDeclaration","scope":5837,"src":"757:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5823,"name":"bytes4","nodeType":"ElementaryTypeName","src":"757:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"756:20:22"},"returnParameters":{"id":5828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5837,"src":"806:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5826,"name":"bool","nodeType":"ElementaryTypeName","src":"806:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"805:6:22"},"scope":5838,"src":"730:146:22","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":5839,"src":"660:218:22","usedErrors":[],"usedEvents":[]}],"src":"114:765:22"},"id":22},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[5850]},"id":5851,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5840,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"115:25:23"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":5841,"nodeType":"StructuredDocumentation","src":"142:280:23","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":5850,"linearizedBaseContracts":[5850],"name":"IERC165","nameLocation":"433:7:23","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5842,"nodeType":"StructuredDocumentation","src":"447:340:23","text":" @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 This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":5849,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"801:17:23","nodeType":"FunctionDefinition","parameters":{"id":5845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5844,"mutability":"mutable","name":"interfaceId","nameLocation":"826:11:23","nodeType":"VariableDeclaration","scope":5849,"src":"819:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5843,"name":"bytes4","nodeType":"ElementaryTypeName","src":"819:6:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"818:20:23"},"returnParameters":{"id":5848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5847,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5849,"src":"862:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5846,"name":"bool","nodeType":"ElementaryTypeName","src":"862:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"861:6:23"},"scope":5850,"src":"792:76:23","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5851,"src":"423:447:23","usedErrors":[],"usedEvents":[]}],"src":"115:756:23"},"id":23},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[7507],"Panic":[3959],"SafeCast":[9272]},"id":7508,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5852,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:24"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"../Panic.sol","id":5854,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7508,"sourceUnit":3960,"src":"129:35:24","symbolAliases":[{"foreign":{"id":5853,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"137:5:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":5856,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7508,"sourceUnit":9273,"src":"165:40:24","symbolAliases":[{"foreign":{"id":5855,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"173:8:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":5857,"nodeType":"StructuredDocumentation","src":"207:73:24","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":7507,"linearizedBaseContracts":[7507],"name":"Math","nameLocation":"289:4:24","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":5862,"members":[{"id":5858,"name":"Floor","nameLocation":"324:5:24","nodeType":"EnumValue","src":"324:5:24"},{"id":5859,"name":"Ceil","nameLocation":"367:4:24","nodeType":"EnumValue","src":"367:4:24"},{"id":5860,"name":"Trunc","nameLocation":"409:5:24","nodeType":"EnumValue","src":"409:5:24"},{"id":5861,"name":"Expand","nameLocation":"439:6:24","nodeType":"EnumValue","src":"439:6:24"}],"name":"Rounding","nameLocation":"305:8:24","nodeType":"EnumDefinition","src":"300:169:24"},{"body":{"id":5875,"nodeType":"Block","src":"731:112:24","statements":[{"AST":{"nativeSrc":"766:71:24","nodeType":"YulBlock","src":"766:71:24","statements":[{"nativeSrc":"780:16:24","nodeType":"YulAssignment","src":"780:16:24","value":{"arguments":[{"name":"a","nativeSrc":"791:1:24","nodeType":"YulIdentifier","src":"791:1:24"},{"name":"b","nativeSrc":"794:1:24","nodeType":"YulIdentifier","src":"794:1:24"}],"functionName":{"name":"add","nativeSrc":"787:3:24","nodeType":"YulIdentifier","src":"787:3:24"},"nativeSrc":"787:9:24","nodeType":"YulFunctionCall","src":"787:9:24"},"variableNames":[{"name":"low","nativeSrc":"780:3:24","nodeType":"YulIdentifier","src":"780:3:24"}]},{"nativeSrc":"809:18:24","nodeType":"YulAssignment","src":"809:18:24","value":{"arguments":[{"name":"low","nativeSrc":"820:3:24","nodeType":"YulIdentifier","src":"820:3:24"},{"name":"a","nativeSrc":"825:1:24","nodeType":"YulIdentifier","src":"825:1:24"}],"functionName":{"name":"lt","nativeSrc":"817:2:24","nodeType":"YulIdentifier","src":"817:2:24"},"nativeSrc":"817:10:24","nodeType":"YulFunctionCall","src":"817:10:24"},"variableNames":[{"name":"high","nativeSrc":"809:4:24","nodeType":"YulIdentifier","src":"809:4:24"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5865,"isOffset":false,"isSlot":false,"src":"791:1:24","valueSize":1},{"declaration":5865,"isOffset":false,"isSlot":false,"src":"825:1:24","valueSize":1},{"declaration":5867,"isOffset":false,"isSlot":false,"src":"794:1:24","valueSize":1},{"declaration":5870,"isOffset":false,"isSlot":false,"src":"809:4:24","valueSize":1},{"declaration":5872,"isOffset":false,"isSlot":false,"src":"780:3:24","valueSize":1},{"declaration":5872,"isOffset":false,"isSlot":false,"src":"820:3:24","valueSize":1}],"flags":["memory-safe"],"id":5874,"nodeType":"InlineAssembly","src":"741:96:24"}]},"documentation":{"id":5863,"nodeType":"StructuredDocumentation","src":"475:163:24","text":" @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low."},"id":5876,"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:24","nodeType":"FunctionDefinition","parameters":{"id":5868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5865,"mutability":"mutable","name":"a","nameLocation":"667:1:24","nodeType":"VariableDeclaration","scope":5876,"src":"659:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5864,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5867,"mutability":"mutable","name":"b","nameLocation":"678:1:24","nodeType":"VariableDeclaration","scope":5876,"src":"670:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5866,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:24"},"returnParameters":{"id":5873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5870,"mutability":"mutable","name":"high","nameLocation":"712:4:24","nodeType":"VariableDeclaration","scope":5876,"src":"704:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5869,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5872,"mutability":"mutable","name":"low","nameLocation":"726:3:24","nodeType":"VariableDeclaration","scope":5876,"src":"718:11:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5871,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:24"},"scope":7507,"src":"643:200:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5889,"nodeType":"Block","src":"1115:462:24","statements":[{"AST":{"nativeSrc":"1437:134:24","nodeType":"YulBlock","src":"1437:134:24","statements":[{"nativeSrc":"1451:30:24","nodeType":"YulVariableDeclaration","src":"1451:30:24","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:24","nodeType":"YulIdentifier","src":"1468:1:24"},{"name":"b","nativeSrc":"1471:1:24","nodeType":"YulIdentifier","src":"1471:1:24"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:24","nodeType":"YulLiteral","src":"1478:1:24","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:24","nodeType":"YulIdentifier","src":"1474:3:24"},"nativeSrc":"1474:6:24","nodeType":"YulFunctionCall","src":"1474:6:24"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:24","nodeType":"YulIdentifier","src":"1461:6:24"},"nativeSrc":"1461:20:24","nodeType":"YulFunctionCall","src":"1461:20:24"},"variables":[{"name":"mm","nativeSrc":"1455:2:24","nodeType":"YulTypedName","src":"1455:2:24","type":""}]},{"nativeSrc":"1494:16:24","nodeType":"YulAssignment","src":"1494:16:24","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:24","nodeType":"YulIdentifier","src":"1505:1:24"},{"name":"b","nativeSrc":"1508:1:24","nodeType":"YulIdentifier","src":"1508:1:24"}],"functionName":{"name":"mul","nativeSrc":"1501:3:24","nodeType":"YulIdentifier","src":"1501:3:24"},"nativeSrc":"1501:9:24","nodeType":"YulFunctionCall","src":"1501:9:24"},"variableNames":[{"name":"low","nativeSrc":"1494:3:24","nodeType":"YulIdentifier","src":"1494:3:24"}]},{"nativeSrc":"1523:38:24","nodeType":"YulAssignment","src":"1523:38:24","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:24","nodeType":"YulIdentifier","src":"1539:2:24"},{"name":"low","nativeSrc":"1543:3:24","nodeType":"YulIdentifier","src":"1543:3:24"}],"functionName":{"name":"sub","nativeSrc":"1535:3:24","nodeType":"YulIdentifier","src":"1535:3:24"},"nativeSrc":"1535:12:24","nodeType":"YulFunctionCall","src":"1535:12:24"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:24","nodeType":"YulIdentifier","src":"1552:2:24"},{"name":"low","nativeSrc":"1556:3:24","nodeType":"YulIdentifier","src":"1556:3:24"}],"functionName":{"name":"lt","nativeSrc":"1549:2:24","nodeType":"YulIdentifier","src":"1549:2:24"},"nativeSrc":"1549:11:24","nodeType":"YulFunctionCall","src":"1549:11:24"}],"functionName":{"name":"sub","nativeSrc":"1531:3:24","nodeType":"YulIdentifier","src":"1531:3:24"},"nativeSrc":"1531:30:24","nodeType":"YulFunctionCall","src":"1531:30:24"},"variableNames":[{"name":"high","nativeSrc":"1523:4:24","nodeType":"YulIdentifier","src":"1523:4:24"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5879,"isOffset":false,"isSlot":false,"src":"1468:1:24","valueSize":1},{"declaration":5879,"isOffset":false,"isSlot":false,"src":"1505:1:24","valueSize":1},{"declaration":5881,"isOffset":false,"isSlot":false,"src":"1471:1:24","valueSize":1},{"declaration":5881,"isOffset":false,"isSlot":false,"src":"1508:1:24","valueSize":1},{"declaration":5884,"isOffset":false,"isSlot":false,"src":"1523:4:24","valueSize":1},{"declaration":5886,"isOffset":false,"isSlot":false,"src":"1494:3:24","valueSize":1},{"declaration":5886,"isOffset":false,"isSlot":false,"src":"1543:3:24","valueSize":1},{"declaration":5886,"isOffset":false,"isSlot":false,"src":"1556:3:24","valueSize":1}],"flags":["memory-safe"],"id":5888,"nodeType":"InlineAssembly","src":"1412:159:24"}]},"documentation":{"id":5877,"nodeType":"StructuredDocumentation","src":"849:173:24","text":" @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low."},"id":5890,"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:24","nodeType":"FunctionDefinition","parameters":{"id":5882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5879,"mutability":"mutable","name":"a","nameLocation":"1051:1:24","nodeType":"VariableDeclaration","scope":5890,"src":"1043:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5878,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5881,"mutability":"mutable","name":"b","nameLocation":"1062:1:24","nodeType":"VariableDeclaration","scope":5890,"src":"1054:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5880,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:24"},"returnParameters":{"id":5887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5884,"mutability":"mutable","name":"high","nameLocation":"1096:4:24","nodeType":"VariableDeclaration","scope":5890,"src":"1088:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5883,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5886,"mutability":"mutable","name":"low","nameLocation":"1110:3:24","nodeType":"VariableDeclaration","scope":5890,"src":"1102:11:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5885,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:24"},"scope":7507,"src":"1027:550:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5924,"nodeType":"Block","src":"1784:149:24","statements":[{"id":5923,"nodeType":"UncheckedBlock","src":"1794:133:24","statements":[{"assignments":[5903],"declarations":[{"constant":false,"id":5903,"mutability":"mutable","name":"c","nameLocation":"1826:1:24","nodeType":"VariableDeclaration","scope":5923,"src":"1818:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5902,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5907,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5904,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5893,"src":"1830:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5905,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5895,"src":"1834:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:24"},{"expression":{"id":5912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5908,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"1849:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5909,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5903,"src":"1859:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5910,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5893,"src":"1864:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5913,"nodeType":"ExpressionStatement","src":"1849:16:24"},{"expression":{"id":5921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5914,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"1879:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5915,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5903,"src":"1888:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":5918,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"1908:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5916,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"1892:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":5917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"1892:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5922,"nodeType":"ExpressionStatement","src":"1879:37:24"}]}]},"documentation":{"id":5891,"nodeType":"StructuredDocumentation","src":"1583:105:24","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"id":5925,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:24","nodeType":"FunctionDefinition","parameters":{"id":5896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5893,"mutability":"mutable","name":"a","nameLocation":"1717:1:24","nodeType":"VariableDeclaration","scope":5925,"src":"1709:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5892,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5895,"mutability":"mutable","name":"b","nameLocation":"1728:1:24","nodeType":"VariableDeclaration","scope":5925,"src":"1720:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:24"},"returnParameters":{"id":5901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5898,"mutability":"mutable","name":"success","nameLocation":"1759:7:24","nodeType":"VariableDeclaration","scope":5925,"src":"1754:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5897,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5900,"mutability":"mutable","name":"result","nameLocation":"1776:6:24","nodeType":"VariableDeclaration","scope":5925,"src":"1768:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5899,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:24"},"scope":7507,"src":"1693:240:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5959,"nodeType":"Block","src":"2143:149:24","statements":[{"id":5958,"nodeType":"UncheckedBlock","src":"2153:133:24","statements":[{"assignments":[5938],"declarations":[{"constant":false,"id":5938,"mutability":"mutable","name":"c","nameLocation":"2185:1:24","nodeType":"VariableDeclaration","scope":5958,"src":"2177:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5937,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5942,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5939,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"2189:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5940,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"2193:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:24"},{"expression":{"id":5947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5943,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5933,"src":"2208:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5944,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5938,"src":"2218:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5945,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"2223:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5948,"nodeType":"ExpressionStatement","src":"2208:16:24"},{"expression":{"id":5956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5949,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"2238:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5950,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5938,"src":"2247:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":5953,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5933,"src":"2267:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5951,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"2251:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":5952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"2251:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5957,"nodeType":"ExpressionStatement","src":"2238:37:24"}]}]},"documentation":{"id":5926,"nodeType":"StructuredDocumentation","src":"1939:108:24","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"id":5960,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:24","nodeType":"FunctionDefinition","parameters":{"id":5931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5928,"mutability":"mutable","name":"a","nameLocation":"2076:1:24","nodeType":"VariableDeclaration","scope":5960,"src":"2068:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5927,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5930,"mutability":"mutable","name":"b","nameLocation":"2087:1:24","nodeType":"VariableDeclaration","scope":5960,"src":"2079:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5929,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:24"},"returnParameters":{"id":5936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5933,"mutability":"mutable","name":"success","nameLocation":"2118:7:24","nodeType":"VariableDeclaration","scope":5960,"src":"2113:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5932,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5935,"mutability":"mutable","name":"result","nameLocation":"2135:6:24","nodeType":"VariableDeclaration","scope":5960,"src":"2127:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5934,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:24"},"scope":7507,"src":"2052:240:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5989,"nodeType":"Block","src":"2505:391:24","statements":[{"id":5988,"nodeType":"UncheckedBlock","src":"2515:375:24","statements":[{"assignments":[5973],"declarations":[{"constant":false,"id":5973,"mutability":"mutable","name":"c","nameLocation":"2547:1:24","nodeType":"VariableDeclaration","scope":5988,"src":"2539:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5972,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5977,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5974,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5963,"src":"2551:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5975,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5965,"src":"2555:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:24"},{"AST":{"nativeSrc":"2595:188:24","nodeType":"YulBlock","src":"2595:188:24","statements":[{"nativeSrc":"2727:42:24","nodeType":"YulAssignment","src":"2727:42:24","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:24","nodeType":"YulIdentifier","src":"2748:1:24"},{"name":"a","nativeSrc":"2751:1:24","nodeType":"YulIdentifier","src":"2751:1:24"}],"functionName":{"name":"div","nativeSrc":"2744:3:24","nodeType":"YulIdentifier","src":"2744:3:24"},"nativeSrc":"2744:9:24","nodeType":"YulFunctionCall","src":"2744:9:24"},{"name":"b","nativeSrc":"2755:1:24","nodeType":"YulIdentifier","src":"2755:1:24"}],"functionName":{"name":"eq","nativeSrc":"2741:2:24","nodeType":"YulIdentifier","src":"2741:2:24"},"nativeSrc":"2741:16:24","nodeType":"YulFunctionCall","src":"2741:16:24"},{"arguments":[{"name":"a","nativeSrc":"2766:1:24","nodeType":"YulIdentifier","src":"2766:1:24"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:24","nodeType":"YulIdentifier","src":"2759:6:24"},"nativeSrc":"2759:9:24","nodeType":"YulFunctionCall","src":"2759:9:24"}],"functionName":{"name":"or","nativeSrc":"2738:2:24","nodeType":"YulIdentifier","src":"2738:2:24"},"nativeSrc":"2738:31:24","nodeType":"YulFunctionCall","src":"2738:31:24"},"variableNames":[{"name":"success","nativeSrc":"2727:7:24","nodeType":"YulIdentifier","src":"2727:7:24"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5963,"isOffset":false,"isSlot":false,"src":"2751:1:24","valueSize":1},{"declaration":5963,"isOffset":false,"isSlot":false,"src":"2766:1:24","valueSize":1},{"declaration":5965,"isOffset":false,"isSlot":false,"src":"2755:1:24","valueSize":1},{"declaration":5973,"isOffset":false,"isSlot":false,"src":"2748:1:24","valueSize":1},{"declaration":5968,"isOffset":false,"isSlot":false,"src":"2727:7:24","valueSize":1}],"flags":["memory-safe"],"id":5978,"nodeType":"InlineAssembly","src":"2570:213:24"},{"expression":{"id":5986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5979,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"2842:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5980,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"2851:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":5983,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5968,"src":"2871:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5981,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"2855:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":5982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"2855:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5987,"nodeType":"ExpressionStatement","src":"2842:37:24"}]}]},"documentation":{"id":5961,"nodeType":"StructuredDocumentation","src":"2298:111:24","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"id":5990,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:24","nodeType":"FunctionDefinition","parameters":{"id":5966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5963,"mutability":"mutable","name":"a","nameLocation":"2438:1:24","nodeType":"VariableDeclaration","scope":5990,"src":"2430:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5962,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5965,"mutability":"mutable","name":"b","nameLocation":"2449:1:24","nodeType":"VariableDeclaration","scope":5990,"src":"2441:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5964,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:24"},"returnParameters":{"id":5971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5968,"mutability":"mutable","name":"success","nameLocation":"2480:7:24","nodeType":"VariableDeclaration","scope":5990,"src":"2475:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5967,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5970,"mutability":"mutable","name":"result","nameLocation":"2497:6:24","nodeType":"VariableDeclaration","scope":5990,"src":"2489:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5969,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:24"},"scope":7507,"src":"2414:482:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6010,"nodeType":"Block","src":"3111:231:24","statements":[{"id":6009,"nodeType":"UncheckedBlock","src":"3121:215:24","statements":[{"expression":{"id":6006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6002,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5998,"src":"3145:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6003,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"3155:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6007,"nodeType":"ExpressionStatement","src":"3145:15:24"},{"AST":{"nativeSrc":"3199:127:24","nodeType":"YulBlock","src":"3199:127:24","statements":[{"nativeSrc":"3293:19:24","nodeType":"YulAssignment","src":"3293:19:24","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:24","nodeType":"YulIdentifier","src":"3307:1:24"},{"name":"b","nativeSrc":"3310:1:24","nodeType":"YulIdentifier","src":"3310:1:24"}],"functionName":{"name":"div","nativeSrc":"3303:3:24","nodeType":"YulIdentifier","src":"3303:3:24"},"nativeSrc":"3303:9:24","nodeType":"YulFunctionCall","src":"3303:9:24"},"variableNames":[{"name":"result","nativeSrc":"3293:6:24","nodeType":"YulIdentifier","src":"3293:6:24"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5993,"isOffset":false,"isSlot":false,"src":"3307:1:24","valueSize":1},{"declaration":5995,"isOffset":false,"isSlot":false,"src":"3310:1:24","valueSize":1},{"declaration":6000,"isOffset":false,"isSlot":false,"src":"3293:6:24","valueSize":1}],"flags":["memory-safe"],"id":6008,"nodeType":"InlineAssembly","src":"3174:152:24"}]}]},"documentation":{"id":5991,"nodeType":"StructuredDocumentation","src":"2902:113:24","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":6011,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:24","nodeType":"FunctionDefinition","parameters":{"id":5996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5993,"mutability":"mutable","name":"a","nameLocation":"3044:1:24","nodeType":"VariableDeclaration","scope":6011,"src":"3036:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5992,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5995,"mutability":"mutable","name":"b","nameLocation":"3055:1:24","nodeType":"VariableDeclaration","scope":6011,"src":"3047:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5994,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:24"},"returnParameters":{"id":6001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5998,"mutability":"mutable","name":"success","nameLocation":"3086:7:24","nodeType":"VariableDeclaration","scope":6011,"src":"3081:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5997,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6000,"mutability":"mutable","name":"result","nameLocation":"3103:6:24","nodeType":"VariableDeclaration","scope":6011,"src":"3095:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5999,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:24"},"scope":7507,"src":"3020:322:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6031,"nodeType":"Block","src":"3567:231:24","statements":[{"id":6030,"nodeType":"UncheckedBlock","src":"3577:215:24","statements":[{"expression":{"id":6027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6023,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"3601:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6024,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"3611:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6028,"nodeType":"ExpressionStatement","src":"3601:15:24"},{"AST":{"nativeSrc":"3655:127:24","nodeType":"YulBlock","src":"3655:127:24","statements":[{"nativeSrc":"3749:19:24","nodeType":"YulAssignment","src":"3749:19:24","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:24","nodeType":"YulIdentifier","src":"3763:1:24"},{"name":"b","nativeSrc":"3766:1:24","nodeType":"YulIdentifier","src":"3766:1:24"}],"functionName":{"name":"mod","nativeSrc":"3759:3:24","nodeType":"YulIdentifier","src":"3759:3:24"},"nativeSrc":"3759:9:24","nodeType":"YulFunctionCall","src":"3759:9:24"},"variableNames":[{"name":"result","nativeSrc":"3749:6:24","nodeType":"YulIdentifier","src":"3749:6:24"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6014,"isOffset":false,"isSlot":false,"src":"3763:1:24","valueSize":1},{"declaration":6016,"isOffset":false,"isSlot":false,"src":"3766:1:24","valueSize":1},{"declaration":6021,"isOffset":false,"isSlot":false,"src":"3749:6:24","valueSize":1}],"flags":["memory-safe"],"id":6029,"nodeType":"InlineAssembly","src":"3630:152:24"}]}]},"documentation":{"id":6012,"nodeType":"StructuredDocumentation","src":"3348:123:24","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":6032,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:24","nodeType":"FunctionDefinition","parameters":{"id":6017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6014,"mutability":"mutable","name":"a","nameLocation":"3500:1:24","nodeType":"VariableDeclaration","scope":6032,"src":"3492:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6013,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6016,"mutability":"mutable","name":"b","nameLocation":"3511:1:24","nodeType":"VariableDeclaration","scope":6032,"src":"3503:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6015,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:24"},"returnParameters":{"id":6022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6019,"mutability":"mutable","name":"success","nameLocation":"3542:7:24","nodeType":"VariableDeclaration","scope":6032,"src":"3537:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6018,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6021,"mutability":"mutable","name":"result","nameLocation":"3559:6:24","nodeType":"VariableDeclaration","scope":6032,"src":"3551:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6020,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:24"},"scope":7507,"src":"3476:322:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6061,"nodeType":"Block","src":"3989:122:24","statements":[{"assignments":[6043,6045],"declarations":[{"constant":false,"id":6043,"mutability":"mutable","name":"success","nameLocation":"4005:7:24","nodeType":"VariableDeclaration","scope":6061,"src":"4000:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6042,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6045,"mutability":"mutable","name":"result","nameLocation":"4022:6:24","nodeType":"VariableDeclaration","scope":6061,"src":"4014:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6044,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6050,"initialValue":{"arguments":[{"id":6047,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6035,"src":"4039:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6048,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"4042:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6046,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5925,"src":"4032:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":6049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:24"},{"expression":{"arguments":[{"id":6052,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"4069:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6053,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"4078:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":6056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6055,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:24","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":6054,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"4086:4:24","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":6058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:24","memberName":"max","nodeType":"MemberAccess","src":"4086:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6051,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6139,"src":"4061:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6041,"id":6060,"nodeType":"Return","src":"4054:50:24"}]},"documentation":{"id":6033,"nodeType":"StructuredDocumentation","src":"3804:103:24","text":" @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":6062,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:24","nodeType":"FunctionDefinition","parameters":{"id":6038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6035,"mutability":"mutable","name":"a","nameLocation":"3943:1:24","nodeType":"VariableDeclaration","scope":6062,"src":"3935:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6034,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6037,"mutability":"mutable","name":"b","nameLocation":"3954:1:24","nodeType":"VariableDeclaration","scope":6062,"src":"3946:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6036,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:24"},"returnParameters":{"id":6041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6040,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6062,"src":"3980:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6039,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:24"},"scope":7507,"src":"3912:199:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6081,"nodeType":"Block","src":"4294:73:24","statements":[{"assignments":[null,6073],"declarations":[null,{"constant":false,"id":6073,"mutability":"mutable","name":"result","nameLocation":"4315:6:24","nodeType":"VariableDeclaration","scope":6081,"src":"4307:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6072,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6078,"initialValue":{"arguments":[{"id":6075,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"4332:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6076,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6067,"src":"4335:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6074,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"4325:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":6077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:24"},{"expression":{"id":6079,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"4354:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6071,"id":6080,"nodeType":"Return","src":"4347:13:24"}]},"documentation":{"id":6063,"nodeType":"StructuredDocumentation","src":"4117:95:24","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"id":6082,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:24","nodeType":"FunctionDefinition","parameters":{"id":6068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6065,"mutability":"mutable","name":"a","nameLocation":"4248:1:24","nodeType":"VariableDeclaration","scope":6082,"src":"4240:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6064,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6067,"mutability":"mutable","name":"b","nameLocation":"4259:1:24","nodeType":"VariableDeclaration","scope":6082,"src":"4251:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6066,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:24"},"returnParameters":{"id":6071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6070,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6082,"src":"4285:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6069,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:24"},"scope":7507,"src":"4217:150:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6111,"nodeType":"Block","src":"4564:122:24","statements":[{"assignments":[6093,6095],"declarations":[{"constant":false,"id":6093,"mutability":"mutable","name":"success","nameLocation":"4580:7:24","nodeType":"VariableDeclaration","scope":6111,"src":"4575:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6092,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6095,"mutability":"mutable","name":"result","nameLocation":"4597:6:24","nodeType":"VariableDeclaration","scope":6111,"src":"4589:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6094,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6100,"initialValue":{"arguments":[{"id":6097,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6085,"src":"4614:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6098,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6087,"src":"4617:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6096,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5990,"src":"4607:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":6099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:24"},{"expression":{"arguments":[{"id":6102,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6093,"src":"4644:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6095,"src":"4653:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":6106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6105,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:24","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":6104,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"4661:4:24","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":6108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:24","memberName":"max","nodeType":"MemberAccess","src":"4661:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6101,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6139,"src":"4636:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6091,"id":6110,"nodeType":"Return","src":"4629:50:24"}]},"documentation":{"id":6083,"nodeType":"StructuredDocumentation","src":"4373:109:24","text":" @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":6112,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:24","nodeType":"FunctionDefinition","parameters":{"id":6088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6085,"mutability":"mutable","name":"a","nameLocation":"4518:1:24","nodeType":"VariableDeclaration","scope":6112,"src":"4510:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6084,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6087,"mutability":"mutable","name":"b","nameLocation":"4529:1:24","nodeType":"VariableDeclaration","scope":6112,"src":"4521:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6086,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:24"},"returnParameters":{"id":6091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6090,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6112,"src":"4555:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6089,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:24"},"scope":7507,"src":"4487:199:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6138,"nodeType":"Block","src":"5174:207:24","statements":[{"id":6137,"nodeType":"UncheckedBlock","src":"5184:191:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6124,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"5322:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6125,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"5328:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":6126,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"5332:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5328:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6128,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5327:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":6131,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"5353:9:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6129,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"5337:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":6130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5346:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"5337:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5337:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5327:36:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6134,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5326:38:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5322:42:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6123,"id":6136,"nodeType":"Return","src":"5315:49:24"}]}]},"documentation":{"id":6113,"nodeType":"StructuredDocumentation","src":"4692:390:24","text":" @dev Branchless ternary evaluation for `condition ? a : b`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `condition ? a : b`) to only compute\n one branch when needed, making this function more expensive."},"id":6139,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5096:7:24","nodeType":"FunctionDefinition","parameters":{"id":6120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6115,"mutability":"mutable","name":"condition","nameLocation":"5109:9:24","nodeType":"VariableDeclaration","scope":6139,"src":"5104:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6114,"name":"bool","nodeType":"ElementaryTypeName","src":"5104:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6117,"mutability":"mutable","name":"a","nameLocation":"5128:1:24","nodeType":"VariableDeclaration","scope":6139,"src":"5120:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6116,"name":"uint256","nodeType":"ElementaryTypeName","src":"5120:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6119,"mutability":"mutable","name":"b","nameLocation":"5139:1:24","nodeType":"VariableDeclaration","scope":6139,"src":"5131:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6118,"name":"uint256","nodeType":"ElementaryTypeName","src":"5131:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5103:38:24"},"returnParameters":{"id":6123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6139,"src":"5165:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6121,"name":"uint256","nodeType":"ElementaryTypeName","src":"5165:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5164:9:24"},"scope":7507,"src":"5087:294:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6157,"nodeType":"Block","src":"5518:44:24","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6150,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6142,"src":"5543:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6151,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6144,"src":"5547:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5543:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6153,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6142,"src":"5550:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6154,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6144,"src":"5553:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6149,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6139,"src":"5535:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6148,"id":6156,"nodeType":"Return","src":"5528:27:24"}]},"documentation":{"id":6140,"nodeType":"StructuredDocumentation","src":"5387:59:24","text":" @dev Returns the largest of two numbers."},"id":6158,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5460:3:24","nodeType":"FunctionDefinition","parameters":{"id":6145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6142,"mutability":"mutable","name":"a","nameLocation":"5472:1:24","nodeType":"VariableDeclaration","scope":6158,"src":"5464:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6141,"name":"uint256","nodeType":"ElementaryTypeName","src":"5464:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6144,"mutability":"mutable","name":"b","nameLocation":"5483:1:24","nodeType":"VariableDeclaration","scope":6158,"src":"5475:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6143,"name":"uint256","nodeType":"ElementaryTypeName","src":"5475:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5463:22:24"},"returnParameters":{"id":6148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6158,"src":"5509:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6146,"name":"uint256","nodeType":"ElementaryTypeName","src":"5509:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5508:9:24"},"scope":7507,"src":"5451:111:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6176,"nodeType":"Block","src":"5700:44:24","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6161,"src":"5725:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"5729:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5725:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6172,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6161,"src":"5732:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6173,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"5735:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6168,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6139,"src":"5717:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5717:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6167,"id":6175,"nodeType":"Return","src":"5710:27:24"}]},"documentation":{"id":6159,"nodeType":"StructuredDocumentation","src":"5568:60:24","text":" @dev Returns the smallest of two numbers."},"id":6177,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5642:3:24","nodeType":"FunctionDefinition","parameters":{"id":6164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6161,"mutability":"mutable","name":"a","nameLocation":"5654:1:24","nodeType":"VariableDeclaration","scope":6177,"src":"5646:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6160,"name":"uint256","nodeType":"ElementaryTypeName","src":"5646:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6163,"mutability":"mutable","name":"b","nameLocation":"5665:1:24","nodeType":"VariableDeclaration","scope":6177,"src":"5657:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6162,"name":"uint256","nodeType":"ElementaryTypeName","src":"5657:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5645:22:24"},"returnParameters":{"id":6167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6166,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6177,"src":"5691:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6165,"name":"uint256","nodeType":"ElementaryTypeName","src":"5691:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5690:9:24"},"scope":7507,"src":"5633:111:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6200,"nodeType":"Block","src":"5928:120:24","statements":[{"id":6199,"nodeType":"UncheckedBlock","src":"5938:104:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6187,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6180,"src":"6011:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6188,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6182,"src":"6015:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6011:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6010:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6191,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6180,"src":"6021:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":6192,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6182,"src":"6025:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6021:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6194,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6020:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":6195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6030:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6020:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6010:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6186,"id":6198,"nodeType":"Return","src":"6003:28:24"}]}]},"documentation":{"id":6178,"nodeType":"StructuredDocumentation","src":"5750:102:24","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":6201,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5866:7:24","nodeType":"FunctionDefinition","parameters":{"id":6183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6180,"mutability":"mutable","name":"a","nameLocation":"5882:1:24","nodeType":"VariableDeclaration","scope":6201,"src":"5874:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6179,"name":"uint256","nodeType":"ElementaryTypeName","src":"5874:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6182,"mutability":"mutable","name":"b","nameLocation":"5893:1:24","nodeType":"VariableDeclaration","scope":6201,"src":"5885:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6181,"name":"uint256","nodeType":"ElementaryTypeName","src":"5885:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5873:22:24"},"returnParameters":{"id":6186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6201,"src":"5919:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6184,"name":"uint256","nodeType":"ElementaryTypeName","src":"5919:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5918:9:24"},"scope":7507,"src":"5857:191:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6241,"nodeType":"Block","src":"6340:633:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6211,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"6354:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6359:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6354:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6222,"nodeType":"IfStatement","src":"6350:150:24","trueBody":{"id":6221,"nodeType":"Block","src":"6362:138:24","statements":[{"expression":{"arguments":[{"expression":{"id":6217,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"6466:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6472:16:24","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":3926,"src":"6466:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6214,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"6454:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6460:5:24","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":3958,"src":"6454:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6454:35:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6220,"nodeType":"ExpressionStatement","src":"6454:35:24"}]}},{"id":6240,"nodeType":"UncheckedBlock","src":"6883:84:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6225,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6204,"src":"6930:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6934:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6930:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6223,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"6914:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":6224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6923:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"6914:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6914:22:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6229,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6204,"src":"6941:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6945:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6941:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6232,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6940:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6233,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"6950:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6940:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6954:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6940:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6237,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6939:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6914:42:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6210,"id":6239,"nodeType":"Return","src":"6907:49:24"}]}]},"documentation":{"id":6202,"nodeType":"StructuredDocumentation","src":"6054:210:24","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"id":6242,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6278:7:24","nodeType":"FunctionDefinition","parameters":{"id":6207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6204,"mutability":"mutable","name":"a","nameLocation":"6294:1:24","nodeType":"VariableDeclaration","scope":6242,"src":"6286:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6203,"name":"uint256","nodeType":"ElementaryTypeName","src":"6286:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6206,"mutability":"mutable","name":"b","nameLocation":"6305:1:24","nodeType":"VariableDeclaration","scope":6242,"src":"6297:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6205,"name":"uint256","nodeType":"ElementaryTypeName","src":"6297:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6285:22:24"},"returnParameters":{"id":6210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6242,"src":"6331:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6208,"name":"uint256","nodeType":"ElementaryTypeName","src":"6331:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6330:9:24"},"scope":7507,"src":"6269:704:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6377,"nodeType":"Block","src":"7394:3585:24","statements":[{"id":6376,"nodeType":"UncheckedBlock","src":"7404:3569:24","statements":[{"assignments":[6255,6257],"declarations":[{"constant":false,"id":6255,"mutability":"mutable","name":"high","nameLocation":"7437:4:24","nodeType":"VariableDeclaration","scope":6376,"src":"7429:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6254,"name":"uint256","nodeType":"ElementaryTypeName","src":"7429:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6257,"mutability":"mutable","name":"low","nameLocation":"7451:3:24","nodeType":"VariableDeclaration","scope":6376,"src":"7443:11:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6256,"name":"uint256","nodeType":"ElementaryTypeName","src":"7443:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6262,"initialValue":{"arguments":[{"id":6259,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6245,"src":"7465:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6260,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"7468:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6258,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5890,"src":"7458:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":6261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7458:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7428:42:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6263,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6255,"src":"7552:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7560:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7552:9:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6271,"nodeType":"IfStatement","src":"7548:365:24","trueBody":{"id":6270,"nodeType":"Block","src":"7563:350:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6266,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6257,"src":"7881:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6267,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"7887:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7881:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6253,"id":6269,"nodeType":"Return","src":"7874:24:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6272,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"8023:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6273,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6255,"src":"8038:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8023:19:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6290,"nodeType":"IfStatement","src":"8019:142:24","trueBody":{"id":6289,"nodeType":"Block","src":"8044:117:24","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6279,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"8082:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8097:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8082:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6282,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"8100:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8106:16:24","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":3926,"src":"8100:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6284,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"8124:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8130:14:24","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":3922,"src":"8124:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6278,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6139,"src":"8074:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8074:71:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6275,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"8062:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8068:5:24","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":3958,"src":"8062:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8062:84:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6288,"nodeType":"ExpressionStatement","src":"8062:84:24"}]}},{"assignments":[6292],"declarations":[{"constant":false,"id":6292,"mutability":"mutable","name":"remainder","nameLocation":"8421:9:24","nodeType":"VariableDeclaration","scope":6376,"src":"8413:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8413:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6293,"nodeType":"VariableDeclarationStatement","src":"8413:17:24"},{"AST":{"nativeSrc":"8469:283:24","nodeType":"YulBlock","src":"8469:283:24","statements":[{"nativeSrc":"8538:38:24","nodeType":"YulAssignment","src":"8538:38:24","value":{"arguments":[{"name":"x","nativeSrc":"8558:1:24","nodeType":"YulIdentifier","src":"8558:1:24"},{"name":"y","nativeSrc":"8561:1:24","nodeType":"YulIdentifier","src":"8561:1:24"},{"name":"denominator","nativeSrc":"8564:11:24","nodeType":"YulIdentifier","src":"8564:11:24"}],"functionName":{"name":"mulmod","nativeSrc":"8551:6:24","nodeType":"YulIdentifier","src":"8551:6:24"},"nativeSrc":"8551:25:24","nodeType":"YulFunctionCall","src":"8551:25:24"},"variableNames":[{"name":"remainder","nativeSrc":"8538:9:24","nodeType":"YulIdentifier","src":"8538:9:24"}]},{"nativeSrc":"8658:37:24","nodeType":"YulAssignment","src":"8658:37:24","value":{"arguments":[{"name":"high","nativeSrc":"8670:4:24","nodeType":"YulIdentifier","src":"8670:4:24"},{"arguments":[{"name":"remainder","nativeSrc":"8679:9:24","nodeType":"YulIdentifier","src":"8679:9:24"},{"name":"low","nativeSrc":"8690:3:24","nodeType":"YulIdentifier","src":"8690:3:24"}],"functionName":{"name":"gt","nativeSrc":"8676:2:24","nodeType":"YulIdentifier","src":"8676:2:24"},"nativeSrc":"8676:18:24","nodeType":"YulFunctionCall","src":"8676:18:24"}],"functionName":{"name":"sub","nativeSrc":"8666:3:24","nodeType":"YulIdentifier","src":"8666:3:24"},"nativeSrc":"8666:29:24","nodeType":"YulFunctionCall","src":"8666:29:24"},"variableNames":[{"name":"high","nativeSrc":"8658:4:24","nodeType":"YulIdentifier","src":"8658:4:24"}]},{"nativeSrc":"8712:26:24","nodeType":"YulAssignment","src":"8712:26:24","value":{"arguments":[{"name":"low","nativeSrc":"8723:3:24","nodeType":"YulIdentifier","src":"8723:3:24"},{"name":"remainder","nativeSrc":"8728:9:24","nodeType":"YulIdentifier","src":"8728:9:24"}],"functionName":{"name":"sub","nativeSrc":"8719:3:24","nodeType":"YulIdentifier","src":"8719:3:24"},"nativeSrc":"8719:19:24","nodeType":"YulFunctionCall","src":"8719:19:24"},"variableNames":[{"name":"low","nativeSrc":"8712:3:24","nodeType":"YulIdentifier","src":"8712:3:24"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6249,"isOffset":false,"isSlot":false,"src":"8564:11:24","valueSize":1},{"declaration":6255,"isOffset":false,"isSlot":false,"src":"8658:4:24","valueSize":1},{"declaration":6255,"isOffset":false,"isSlot":false,"src":"8670:4:24","valueSize":1},{"declaration":6257,"isOffset":false,"isSlot":false,"src":"8690:3:24","valueSize":1},{"declaration":6257,"isOffset":false,"isSlot":false,"src":"8712:3:24","valueSize":1},{"declaration":6257,"isOffset":false,"isSlot":false,"src":"8723:3:24","valueSize":1},{"declaration":6292,"isOffset":false,"isSlot":false,"src":"8538:9:24","valueSize":1},{"declaration":6292,"isOffset":false,"isSlot":false,"src":"8679:9:24","valueSize":1},{"declaration":6292,"isOffset":false,"isSlot":false,"src":"8728:9:24","valueSize":1},{"declaration":6245,"isOffset":false,"isSlot":false,"src":"8558:1:24","valueSize":1},{"declaration":6247,"isOffset":false,"isSlot":false,"src":"8561:1:24","valueSize":1}],"flags":["memory-safe"],"id":6294,"nodeType":"InlineAssembly","src":"8444:308:24"},{"assignments":[6296],"declarations":[{"constant":false,"id":6296,"mutability":"mutable","name":"twos","nameLocation":"8964:4:24","nodeType":"VariableDeclaration","scope":6376,"src":"8956:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6295,"name":"uint256","nodeType":"ElementaryTypeName","src":"8956:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6303,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6297,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"8971:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":6298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8986:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6299,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"8990:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8986:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6301,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8985:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8971:31:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8956:46:24"},{"AST":{"nativeSrc":"9041:359:24","nodeType":"YulBlock","src":"9041:359:24","statements":[{"nativeSrc":"9106:37:24","nodeType":"YulAssignment","src":"9106:37:24","value":{"arguments":[{"name":"denominator","nativeSrc":"9125:11:24","nodeType":"YulIdentifier","src":"9125:11:24"},{"name":"twos","nativeSrc":"9138:4:24","nodeType":"YulIdentifier","src":"9138:4:24"}],"functionName":{"name":"div","nativeSrc":"9121:3:24","nodeType":"YulIdentifier","src":"9121:3:24"},"nativeSrc":"9121:22:24","nodeType":"YulFunctionCall","src":"9121:22:24"},"variableNames":[{"name":"denominator","nativeSrc":"9106:11:24","nodeType":"YulIdentifier","src":"9106:11:24"}]},{"nativeSrc":"9207:21:24","nodeType":"YulAssignment","src":"9207:21:24","value":{"arguments":[{"name":"low","nativeSrc":"9218:3:24","nodeType":"YulIdentifier","src":"9218:3:24"},{"name":"twos","nativeSrc":"9223:4:24","nodeType":"YulIdentifier","src":"9223:4:24"}],"functionName":{"name":"div","nativeSrc":"9214:3:24","nodeType":"YulIdentifier","src":"9214:3:24"},"nativeSrc":"9214:14:24","nodeType":"YulFunctionCall","src":"9214:14:24"},"variableNames":[{"name":"low","nativeSrc":"9207:3:24","nodeType":"YulIdentifier","src":"9207:3:24"}]},{"nativeSrc":"9347:39:24","nodeType":"YulAssignment","src":"9347:39:24","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9367:1:24","nodeType":"YulLiteral","src":"9367:1:24","type":"","value":"0"},{"name":"twos","nativeSrc":"9370:4:24","nodeType":"YulIdentifier","src":"9370:4:24"}],"functionName":{"name":"sub","nativeSrc":"9363:3:24","nodeType":"YulIdentifier","src":"9363:3:24"},"nativeSrc":"9363:12:24","nodeType":"YulFunctionCall","src":"9363:12:24"},{"name":"twos","nativeSrc":"9377:4:24","nodeType":"YulIdentifier","src":"9377:4:24"}],"functionName":{"name":"div","nativeSrc":"9359:3:24","nodeType":"YulIdentifier","src":"9359:3:24"},"nativeSrc":"9359:23:24","nodeType":"YulFunctionCall","src":"9359:23:24"},{"kind":"number","nativeSrc":"9384:1:24","nodeType":"YulLiteral","src":"9384:1:24","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9355:3:24","nodeType":"YulIdentifier","src":"9355:3:24"},"nativeSrc":"9355:31:24","nodeType":"YulFunctionCall","src":"9355:31:24"},"variableNames":[{"name":"twos","nativeSrc":"9347:4:24","nodeType":"YulIdentifier","src":"9347:4:24"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6249,"isOffset":false,"isSlot":false,"src":"9106:11:24","valueSize":1},{"declaration":6249,"isOffset":false,"isSlot":false,"src":"9125:11:24","valueSize":1},{"declaration":6257,"isOffset":false,"isSlot":false,"src":"9207:3:24","valueSize":1},{"declaration":6257,"isOffset":false,"isSlot":false,"src":"9218:3:24","valueSize":1},{"declaration":6296,"isOffset":false,"isSlot":false,"src":"9138:4:24","valueSize":1},{"declaration":6296,"isOffset":false,"isSlot":false,"src":"9223:4:24","valueSize":1},{"declaration":6296,"isOffset":false,"isSlot":false,"src":"9347:4:24","valueSize":1},{"declaration":6296,"isOffset":false,"isSlot":false,"src":"9370:4:24","valueSize":1},{"declaration":6296,"isOffset":false,"isSlot":false,"src":"9377:4:24","valueSize":1}],"flags":["memory-safe"],"id":6304,"nodeType":"InlineAssembly","src":"9016:384:24"},{"expression":{"id":6309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6305,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6257,"src":"9463:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6306,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6255,"src":"9470:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6307,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6296,"src":"9477:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9470:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9463:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6310,"nodeType":"ExpressionStatement","src":"9463:18:24"},{"assignments":[6312],"declarations":[{"constant":false,"id":6312,"mutability":"mutable","name":"inverse","nameLocation":"9824:7:24","nodeType":"VariableDeclaration","scope":6376,"src":"9816:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6311,"name":"uint256","nodeType":"ElementaryTypeName","src":"9816:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6319,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":6313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9835:1:24","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6314,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"9839:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9835:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6316,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9834:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":6317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9854:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9834:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9816:39:24"},{"expression":{"id":6326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6320,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10072:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10083:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6322,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"10087:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6323,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10101:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10087:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10083:25:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10072:36:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6327,"nodeType":"ExpressionStatement","src":"10072:36:24"},{"expression":{"id":6334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6328,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10142:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10153:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6330,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"10157:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6331,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10171:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10157:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10153:25:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10142:36:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6335,"nodeType":"ExpressionStatement","src":"10142:36:24"},{"expression":{"id":6342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6336,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10214:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10225:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6338,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"10229:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6339,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10243:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10229:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10225:25:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10214:36:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6343,"nodeType":"ExpressionStatement","src":"10214:36:24"},{"expression":{"id":6350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6344,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10285:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10296:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6346,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"10300:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6347,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10314:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10300:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10296:25:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10285:36:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6351,"nodeType":"ExpressionStatement","src":"10285:36:24"},{"expression":{"id":6358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6352,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10358:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10369:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6354,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"10373:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6355,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10387:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10373:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10369:25:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10358:36:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6359,"nodeType":"ExpressionStatement","src":"10358:36:24"},{"expression":{"id":6366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6360,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10432:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10443:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6362,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"10447:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6363,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10461:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10447:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10443:25:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10432:36:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6367,"nodeType":"ExpressionStatement","src":"10432:36:24"},{"expression":{"id":6372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6368,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"10913:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6369,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6257,"src":"10922:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6370,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"10928:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10922:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10913:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6373,"nodeType":"ExpressionStatement","src":"10913:22:24"},{"expression":{"id":6374,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"10956:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6253,"id":6375,"nodeType":"Return","src":"10949:13:24"}]}]},"documentation":{"id":6243,"nodeType":"StructuredDocumentation","src":"6979:312:24","text":" @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"id":6378,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7305:6:24","nodeType":"FunctionDefinition","parameters":{"id":6250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6245,"mutability":"mutable","name":"x","nameLocation":"7320:1:24","nodeType":"VariableDeclaration","scope":6378,"src":"7312:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6244,"name":"uint256","nodeType":"ElementaryTypeName","src":"7312:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6247,"mutability":"mutable","name":"y","nameLocation":"7331:1:24","nodeType":"VariableDeclaration","scope":6378,"src":"7323:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6246,"name":"uint256","nodeType":"ElementaryTypeName","src":"7323:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6249,"mutability":"mutable","name":"denominator","nameLocation":"7342:11:24","nodeType":"VariableDeclaration","scope":6378,"src":"7334:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6248,"name":"uint256","nodeType":"ElementaryTypeName","src":"7334:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7311:43:24"},"returnParameters":{"id":6253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6252,"mutability":"mutable","name":"result","nameLocation":"7386:6:24","nodeType":"VariableDeclaration","scope":6378,"src":"7378:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6251,"name":"uint256","nodeType":"ElementaryTypeName","src":"7378:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7377:16:24"},"scope":7507,"src":"7296:3683:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6414,"nodeType":"Block","src":"11218:128:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6394,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6381,"src":"11242:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6395,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6383,"src":"11245:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6396,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6385,"src":"11248:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6393,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[6378,6415],"referencedDeclaration":6378,"src":"11235:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11235:25:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6401,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"11296:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}],"id":6400,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"11279:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$5862_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":6402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11279:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6404,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6381,"src":"11316:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6405,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6383,"src":"11319:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6406,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6385,"src":"11322:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6403,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967280,"src":"11309:6:24","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11309:25:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11309:29:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11279:59:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6398,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"11263:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":6399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11272:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"11263:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11263:76:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11235:104:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6392,"id":6413,"nodeType":"Return","src":"11228:111:24"}]},"documentation":{"id":6379,"nodeType":"StructuredDocumentation","src":"10985:118:24","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":6415,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11117:6:24","nodeType":"FunctionDefinition","parameters":{"id":6389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6381,"mutability":"mutable","name":"x","nameLocation":"11132:1:24","nodeType":"VariableDeclaration","scope":6415,"src":"11124:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6380,"name":"uint256","nodeType":"ElementaryTypeName","src":"11124:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6383,"mutability":"mutable","name":"y","nameLocation":"11143:1:24","nodeType":"VariableDeclaration","scope":6415,"src":"11135:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6382,"name":"uint256","nodeType":"ElementaryTypeName","src":"11135:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6385,"mutability":"mutable","name":"denominator","nameLocation":"11154:11:24","nodeType":"VariableDeclaration","scope":6415,"src":"11146:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6384,"name":"uint256","nodeType":"ElementaryTypeName","src":"11146:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6388,"mutability":"mutable","name":"rounding","nameLocation":"11176:8:24","nodeType":"VariableDeclaration","scope":6415,"src":"11167:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"},"typeName":{"id":6387,"nodeType":"UserDefinedTypeName","pathNode":{"id":6386,"name":"Rounding","nameLocations":["11167:8:24"],"nodeType":"IdentifierPath","referencedDeclaration":5862,"src":"11167:8:24"},"referencedDeclaration":5862,"src":"11167:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11123:62:24"},"returnParameters":{"id":6392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6415,"src":"11209:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6390,"name":"uint256","nodeType":"ElementaryTypeName","src":"11209:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11208:9:24"},"scope":7507,"src":"11108:238:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6464,"nodeType":"Block","src":"11554:245:24","statements":[{"id":6463,"nodeType":"UncheckedBlock","src":"11564:229:24","statements":[{"assignments":[6428,6430],"declarations":[{"constant":false,"id":6428,"mutability":"mutable","name":"high","nameLocation":"11597:4:24","nodeType":"VariableDeclaration","scope":6463,"src":"11589:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6427,"name":"uint256","nodeType":"ElementaryTypeName","src":"11589:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6430,"mutability":"mutable","name":"low","nameLocation":"11611:3:24","nodeType":"VariableDeclaration","scope":6463,"src":"11603:11:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6429,"name":"uint256","nodeType":"ElementaryTypeName","src":"11603:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6435,"initialValue":{"arguments":[{"id":6432,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"11625:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6433,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"11628:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6431,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5890,"src":"11618:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":6434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11618:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11588:42:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6436,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6428,"src":"11648:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11656:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6438,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6422,"src":"11661:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11656:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11648:14:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6449,"nodeType":"IfStatement","src":"11644:86:24","trueBody":{"id":6448,"nodeType":"Block","src":"11664:66:24","statements":[{"expression":{"arguments":[{"expression":{"id":6444,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"11694:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11700:14:24","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":3922,"src":"11694:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6441,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"11682:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11688:5:24","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":3958,"src":"11682:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11682:33:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6447,"nodeType":"ExpressionStatement","src":"11682:33:24"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6450,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6428,"src":"11751:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":6453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":6451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11760:3:24","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6452,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6422,"src":"11766:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11760:7:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":6454,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11759:9:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11751:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6456,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11750:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6457,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6430,"src":"11773:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":6458,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6422,"src":"11780:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11773:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6460,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11772:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11750:32:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6426,"id":6462,"nodeType":"Return","src":"11743:39:24"}]}]},"documentation":{"id":6416,"nodeType":"StructuredDocumentation","src":"11352:111:24","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"id":6465,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11477:6:24","nodeType":"FunctionDefinition","parameters":{"id":6423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6418,"mutability":"mutable","name":"x","nameLocation":"11492:1:24","nodeType":"VariableDeclaration","scope":6465,"src":"11484:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6417,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6420,"mutability":"mutable","name":"y","nameLocation":"11503:1:24","nodeType":"VariableDeclaration","scope":6465,"src":"11495:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6419,"name":"uint256","nodeType":"ElementaryTypeName","src":"11495:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6422,"mutability":"mutable","name":"n","nameLocation":"11512:1:24","nodeType":"VariableDeclaration","scope":6465,"src":"11506:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6421,"name":"uint8","nodeType":"ElementaryTypeName","src":"11506:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11483:31:24"},"returnParameters":{"id":6426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6425,"mutability":"mutable","name":"result","nameLocation":"11546:6:24","nodeType":"VariableDeclaration","scope":6465,"src":"11538:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6424,"name":"uint256","nodeType":"ElementaryTypeName","src":"11538:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11537:16:24"},"scope":7507,"src":"11468:331:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6503,"nodeType":"Block","src":"12017:113:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6481,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6468,"src":"12041:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6482,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6470,"src":"12044:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6483,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6472,"src":"12047:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6480,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[6465,6504],"referencedDeclaration":6465,"src":"12034:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":6484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12034:15:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6488,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"12085:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}],"id":6487,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"12068:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$5862_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":6489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12068:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6491,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6468,"src":"12105:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6492,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6470,"src":"12108:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12111:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6494,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6472,"src":"12116:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12111:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6490,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967280,"src":"12098:6:24","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12098:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12121:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12098:24:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12068:54:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6485,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"12052:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":6486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12061:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"12052:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12052:71:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12034:89:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6479,"id":6502,"nodeType":"Return","src":"12027:96:24"}]},"documentation":{"id":6466,"nodeType":"StructuredDocumentation","src":"11805:109:24","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"id":6504,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11928:6:24","nodeType":"FunctionDefinition","parameters":{"id":6476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6468,"mutability":"mutable","name":"x","nameLocation":"11943:1:24","nodeType":"VariableDeclaration","scope":6504,"src":"11935:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6467,"name":"uint256","nodeType":"ElementaryTypeName","src":"11935:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6470,"mutability":"mutable","name":"y","nameLocation":"11954:1:24","nodeType":"VariableDeclaration","scope":6504,"src":"11946:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11946:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6472,"mutability":"mutable","name":"n","nameLocation":"11963:1:24","nodeType":"VariableDeclaration","scope":6504,"src":"11957:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6471,"name":"uint8","nodeType":"ElementaryTypeName","src":"11957:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6475,"mutability":"mutable","name":"rounding","nameLocation":"11975:8:24","nodeType":"VariableDeclaration","scope":6504,"src":"11966:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"},"typeName":{"id":6474,"nodeType":"UserDefinedTypeName","pathNode":{"id":6473,"name":"Rounding","nameLocations":["11966:8:24"],"nodeType":"IdentifierPath","referencedDeclaration":5862,"src":"11966:8:24"},"referencedDeclaration":5862,"src":"11966:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11934:50:24"},"returnParameters":{"id":6479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6504,"src":"12008:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6477,"name":"uint256","nodeType":"ElementaryTypeName","src":"12008:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12007:9:24"},"scope":7507,"src":"11919:211:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6600,"nodeType":"Block","src":"12764:1849:24","statements":[{"id":6599,"nodeType":"UncheckedBlock","src":"12774:1833:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6514,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6509,"src":"12802:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12807:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12802:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6519,"nodeType":"IfStatement","src":"12798:20:24","trueBody":{"expression":{"hexValue":"30","id":6517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12817:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":6513,"id":6518,"nodeType":"Return","src":"12810:8:24"}},{"assignments":[6521],"declarations":[{"constant":false,"id":6521,"mutability":"mutable","name":"remainder","nameLocation":"13297:9:24","nodeType":"VariableDeclaration","scope":6599,"src":"13289:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6520,"name":"uint256","nodeType":"ElementaryTypeName","src":"13289:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6525,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6522,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6507,"src":"13309:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":6523,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6509,"src":"13313:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13309:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13289:25:24"},{"assignments":[6527],"declarations":[{"constant":false,"id":6527,"mutability":"mutable","name":"gcd","nameLocation":"13336:3:24","nodeType":"VariableDeclaration","scope":6599,"src":"13328:11:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6526,"name":"uint256","nodeType":"ElementaryTypeName","src":"13328:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6529,"initialValue":{"id":6528,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6509,"src":"13342:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13328:15:24"},{"assignments":[6531],"declarations":[{"constant":false,"id":6531,"mutability":"mutable","name":"x","nameLocation":"13486:1:24","nodeType":"VariableDeclaration","scope":6599,"src":"13479:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6530,"name":"int256","nodeType":"ElementaryTypeName","src":"13479:6:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6533,"initialValue":{"hexValue":"30","id":6532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13490:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13479:12:24"},{"assignments":[6535],"declarations":[{"constant":false,"id":6535,"mutability":"mutable","name":"y","nameLocation":"13512:1:24","nodeType":"VariableDeclaration","scope":6599,"src":"13505:8:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6534,"name":"int256","nodeType":"ElementaryTypeName","src":"13505:6:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6537,"initialValue":{"hexValue":"31","id":6536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13505:12:24"},{"body":{"id":6574,"nodeType":"Block","src":"13555:882:24","statements":[{"assignments":[6542],"declarations":[{"constant":false,"id":6542,"mutability":"mutable","name":"quotient","nameLocation":"13581:8:24","nodeType":"VariableDeclaration","scope":6574,"src":"13573:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6541,"name":"uint256","nodeType":"ElementaryTypeName","src":"13573:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6546,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6543,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6527,"src":"13592:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6544,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6521,"src":"13598:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13592:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13573:34:24"},{"expression":{"id":6557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":6547,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6527,"src":"13627:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6548,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6521,"src":"13632:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6549,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13626:16:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":6550,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6521,"src":"13732:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6551,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6527,"src":"13977:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6552,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6521,"src":"13983:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6553,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6542,"src":"13995:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13983:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13977:26:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6556,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13645:376:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13626:395:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6558,"nodeType":"ExpressionStatement","src":"13626:395:24"},{"expression":{"id":6572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":6559,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6531,"src":"14041:1:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":6560,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6535,"src":"14044:1:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6561,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14040:6:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":6562,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6535,"src":"14126:1:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6563,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6531,"src":"14380:1:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6564,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6535,"src":"14384:1:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":6567,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6542,"src":"14395:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14388:6:24","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6565,"name":"int256","nodeType":"ElementaryTypeName","src":"14388:6:24","typeDescriptions":{}}},"id":6568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14388:16:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14384:20:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14380:24:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6571,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14049:373:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"14040:382:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6573,"nodeType":"ExpressionStatement","src":"14040:382:24"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6538,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6521,"src":"13539:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13552:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13539:14:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6575,"nodeType":"WhileStatement","src":"13532:905:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6576,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6527,"src":"14455:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":6577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14462:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14455:8:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6581,"nodeType":"IfStatement","src":"14451:22:24","trueBody":{"expression":{"hexValue":"30","id":6579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14472:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":6513,"id":6580,"nodeType":"Return","src":"14465:8:24"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6583,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6531,"src":"14524:1:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":6584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14528:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14524:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6586,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6509,"src":"14531:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":6590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14543:2:24","subExpression":{"id":6589,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6531,"src":"14544:1:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14535:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6587,"name":"uint256","nodeType":"ElementaryTypeName","src":"14535:7:24","typeDescriptions":{}}},"id":6591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14535:11:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14531:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":6595,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6531,"src":"14556:1:24","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14548:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6593,"name":"uint256","nodeType":"ElementaryTypeName","src":"14548:7:24","typeDescriptions":{}}},"id":6596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14548:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6582,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6139,"src":"14516:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14516:43:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6513,"id":6598,"nodeType":"Return","src":"14509:50:24"}]}]},"documentation":{"id":6505,"nodeType":"StructuredDocumentation","src":"12136:553:24","text":" @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."},"id":6601,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12703:6:24","nodeType":"FunctionDefinition","parameters":{"id":6510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6507,"mutability":"mutable","name":"a","nameLocation":"12718:1:24","nodeType":"VariableDeclaration","scope":6601,"src":"12710:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6506,"name":"uint256","nodeType":"ElementaryTypeName","src":"12710:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6509,"mutability":"mutable","name":"n","nameLocation":"12729:1:24","nodeType":"VariableDeclaration","scope":6601,"src":"12721:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6508,"name":"uint256","nodeType":"ElementaryTypeName","src":"12721:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12709:22:24"},"returnParameters":{"id":6513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6601,"src":"12755:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6511,"name":"uint256","nodeType":"ElementaryTypeName","src":"12755:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12754:9:24"},"scope":7507,"src":"12694:1919:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6621,"nodeType":"Block","src":"15213:82:24","statements":[{"id":6620,"nodeType":"UncheckedBlock","src":"15223:66:24","statements":[{"expression":{"arguments":[{"id":6613,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6604,"src":"15266:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6614,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6606,"src":"15269:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":6615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15273:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15269:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6617,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6606,"src":"15276:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6611,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"15254:4:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7507_$","typeString":"type(library Math)"}},"id":6612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15259:6:24","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":6658,"src":"15254:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":6618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15254:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6610,"id":6619,"nodeType":"Return","src":"15247:31:24"}]}]},"documentation":{"id":6602,"nodeType":"StructuredDocumentation","src":"14619:514:24","text":" @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."},"id":6622,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15147:11:24","nodeType":"FunctionDefinition","parameters":{"id":6607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6604,"mutability":"mutable","name":"a","nameLocation":"15167:1:24","nodeType":"VariableDeclaration","scope":6622,"src":"15159:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6603,"name":"uint256","nodeType":"ElementaryTypeName","src":"15159:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6606,"mutability":"mutable","name":"p","nameLocation":"15178:1:24","nodeType":"VariableDeclaration","scope":6622,"src":"15170:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6605,"name":"uint256","nodeType":"ElementaryTypeName","src":"15170:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15158:22:24"},"returnParameters":{"id":6610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6622,"src":"15204:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6608,"name":"uint256","nodeType":"ElementaryTypeName","src":"15204:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15203:9:24"},"scope":7507,"src":"15138:157:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6657,"nodeType":"Block","src":"16065:174:24","statements":[{"assignments":[6635,6637],"declarations":[{"constant":false,"id":6635,"mutability":"mutable","name":"success","nameLocation":"16081:7:24","nodeType":"VariableDeclaration","scope":6657,"src":"16076:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6634,"name":"bool","nodeType":"ElementaryTypeName","src":"16076:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6637,"mutability":"mutable","name":"result","nameLocation":"16098:6:24","nodeType":"VariableDeclaration","scope":6657,"src":"16090:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6636,"name":"uint256","nodeType":"ElementaryTypeName","src":"16090:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6643,"initialValue":{"arguments":[{"id":6639,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"16118:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6640,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6627,"src":"16121:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6641,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6629,"src":"16124:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6638,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[6682,6764],"referencedDeclaration":6682,"src":"16108:9:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (bool,uint256)"}},"id":6642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16108:18:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16075:51:24"},{"condition":{"id":6645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16140:8:24","subExpression":{"id":6644,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6635,"src":"16141:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6654,"nodeType":"IfStatement","src":"16136:74:24","trueBody":{"id":6653,"nodeType":"Block","src":"16150:60:24","statements":[{"expression":{"arguments":[{"expression":{"id":6649,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"16176:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16182:16:24","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":3926,"src":"16176:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6646,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"16164:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16170:5:24","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":3958,"src":"16164:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16164:35:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6652,"nodeType":"ExpressionStatement","src":"16164:35:24"}]}},{"expression":{"id":6655,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"16226:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6633,"id":6656,"nodeType":"Return","src":"16219:13:24"}]},"documentation":{"id":6623,"nodeType":"StructuredDocumentation","src":"15301:678:24","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."},"id":6658,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15993:6:24","nodeType":"FunctionDefinition","parameters":{"id":6630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6625,"mutability":"mutable","name":"b","nameLocation":"16008:1:24","nodeType":"VariableDeclaration","scope":6658,"src":"16000:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6624,"name":"uint256","nodeType":"ElementaryTypeName","src":"16000:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6627,"mutability":"mutable","name":"e","nameLocation":"16019:1:24","nodeType":"VariableDeclaration","scope":6658,"src":"16011:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6626,"name":"uint256","nodeType":"ElementaryTypeName","src":"16011:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6629,"mutability":"mutable","name":"m","nameLocation":"16030:1:24","nodeType":"VariableDeclaration","scope":6658,"src":"16022:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6628,"name":"uint256","nodeType":"ElementaryTypeName","src":"16022:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15999:33:24"},"returnParameters":{"id":6633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6632,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6658,"src":"16056:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6631,"name":"uint256","nodeType":"ElementaryTypeName","src":"16056:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16055:9:24"},"scope":7507,"src":"15984:255:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6681,"nodeType":"Block","src":"17093:1493:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6672,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6665,"src":"17107:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17112:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17107:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6679,"nodeType":"IfStatement","src":"17103:29:24","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":6675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17123:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17130:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17122:10:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":6671,"id":6678,"nodeType":"Return","src":"17115:17:24"}},{"AST":{"nativeSrc":"17167:1413:24","nodeType":"YulBlock","src":"17167:1413:24","statements":[{"nativeSrc":"17181:22:24","nodeType":"YulVariableDeclaration","src":"17181:22:24","value":{"arguments":[{"kind":"number","nativeSrc":"17198:4:24","nodeType":"YulLiteral","src":"17198:4:24","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17192:5:24","nodeType":"YulIdentifier","src":"17192:5:24"},"nativeSrc":"17192:11:24","nodeType":"YulFunctionCall","src":"17192:11:24"},"variables":[{"name":"ptr","nativeSrc":"17185:3:24","nodeType":"YulTypedName","src":"17185:3:24","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18111:3:24","nodeType":"YulIdentifier","src":"18111:3:24"},{"kind":"number","nativeSrc":"18116:4:24","nodeType":"YulLiteral","src":"18116:4:24","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18104:6:24","nodeType":"YulIdentifier","src":"18104:6:24"},"nativeSrc":"18104:17:24","nodeType":"YulFunctionCall","src":"18104:17:24"},"nativeSrc":"18104:17:24","nodeType":"YulExpressionStatement","src":"18104:17:24"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18145:3:24","nodeType":"YulIdentifier","src":"18145:3:24"},{"kind":"number","nativeSrc":"18150:4:24","nodeType":"YulLiteral","src":"18150:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18141:3:24","nodeType":"YulIdentifier","src":"18141:3:24"},"nativeSrc":"18141:14:24","nodeType":"YulFunctionCall","src":"18141:14:24"},{"kind":"number","nativeSrc":"18157:4:24","nodeType":"YulLiteral","src":"18157:4:24","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18134:6:24","nodeType":"YulIdentifier","src":"18134:6:24"},"nativeSrc":"18134:28:24","nodeType":"YulFunctionCall","src":"18134:28:24"},"nativeSrc":"18134:28:24","nodeType":"YulExpressionStatement","src":"18134:28:24"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18186:3:24","nodeType":"YulIdentifier","src":"18186:3:24"},{"kind":"number","nativeSrc":"18191:4:24","nodeType":"YulLiteral","src":"18191:4:24","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18182:3:24","nodeType":"YulIdentifier","src":"18182:3:24"},"nativeSrc":"18182:14:24","nodeType":"YulFunctionCall","src":"18182:14:24"},{"kind":"number","nativeSrc":"18198:4:24","nodeType":"YulLiteral","src":"18198:4:24","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18175:6:24","nodeType":"YulIdentifier","src":"18175:6:24"},"nativeSrc":"18175:28:24","nodeType":"YulFunctionCall","src":"18175:28:24"},"nativeSrc":"18175:28:24","nodeType":"YulExpressionStatement","src":"18175:28:24"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18227:3:24","nodeType":"YulIdentifier","src":"18227:3:24"},{"kind":"number","nativeSrc":"18232:4:24","nodeType":"YulLiteral","src":"18232:4:24","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18223:3:24","nodeType":"YulIdentifier","src":"18223:3:24"},"nativeSrc":"18223:14:24","nodeType":"YulFunctionCall","src":"18223:14:24"},{"name":"b","nativeSrc":"18239:1:24","nodeType":"YulIdentifier","src":"18239:1:24"}],"functionName":{"name":"mstore","nativeSrc":"18216:6:24","nodeType":"YulIdentifier","src":"18216:6:24"},"nativeSrc":"18216:25:24","nodeType":"YulFunctionCall","src":"18216:25:24"},"nativeSrc":"18216:25:24","nodeType":"YulExpressionStatement","src":"18216:25:24"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18265:3:24","nodeType":"YulIdentifier","src":"18265:3:24"},{"kind":"number","nativeSrc":"18270:4:24","nodeType":"YulLiteral","src":"18270:4:24","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18261:3:24","nodeType":"YulIdentifier","src":"18261:3:24"},"nativeSrc":"18261:14:24","nodeType":"YulFunctionCall","src":"18261:14:24"},{"name":"e","nativeSrc":"18277:1:24","nodeType":"YulIdentifier","src":"18277:1:24"}],"functionName":{"name":"mstore","nativeSrc":"18254:6:24","nodeType":"YulIdentifier","src":"18254:6:24"},"nativeSrc":"18254:25:24","nodeType":"YulFunctionCall","src":"18254:25:24"},"nativeSrc":"18254:25:24","nodeType":"YulExpressionStatement","src":"18254:25:24"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18303:3:24","nodeType":"YulIdentifier","src":"18303:3:24"},{"kind":"number","nativeSrc":"18308:4:24","nodeType":"YulLiteral","src":"18308:4:24","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18299:3:24","nodeType":"YulIdentifier","src":"18299:3:24"},"nativeSrc":"18299:14:24","nodeType":"YulFunctionCall","src":"18299:14:24"},{"name":"m","nativeSrc":"18315:1:24","nodeType":"YulIdentifier","src":"18315:1:24"}],"functionName":{"name":"mstore","nativeSrc":"18292:6:24","nodeType":"YulIdentifier","src":"18292:6:24"},"nativeSrc":"18292:25:24","nodeType":"YulFunctionCall","src":"18292:25:24"},"nativeSrc":"18292:25:24","nodeType":"YulExpressionStatement","src":"18292:25:24"},{"nativeSrc":"18479:57:24","nodeType":"YulAssignment","src":"18479:57:24","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18501:3:24","nodeType":"YulIdentifier","src":"18501:3:24"},"nativeSrc":"18501:5:24","nodeType":"YulFunctionCall","src":"18501:5:24"},{"kind":"number","nativeSrc":"18508:4:24","nodeType":"YulLiteral","src":"18508:4:24","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18514:3:24","nodeType":"YulIdentifier","src":"18514:3:24"},{"kind":"number","nativeSrc":"18519:4:24","nodeType":"YulLiteral","src":"18519:4:24","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18525:4:24","nodeType":"YulLiteral","src":"18525:4:24","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18531:4:24","nodeType":"YulLiteral","src":"18531:4:24","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18490:10:24","nodeType":"YulIdentifier","src":"18490:10:24"},"nativeSrc":"18490:46:24","nodeType":"YulFunctionCall","src":"18490:46:24"},"variableNames":[{"name":"success","nativeSrc":"18479:7:24","nodeType":"YulIdentifier","src":"18479:7:24"}]},{"nativeSrc":"18549:21:24","nodeType":"YulAssignment","src":"18549:21:24","value":{"arguments":[{"kind":"number","nativeSrc":"18565:4:24","nodeType":"YulLiteral","src":"18565:4:24","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18559:5:24","nodeType":"YulIdentifier","src":"18559:5:24"},"nativeSrc":"18559:11:24","nodeType":"YulFunctionCall","src":"18559:11:24"},"variableNames":[{"name":"result","nativeSrc":"18549:6:24","nodeType":"YulIdentifier","src":"18549:6:24"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6661,"isOffset":false,"isSlot":false,"src":"18239:1:24","valueSize":1},{"declaration":6663,"isOffset":false,"isSlot":false,"src":"18277:1:24","valueSize":1},{"declaration":6665,"isOffset":false,"isSlot":false,"src":"18315:1:24","valueSize":1},{"declaration":6670,"isOffset":false,"isSlot":false,"src":"18549:6:24","valueSize":1},{"declaration":6668,"isOffset":false,"isSlot":false,"src":"18479:7:24","valueSize":1}],"flags":["memory-safe"],"id":6680,"nodeType":"InlineAssembly","src":"17142:1438:24"}]},"documentation":{"id":6659,"nodeType":"StructuredDocumentation","src":"16245:738:24","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."},"id":6682,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16997:9:24","nodeType":"FunctionDefinition","parameters":{"id":6666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6661,"mutability":"mutable","name":"b","nameLocation":"17015:1:24","nodeType":"VariableDeclaration","scope":6682,"src":"17007:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6660,"name":"uint256","nodeType":"ElementaryTypeName","src":"17007:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6663,"mutability":"mutable","name":"e","nameLocation":"17026:1:24","nodeType":"VariableDeclaration","scope":6682,"src":"17018:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6662,"name":"uint256","nodeType":"ElementaryTypeName","src":"17018:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6665,"mutability":"mutable","name":"m","nameLocation":"17037:1:24","nodeType":"VariableDeclaration","scope":6682,"src":"17029:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6664,"name":"uint256","nodeType":"ElementaryTypeName","src":"17029:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17006:33:24"},"returnParameters":{"id":6671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6668,"mutability":"mutable","name":"success","nameLocation":"17068:7:24","nodeType":"VariableDeclaration","scope":6682,"src":"17063:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6667,"name":"bool","nodeType":"ElementaryTypeName","src":"17063:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6670,"mutability":"mutable","name":"result","nameLocation":"17085:6:24","nodeType":"VariableDeclaration","scope":6682,"src":"17077:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6669,"name":"uint256","nodeType":"ElementaryTypeName","src":"17077:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17062:30:24"},"scope":7507,"src":"16988:1598:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6717,"nodeType":"Block","src":"18783:179:24","statements":[{"assignments":[6695,6697],"declarations":[{"constant":false,"id":6695,"mutability":"mutable","name":"success","nameLocation":"18799:7:24","nodeType":"VariableDeclaration","scope":6717,"src":"18794:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6694,"name":"bool","nodeType":"ElementaryTypeName","src":"18794:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6697,"mutability":"mutable","name":"result","nameLocation":"18821:6:24","nodeType":"VariableDeclaration","scope":6717,"src":"18808:19:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6696,"name":"bytes","nodeType":"ElementaryTypeName","src":"18808:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6703,"initialValue":{"arguments":[{"id":6699,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"18841:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6700,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6687,"src":"18844:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6701,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6689,"src":"18847:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6698,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[6682,6764],"referencedDeclaration":6764,"src":"18831:9:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"}},"id":6702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18831:18:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18793:56:24"},{"condition":{"id":6705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18863:8:24","subExpression":{"id":6704,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"18864:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6714,"nodeType":"IfStatement","src":"18859:74:24","trueBody":{"id":6713,"nodeType":"Block","src":"18873:60:24","statements":[{"expression":{"arguments":[{"expression":{"id":6709,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"18899:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18905:16:24","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":3926,"src":"18899:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6706,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"18887:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3959_$","typeString":"type(library Panic)"}},"id":6708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18893:5:24","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":3958,"src":"18887:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18887:35:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6712,"nodeType":"ExpressionStatement","src":"18887:35:24"}]}},{"expression":{"id":6715,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6697,"src":"18949:6:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6693,"id":6716,"nodeType":"Return","src":"18942:13:24"}]},"documentation":{"id":6683,"nodeType":"StructuredDocumentation","src":"18592:85:24","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":6718,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18691:6:24","nodeType":"FunctionDefinition","parameters":{"id":6690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6685,"mutability":"mutable","name":"b","nameLocation":"18711:1:24","nodeType":"VariableDeclaration","scope":6718,"src":"18698:14:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6684,"name":"bytes","nodeType":"ElementaryTypeName","src":"18698:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6687,"mutability":"mutable","name":"e","nameLocation":"18727:1:24","nodeType":"VariableDeclaration","scope":6718,"src":"18714:14:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6686,"name":"bytes","nodeType":"ElementaryTypeName","src":"18714:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6689,"mutability":"mutable","name":"m","nameLocation":"18743:1:24","nodeType":"VariableDeclaration","scope":6718,"src":"18730:14:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6688,"name":"bytes","nodeType":"ElementaryTypeName","src":"18730:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18697:48:24"},"returnParameters":{"id":6693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6718,"src":"18769:12:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6691,"name":"bytes","nodeType":"ElementaryTypeName","src":"18769:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18768:14:24"},"scope":7507,"src":"18682:280:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6763,"nodeType":"Block","src":"19216:771:24","statements":[{"condition":{"arguments":[{"id":6733,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6725,"src":"19241:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6732,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6811,"src":"19230:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":6734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19230:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6742,"nodeType":"IfStatement","src":"19226:47:24","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":6735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19253:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":6738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19270:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19260:9:24","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":6736,"name":"bytes","nodeType":"ElementaryTypeName","src":"19264:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":6739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19260:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":6740,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19252:21:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":6731,"id":6741,"nodeType":"Return","src":"19245:28:24"}},{"assignments":[6744],"declarations":[{"constant":false,"id":6744,"mutability":"mutable","name":"mLen","nameLocation":"19292:4:24","nodeType":"VariableDeclaration","scope":6763,"src":"19284:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6743,"name":"uint256","nodeType":"ElementaryTypeName","src":"19284:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6747,"initialValue":{"expression":{"id":6745,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6725,"src":"19299:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19301:6:24","memberName":"length","nodeType":"MemberAccess","src":"19299:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19284:23:24"},{"expression":{"id":6760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6748,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"19389:6:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":6751,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6721,"src":"19415:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19417:6:24","memberName":"length","nodeType":"MemberAccess","src":"19415:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6753,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6723,"src":"19425:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19427:6:24","memberName":"length","nodeType":"MemberAccess","src":"19425:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6755,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6744,"src":"19435:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6756,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6721,"src":"19441:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6757,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6723,"src":"19444:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6758,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6725,"src":"19447:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6749,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"19398:3:24","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19402:12:24","memberName":"encodePacked","nodeType":"MemberAccess","src":"19398:16:24","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19398:51:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19389:60:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6761,"nodeType":"ExpressionStatement","src":"19389:60:24"},{"AST":{"nativeSrc":"19485:496:24","nodeType":"YulBlock","src":"19485:496:24","statements":[{"nativeSrc":"19499:32:24","nodeType":"YulVariableDeclaration","src":"19499:32:24","value":{"arguments":[{"name":"result","nativeSrc":"19518:6:24","nodeType":"YulIdentifier","src":"19518:6:24"},{"kind":"number","nativeSrc":"19526:4:24","nodeType":"YulLiteral","src":"19526:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19514:3:24","nodeType":"YulIdentifier","src":"19514:3:24"},"nativeSrc":"19514:17:24","nodeType":"YulFunctionCall","src":"19514:17:24"},"variables":[{"name":"dataPtr","nativeSrc":"19503:7:24","nodeType":"YulTypedName","src":"19503:7:24","type":""}]},{"nativeSrc":"19621:73:24","nodeType":"YulAssignment","src":"19621:73:24","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19643:3:24","nodeType":"YulIdentifier","src":"19643:3:24"},"nativeSrc":"19643:5:24","nodeType":"YulFunctionCall","src":"19643:5:24"},{"kind":"number","nativeSrc":"19650:4:24","nodeType":"YulLiteral","src":"19650:4:24","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19656:7:24","nodeType":"YulIdentifier","src":"19656:7:24"},{"arguments":[{"name":"result","nativeSrc":"19671:6:24","nodeType":"YulIdentifier","src":"19671:6:24"}],"functionName":{"name":"mload","nativeSrc":"19665:5:24","nodeType":"YulIdentifier","src":"19665:5:24"},"nativeSrc":"19665:13:24","nodeType":"YulFunctionCall","src":"19665:13:24"},{"name":"dataPtr","nativeSrc":"19680:7:24","nodeType":"YulIdentifier","src":"19680:7:24"},{"name":"mLen","nativeSrc":"19689:4:24","nodeType":"YulIdentifier","src":"19689:4:24"}],"functionName":{"name":"staticcall","nativeSrc":"19632:10:24","nodeType":"YulIdentifier","src":"19632:10:24"},"nativeSrc":"19632:62:24","nodeType":"YulFunctionCall","src":"19632:62:24"},"variableNames":[{"name":"success","nativeSrc":"19621:7:24","nodeType":"YulIdentifier","src":"19621:7:24"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19850:6:24","nodeType":"YulIdentifier","src":"19850:6:24"},{"name":"mLen","nativeSrc":"19858:4:24","nodeType":"YulIdentifier","src":"19858:4:24"}],"functionName":{"name":"mstore","nativeSrc":"19843:6:24","nodeType":"YulIdentifier","src":"19843:6:24"},"nativeSrc":"19843:20:24","nodeType":"YulFunctionCall","src":"19843:20:24"},"nativeSrc":"19843:20:24","nodeType":"YulExpressionStatement","src":"19843:20:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19946:4:24","nodeType":"YulLiteral","src":"19946:4:24","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19956:7:24","nodeType":"YulIdentifier","src":"19956:7:24"},{"name":"mLen","nativeSrc":"19965:4:24","nodeType":"YulIdentifier","src":"19965:4:24"}],"functionName":{"name":"add","nativeSrc":"19952:3:24","nodeType":"YulIdentifier","src":"19952:3:24"},"nativeSrc":"19952:18:24","nodeType":"YulFunctionCall","src":"19952:18:24"}],"functionName":{"name":"mstore","nativeSrc":"19939:6:24","nodeType":"YulIdentifier","src":"19939:6:24"},"nativeSrc":"19939:32:24","nodeType":"YulFunctionCall","src":"19939:32:24"},"nativeSrc":"19939:32:24","nodeType":"YulExpressionStatement","src":"19939:32:24"}]},"evmVersion":"cancun","externalReferences":[{"declaration":6744,"isOffset":false,"isSlot":false,"src":"19689:4:24","valueSize":1},{"declaration":6744,"isOffset":false,"isSlot":false,"src":"19858:4:24","valueSize":1},{"declaration":6744,"isOffset":false,"isSlot":false,"src":"19965:4:24","valueSize":1},{"declaration":6730,"isOffset":false,"isSlot":false,"src":"19518:6:24","valueSize":1},{"declaration":6730,"isOffset":false,"isSlot":false,"src":"19671:6:24","valueSize":1},{"declaration":6730,"isOffset":false,"isSlot":false,"src":"19850:6:24","valueSize":1},{"declaration":6728,"isOffset":false,"isSlot":false,"src":"19621:7:24","valueSize":1}],"flags":["memory-safe"],"id":6762,"nodeType":"InlineAssembly","src":"19460:521:24"}]},"documentation":{"id":6719,"nodeType":"StructuredDocumentation","src":"18968:88:24","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":6764,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19070:9:24","nodeType":"FunctionDefinition","parameters":{"id":6726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6721,"mutability":"mutable","name":"b","nameLocation":"19102:1:24","nodeType":"VariableDeclaration","scope":6764,"src":"19089:14:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6720,"name":"bytes","nodeType":"ElementaryTypeName","src":"19089:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6723,"mutability":"mutable","name":"e","nameLocation":"19126:1:24","nodeType":"VariableDeclaration","scope":6764,"src":"19113:14:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6722,"name":"bytes","nodeType":"ElementaryTypeName","src":"19113:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6725,"mutability":"mutable","name":"m","nameLocation":"19150:1:24","nodeType":"VariableDeclaration","scope":6764,"src":"19137:14:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6724,"name":"bytes","nodeType":"ElementaryTypeName","src":"19137:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19079:78:24"},"returnParameters":{"id":6731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6728,"mutability":"mutable","name":"success","nameLocation":"19186:7:24","nodeType":"VariableDeclaration","scope":6764,"src":"19181:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6727,"name":"bool","nodeType":"ElementaryTypeName","src":"19181:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6730,"mutability":"mutable","name":"result","nameLocation":"19208:6:24","nodeType":"VariableDeclaration","scope":6764,"src":"19195:19:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6729,"name":"bytes","nodeType":"ElementaryTypeName","src":"19195:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19180:35:24"},"scope":7507,"src":"19061:926:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6810,"nodeType":"Block","src":"20139:417:24","statements":[{"assignments":[6773],"declarations":[{"constant":false,"id":6773,"mutability":"mutable","name":"chunk","nameLocation":"20157:5:24","nodeType":"VariableDeclaration","scope":6810,"src":"20149:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6772,"name":"uint256","nodeType":"ElementaryTypeName","src":"20149:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6774,"nodeType":"VariableDeclarationStatement","src":"20149:13:24"},{"body":{"id":6806,"nodeType":"Block","src":"20222:307:24","statements":[{"AST":{"nativeSrc":"20324:73:24","nodeType":"YulBlock","src":"20324:73:24","statements":[{"nativeSrc":"20342:41:24","nodeType":"YulAssignment","src":"20342:41:24","value":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"20365:6:24","nodeType":"YulIdentifier","src":"20365:6:24"},{"kind":"number","nativeSrc":"20373:4:24","nodeType":"YulLiteral","src":"20373:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20361:3:24","nodeType":"YulIdentifier","src":"20361:3:24"},"nativeSrc":"20361:17:24","nodeType":"YulFunctionCall","src":"20361:17:24"},{"name":"i","nativeSrc":"20380:1:24","nodeType":"YulIdentifier","src":"20380:1:24"}],"functionName":{"name":"add","nativeSrc":"20357:3:24","nodeType":"YulIdentifier","src":"20357:3:24"},"nativeSrc":"20357:25:24","nodeType":"YulFunctionCall","src":"20357:25:24"}],"functionName":{"name":"mload","nativeSrc":"20351:5:24","nodeType":"YulIdentifier","src":"20351:5:24"},"nativeSrc":"20351:32:24","nodeType":"YulFunctionCall","src":"20351:32:24"},"variableNames":[{"name":"chunk","nativeSrc":"20342:5:24","nodeType":"YulIdentifier","src":"20342:5:24"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6767,"isOffset":false,"isSlot":false,"src":"20365:6:24","valueSize":1},{"declaration":6773,"isOffset":false,"isSlot":false,"src":"20342:5:24","valueSize":1},{"declaration":6776,"isOffset":false,"isSlot":false,"src":"20380:1:24","valueSize":1}],"flags":["memory-safe"],"id":6787,"nodeType":"InlineAssembly","src":"20299:98:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6788,"name":"chunk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6773,"src":"20414:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":6789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:1:24","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6791,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6776,"src":"20442:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30783230","id":6792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20446:4:24","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"20442:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6794,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6767,"src":"20452:6:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20459:6:24","memberName":"length","nodeType":"MemberAccess","src":"20452:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6790,"name":"saturatingSub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6082,"src":"20428:13:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20428:38:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20424:42:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6798,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20423:44:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20414:53:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20471:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20414:58:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6805,"nodeType":"IfStatement","src":"20410:109:24","trueBody":{"id":6804,"nodeType":"Block","src":"20474:45:24","statements":[{"expression":{"hexValue":"66616c7365","id":6802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20499:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6771,"id":6803,"nodeType":"Return","src":"20492:12:24"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6779,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6776,"src":"20192:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":6780,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6767,"src":"20196:6:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20203:6:24","memberName":"length","nodeType":"MemberAccess","src":"20196:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20192:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6807,"initializationExpression":{"assignments":[6776],"declarations":[{"constant":false,"id":6776,"mutability":"mutable","name":"i","nameLocation":"20185:1:24","nodeType":"VariableDeclaration","scope":6807,"src":"20177:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6775,"name":"uint256","nodeType":"ElementaryTypeName","src":"20177:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6778,"initialValue":{"hexValue":"30","id":6777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20189:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20177:13:24"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":6785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6783,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6776,"src":"20211:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"30783230","id":6784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20216:4:24","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"20211:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6786,"nodeType":"ExpressionStatement","src":"20211:9:24"},"nodeType":"ForStatement","src":"20172:357:24"},{"expression":{"hexValue":"74727565","id":6808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20545:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6771,"id":6809,"nodeType":"Return","src":"20538:11:24"}]},"documentation":{"id":6765,"nodeType":"StructuredDocumentation","src":"19993:72:24","text":" @dev Returns whether the provided byte array is zero."},"id":6811,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20079:10:24","nodeType":"FunctionDefinition","parameters":{"id":6768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6767,"mutability":"mutable","name":"buffer","nameLocation":"20103:6:24","nodeType":"VariableDeclaration","scope":6811,"src":"20090:19:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6766,"name":"bytes","nodeType":"ElementaryTypeName","src":"20090:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20089:21:24"},"returnParameters":{"id":6771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6811,"src":"20133:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6769,"name":"bool","nodeType":"ElementaryTypeName","src":"20133:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20132:6:24"},"scope":7507,"src":"20070:486:24","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":7029,"nodeType":"Block","src":"20916:5124:24","statements":[{"id":7028,"nodeType":"UncheckedBlock","src":"20926:5108:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6819,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"21020:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":6820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21025:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"21020:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6825,"nodeType":"IfStatement","src":"21016:53:24","trueBody":{"id":6824,"nodeType":"Block","src":"21028:41:24","statements":[{"expression":{"id":6822,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"21053:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6818,"id":6823,"nodeType":"Return","src":"21046:8:24"}]}},{"assignments":[6827],"declarations":[{"constant":false,"id":6827,"mutability":"mutable","name":"aa","nameLocation":"22004:2:24","nodeType":"VariableDeclaration","scope":7028,"src":"21996:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6826,"name":"uint256","nodeType":"ElementaryTypeName","src":"21996:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6829,"initialValue":{"id":6828,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"22009:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21996:14:24"},{"assignments":[6831],"declarations":[{"constant":false,"id":6831,"mutability":"mutable","name":"xn","nameLocation":"22032:2:24","nodeType":"VariableDeclaration","scope":7028,"src":"22024:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6830,"name":"uint256","nodeType":"ElementaryTypeName","src":"22024:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6833,"initialValue":{"hexValue":"31","id":6832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22037:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"22024:14:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6834,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22057:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":6837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22064:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":6836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:3:24","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"22064:8:24","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":6838,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22063:10:24","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"22057:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6849,"nodeType":"IfStatement","src":"22053:92:24","trueBody":{"id":6848,"nodeType":"Block","src":"22075:70:24","statements":[{"expression":{"id":6842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6840,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22093:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":6841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22100:3:24","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"22093:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6843,"nodeType":"ExpressionStatement","src":"22093:10:24"},{"expression":{"id":6846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6844,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"22121:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":6845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22128:2:24","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"22121:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6847,"nodeType":"ExpressionStatement","src":"22121:9:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6850,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22162:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":6853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22169:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":6852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22174:2:24","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"22169:7:24","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":6854,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22168:9:24","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"22162:15:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6865,"nodeType":"IfStatement","src":"22158:90:24","trueBody":{"id":6864,"nodeType":"Block","src":"22179:69:24","statements":[{"expression":{"id":6858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6856,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22197:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":6857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22204:2:24","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"22197:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6859,"nodeType":"ExpressionStatement","src":"22197:9:24"},{"expression":{"id":6862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6860,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"22224:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":6861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22231:2:24","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22224:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6863,"nodeType":"ExpressionStatement","src":"22224:9:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6866,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22265:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":6869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22272:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":6868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22277:2:24","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22272:7:24","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":6870,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22271:9:24","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"22265:15:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6881,"nodeType":"IfStatement","src":"22261:90:24","trueBody":{"id":6880,"nodeType":"Block","src":"22282:69:24","statements":[{"expression":{"id":6874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6872,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22300:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":6873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22307:2:24","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22300:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6875,"nodeType":"ExpressionStatement","src":"22300:9:24"},{"expression":{"id":6878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6876,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"22327:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":6877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22334:2:24","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22327:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6879,"nodeType":"ExpressionStatement","src":"22327:9:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6882,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22368:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":6885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22375:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":6884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22380:2:24","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22375:7:24","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":6886,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22374:9:24","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22368:15:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6897,"nodeType":"IfStatement","src":"22364:89:24","trueBody":{"id":6896,"nodeType":"Block","src":"22385:68:24","statements":[{"expression":{"id":6890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6888,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22403:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":6889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22410:2:24","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22403:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6891,"nodeType":"ExpressionStatement","src":"22403:9:24"},{"expression":{"id":6894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6892,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"22430:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":6893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22437:1:24","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22430:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6895,"nodeType":"ExpressionStatement","src":"22430:8:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6898,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22470:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":6901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22477:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":6900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22482:1:24","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22477:6:24","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":6902,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22476:8:24","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22470:14:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6913,"nodeType":"IfStatement","src":"22466:87:24","trueBody":{"id":6912,"nodeType":"Block","src":"22486:67:24","statements":[{"expression":{"id":6906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6904,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22504:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":6905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22511:1:24","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22504:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6907,"nodeType":"ExpressionStatement","src":"22504:8:24"},{"expression":{"id":6910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6908,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"22530:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":6909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22537:1:24","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22530:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6911,"nodeType":"ExpressionStatement","src":"22530:8:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6914,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22570:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":6917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22577:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":6916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22582:1:24","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22577:6:24","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":6918,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22576:8:24","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22570:14:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6929,"nodeType":"IfStatement","src":"22566:87:24","trueBody":{"id":6928,"nodeType":"Block","src":"22586:67:24","statements":[{"expression":{"id":6922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6920,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22604:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":6921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22611:1:24","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22604:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6923,"nodeType":"ExpressionStatement","src":"22604:8:24"},{"expression":{"id":6926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6924,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"22630:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":6925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22637:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22630:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6927,"nodeType":"ExpressionStatement","src":"22630:8:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6930,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"22670:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":6933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22677:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":6932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22682:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22677:6:24","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":6934,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22676:8:24","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22670:14:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6941,"nodeType":"IfStatement","src":"22666:61:24","trueBody":{"id":6940,"nodeType":"Block","src":"22686:41:24","statements":[{"expression":{"id":6938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6936,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"22704:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":6937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22711:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22704:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6939,"nodeType":"ExpressionStatement","src":"22704:8:24"}]}},{"expression":{"id":6949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6942,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"23147:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":6943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23153:1:24","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6944,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"23157:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23153:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6946,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23152:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":6947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23164:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23152:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23147:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6950,"nodeType":"ExpressionStatement","src":"23147:18:24"},{"expression":{"id":6960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6951,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25052:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6952,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25058:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6953,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"25063:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6954,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25067:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25063:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25058:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6957,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25057:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":6958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25074:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25057:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25052:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6961,"nodeType":"ExpressionStatement","src":"25052:23:24"},{"expression":{"id":6971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6962,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25161:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6963,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25167:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6964,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"25172:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6965,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25176:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25172:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25167:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6968,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25166:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":6969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25183:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25166:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25161:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6972,"nodeType":"ExpressionStatement","src":"25161:23:24"},{"expression":{"id":6982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6973,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25272:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6974,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25278:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6975,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"25283:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6976,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25287:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25283:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25278:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25277:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":6980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25294:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25277:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25272:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6983,"nodeType":"ExpressionStatement","src":"25272:23:24"},{"expression":{"id":6993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6984,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25381:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6985,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25387:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6986,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"25392:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6987,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25396:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25392:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25387:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6990,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25386:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":6991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25403:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25386:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25381:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6994,"nodeType":"ExpressionStatement","src":"25381:23:24"},{"expression":{"id":7004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6995,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25491:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6996,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25497:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6997,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"25502:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6998,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25506:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25502:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25497:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7001,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25496:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25513:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25496:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25491:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7005,"nodeType":"ExpressionStatement","src":"25491:23:24"},{"expression":{"id":7015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7006,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25601:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7007,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25607:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7008,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"25612:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7009,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25616:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25612:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25607:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7012,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25606:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25623:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25606:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25601:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7016,"nodeType":"ExpressionStatement","src":"25601:23:24"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7017,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"25990:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7020,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"26011:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7021,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"26016:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7022,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"26020:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26016:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26011:11:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7018,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"25995:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26004:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"25995:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25995:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25990:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6818,"id":7027,"nodeType":"Return","src":"25983:40:24"}]}]},"documentation":{"id":6812,"nodeType":"StructuredDocumentation","src":"20562:292:24","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."},"id":7030,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20868:4:24","nodeType":"FunctionDefinition","parameters":{"id":6815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6814,"mutability":"mutable","name":"a","nameLocation":"20881:1:24","nodeType":"VariableDeclaration","scope":7030,"src":"20873:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6813,"name":"uint256","nodeType":"ElementaryTypeName","src":"20873:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20872:11:24"},"returnParameters":{"id":6818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7030,"src":"20907:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6816,"name":"uint256","nodeType":"ElementaryTypeName","src":"20907:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20906:9:24"},"scope":7507,"src":"20859:5181:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7063,"nodeType":"Block","src":"26213:171:24","statements":[{"id":7062,"nodeType":"UncheckedBlock","src":"26223:155:24","statements":[{"assignments":[7042],"declarations":[{"constant":false,"id":7042,"mutability":"mutable","name":"result","nameLocation":"26255:6:24","nodeType":"VariableDeclaration","scope":7062,"src":"26247:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7041,"name":"uint256","nodeType":"ElementaryTypeName","src":"26247:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7046,"initialValue":{"arguments":[{"id":7044,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7033,"src":"26269:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7043,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[7030,7064],"referencedDeclaration":7030,"src":"26264:4:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26264:7:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26247:24:24"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7047,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7042,"src":"26292:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7051,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"26334:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}],"id":7050,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"26317:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$5862_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":7052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26317:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7053,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7042,"src":"26347:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7054,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7042,"src":"26356:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26347:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7056,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7033,"src":"26365:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26347:19:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26317:49:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7048,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"26301:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26310:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"26301:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26301:66:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26292:75:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7040,"id":7061,"nodeType":"Return","src":"26285:82:24"}]}]},"documentation":{"id":7031,"nodeType":"StructuredDocumentation","src":"26046:86:24","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":7064,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"26146:4:24","nodeType":"FunctionDefinition","parameters":{"id":7037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7033,"mutability":"mutable","name":"a","nameLocation":"26159:1:24","nodeType":"VariableDeclaration","scope":7064,"src":"26151:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7032,"name":"uint256","nodeType":"ElementaryTypeName","src":"26151:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7036,"mutability":"mutable","name":"rounding","nameLocation":"26171:8:24","nodeType":"VariableDeclaration","scope":7064,"src":"26162:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"},"typeName":{"id":7035,"nodeType":"UserDefinedTypeName","pathNode":{"id":7034,"name":"Rounding","nameLocations":["26162:8:24"],"nodeType":"IdentifierPath","referencedDeclaration":5862,"src":"26162:8:24"},"referencedDeclaration":5862,"src":"26162:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"26150:30:24"},"returnParameters":{"id":7040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7064,"src":"26204:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7038,"name":"uint256","nodeType":"ElementaryTypeName","src":"26204:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26203:9:24"},"scope":7507,"src":"26137:247:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7154,"nodeType":"Block","src":"26573:2359:24","statements":[{"expression":{"id":7081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7072,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"26655:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7075,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7067,"src":"26675:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":7076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26679:34:24","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26675:38:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7073,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"26659:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26668:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"26659:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26659:55:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":7079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26718:1:24","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26659:60:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26655:64:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7082,"nodeType":"ExpressionStatement","src":"26655:64:24"},{"expression":{"id":7095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7083,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"26795:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7086,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7067,"src":"26817:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7087,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"26822:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26817:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7089,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26816:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":7090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26827:18:24","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26816:29:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7084,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"26800:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26809:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"26800:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26800:46:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":7093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26850:1:24","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26800:51:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26795:56:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7096,"nodeType":"ExpressionStatement","src":"26795:56:24"},{"expression":{"id":7109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7097,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"26926:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7100,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7067,"src":"26948:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7101,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"26953:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26948:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7103,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26947:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":7104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26958:10:24","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26947:21:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7098,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"26931:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26940:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"26931:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26931:38:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":7107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26973:1:24","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26931:43:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26926:48:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7110,"nodeType":"ExpressionStatement","src":"26926:48:24"},{"expression":{"id":7123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7111,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"27049:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7114,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7067,"src":"27071:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7115,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"27076:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27071:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7117,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27070:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":7118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27081:6:24","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"27070:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7112,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"27054:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27063:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"27054:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27054:34:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":7121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27092:1:24","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"27054:39:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27049:44:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7124,"nodeType":"ExpressionStatement","src":"27049:44:24"},{"expression":{"id":7137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7125,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"27166:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7128,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7067,"src":"27188:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7129,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"27193:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27188:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7131,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27187:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":7132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27198:4:24","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"27187:15:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7126,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"27171:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27180:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"27171:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27171:32:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":7135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27207:1:24","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"27171:37:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27166:42:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7138,"nodeType":"ExpressionStatement","src":"27166:42:24"},{"expression":{"id":7151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7139,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"27280:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7142,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7067,"src":"27302:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7143,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"27307:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27302:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7145,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27301:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":7146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27312:3:24","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27301:14:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7140,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"27285:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27294:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"27285:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27285:31:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":7149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27320:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"27285:36:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27280:41:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7152,"nodeType":"ExpressionStatement","src":"27280:41:24"},{"AST":{"nativeSrc":"28807:119:24","nodeType":"YulBlock","src":"28807:119:24","statements":[{"nativeSrc":"28821:95:24","nodeType":"YulAssignment","src":"28821:95:24","value":{"arguments":[{"name":"r","nativeSrc":"28829:1:24","nodeType":"YulIdentifier","src":"28829:1:24"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28841:1:24","nodeType":"YulIdentifier","src":"28841:1:24"},{"name":"x","nativeSrc":"28844:1:24","nodeType":"YulIdentifier","src":"28844:1:24"}],"functionName":{"name":"shr","nativeSrc":"28837:3:24","nodeType":"YulIdentifier","src":"28837:3:24"},"nativeSrc":"28837:9:24","nodeType":"YulFunctionCall","src":"28837:9:24"},{"kind":"number","nativeSrc":"28848:66:24","nodeType":"YulLiteral","src":"28848:66:24","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28832:4:24","nodeType":"YulIdentifier","src":"28832:4:24"},"nativeSrc":"28832:83:24","nodeType":"YulFunctionCall","src":"28832:83:24"}],"functionName":{"name":"or","nativeSrc":"28826:2:24","nodeType":"YulIdentifier","src":"28826:2:24"},"nativeSrc":"28826:90:24","nodeType":"YulFunctionCall","src":"28826:90:24"},"variableNames":[{"name":"r","nativeSrc":"28821:1:24","nodeType":"YulIdentifier","src":"28821:1:24"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7070,"isOffset":false,"isSlot":false,"src":"28821:1:24","valueSize":1},{"declaration":7070,"isOffset":false,"isSlot":false,"src":"28829:1:24","valueSize":1},{"declaration":7070,"isOffset":false,"isSlot":false,"src":"28841:1:24","valueSize":1},{"declaration":7067,"isOffset":false,"isSlot":false,"src":"28844:1:24","valueSize":1}],"flags":["memory-safe"],"id":7153,"nodeType":"InlineAssembly","src":"28782:144:24"}]},"documentation":{"id":7065,"nodeType":"StructuredDocumentation","src":"26390:119:24","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":7155,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26523:4:24","nodeType":"FunctionDefinition","parameters":{"id":7068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7067,"mutability":"mutable","name":"x","nameLocation":"26536:1:24","nodeType":"VariableDeclaration","scope":7155,"src":"26528:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7066,"name":"uint256","nodeType":"ElementaryTypeName","src":"26528:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26527:11:24"},"returnParameters":{"id":7071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7070,"mutability":"mutable","name":"r","nameLocation":"26570:1:24","nodeType":"VariableDeclaration","scope":7155,"src":"26562:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7069,"name":"uint256","nodeType":"ElementaryTypeName","src":"26562:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26561:11:24"},"scope":7507,"src":"26514:2418:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7188,"nodeType":"Block","src":"29165:175:24","statements":[{"id":7187,"nodeType":"UncheckedBlock","src":"29175:159:24","statements":[{"assignments":[7167],"declarations":[{"constant":false,"id":7167,"mutability":"mutable","name":"result","nameLocation":"29207:6:24","nodeType":"VariableDeclaration","scope":7187,"src":"29199:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7166,"name":"uint256","nodeType":"ElementaryTypeName","src":"29199:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7171,"initialValue":{"arguments":[{"id":7169,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7158,"src":"29221:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7168,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[7155,7189],"referencedDeclaration":7155,"src":"29216:4:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29216:11:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29199:28:24"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7172,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"29248:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7176,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7161,"src":"29290:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}],"id":7175,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"29273:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$5862_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":7177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29273:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29303:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":7179,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"29308:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29303:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7181,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7158,"src":"29317:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29303:19:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"29273:49:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7173,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"29257:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29266:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"29257:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29257:66:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29248:75:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7165,"id":7186,"nodeType":"Return","src":"29241:82:24"}]}]},"documentation":{"id":7156,"nodeType":"StructuredDocumentation","src":"28938:142:24","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":7189,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"29094:4:24","nodeType":"FunctionDefinition","parameters":{"id":7162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7158,"mutability":"mutable","name":"value","nameLocation":"29107:5:24","nodeType":"VariableDeclaration","scope":7189,"src":"29099:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7157,"name":"uint256","nodeType":"ElementaryTypeName","src":"29099:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7161,"mutability":"mutable","name":"rounding","nameLocation":"29123:8:24","nodeType":"VariableDeclaration","scope":7189,"src":"29114:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"},"typeName":{"id":7160,"nodeType":"UserDefinedTypeName","pathNode":{"id":7159,"name":"Rounding","nameLocations":["29114:8:24"],"nodeType":"IdentifierPath","referencedDeclaration":5862,"src":"29114:8:24"},"referencedDeclaration":5862,"src":"29114:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"29098:34:24"},"returnParameters":{"id":7165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7189,"src":"29156:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7163,"name":"uint256","nodeType":"ElementaryTypeName","src":"29156:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29155:9:24"},"scope":7507,"src":"29085:255:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7317,"nodeType":"Block","src":"29533:854:24","statements":[{"assignments":[7198],"declarations":[{"constant":false,"id":7198,"mutability":"mutable","name":"result","nameLocation":"29551:6:24","nodeType":"VariableDeclaration","scope":7317,"src":"29543:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7197,"name":"uint256","nodeType":"ElementaryTypeName","src":"29543:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7200,"initialValue":{"hexValue":"30","id":7199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29560:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29543:18:24"},{"id":7314,"nodeType":"UncheckedBlock","src":"29571:787:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7201,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"29599:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":7204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29608:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":7203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29614:2:24","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29608:8:24","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29599:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7217,"nodeType":"IfStatement","src":"29595:103:24","trueBody":{"id":7216,"nodeType":"Block","src":"29618:80:24","statements":[{"expression":{"id":7210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"29636:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":7209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29645:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":7208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29651:2:24","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29645:8:24","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29636:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7211,"nodeType":"ExpressionStatement","src":"29636:17:24"},{"expression":{"id":7214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7212,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"29671:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":7213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29681:2:24","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29671:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7215,"nodeType":"ExpressionStatement","src":"29671:12:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7218,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"29715:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":7221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29724:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":7220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29730:2:24","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29724:8:24","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29715:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7234,"nodeType":"IfStatement","src":"29711:103:24","trueBody":{"id":7233,"nodeType":"Block","src":"29734:80:24","statements":[{"expression":{"id":7227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7223,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"29752:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":7226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29761:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":7225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29767:2:24","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29761:8:24","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29752:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7228,"nodeType":"ExpressionStatement","src":"29752:17:24"},{"expression":{"id":7231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7229,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"29787:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":7230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29797:2:24","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29787:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7232,"nodeType":"ExpressionStatement","src":"29787:12:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7235,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"29831:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":7238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29840:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":7237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29846:2:24","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29840:8:24","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29831:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7251,"nodeType":"IfStatement","src":"29827:103:24","trueBody":{"id":7250,"nodeType":"Block","src":"29850:80:24","statements":[{"expression":{"id":7244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7240,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"29868:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":7243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29877:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":7242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29883:2:24","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29877:8:24","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29868:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7245,"nodeType":"ExpressionStatement","src":"29868:17:24"},{"expression":{"id":7248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7246,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"29903:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":7247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29913:2:24","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29903:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7249,"nodeType":"ExpressionStatement","src":"29903:12:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7252,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"29947:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":7255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29956:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":7254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29962:1:24","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29956:7:24","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29947:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7268,"nodeType":"IfStatement","src":"29943:100:24","trueBody":{"id":7267,"nodeType":"Block","src":"29965:78:24","statements":[{"expression":{"id":7261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7257,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"29983:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":7260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29992:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":7259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29998:1:24","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29992:7:24","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29983:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7262,"nodeType":"ExpressionStatement","src":"29983:16:24"},{"expression":{"id":7265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7263,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"30017:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":7264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30027:1:24","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"30017:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7266,"nodeType":"ExpressionStatement","src":"30017:11:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7269,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"30060:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":7272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30069:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":7271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30075:1:24","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30069:7:24","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"30060:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7285,"nodeType":"IfStatement","src":"30056:100:24","trueBody":{"id":7284,"nodeType":"Block","src":"30078:78:24","statements":[{"expression":{"id":7278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7274,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"30096:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":7277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30105:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":7276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30111:1:24","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30105:7:24","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"30096:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7279,"nodeType":"ExpressionStatement","src":"30096:16:24"},{"expression":{"id":7282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7280,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"30130:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":7281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30140:1:24","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30130:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7283,"nodeType":"ExpressionStatement","src":"30130:11:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7286,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"30173:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":7289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30182:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":7288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30188:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"30182:7:24","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"30173:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7302,"nodeType":"IfStatement","src":"30169:100:24","trueBody":{"id":7301,"nodeType":"Block","src":"30191:78:24","statements":[{"expression":{"id":7295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7291,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"30209:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":7294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30218:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":7293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30224:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"30218:7:24","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"30209:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7296,"nodeType":"ExpressionStatement","src":"30209:16:24"},{"expression":{"id":7299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7297,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"30243:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":7298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30253:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"30243:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7300,"nodeType":"ExpressionStatement","src":"30243:11:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7303,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7192,"src":"30286:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":7306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30295:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":7305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30301:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30295:7:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"30286:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7313,"nodeType":"IfStatement","src":"30282:66:24","trueBody":{"id":7312,"nodeType":"Block","src":"30304:44:24","statements":[{"expression":{"id":7310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7308,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"30322:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":7309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30332:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30322:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7311,"nodeType":"ExpressionStatement","src":"30322:11:24"}]}}]},{"expression":{"id":7315,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7198,"src":"30374:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7196,"id":7316,"nodeType":"Return","src":"30367:13:24"}]},"documentation":{"id":7190,"nodeType":"StructuredDocumentation","src":"29346:120:24","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":7318,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29480:5:24","nodeType":"FunctionDefinition","parameters":{"id":7193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7192,"mutability":"mutable","name":"value","nameLocation":"29494:5:24","nodeType":"VariableDeclaration","scope":7318,"src":"29486:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7191,"name":"uint256","nodeType":"ElementaryTypeName","src":"29486:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29485:15:24"},"returnParameters":{"id":7196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7318,"src":"29524:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7194,"name":"uint256","nodeType":"ElementaryTypeName","src":"29524:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29523:9:24"},"scope":7507,"src":"29471:916:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7351,"nodeType":"Block","src":"30622:177:24","statements":[{"id":7350,"nodeType":"UncheckedBlock","src":"30632:161:24","statements":[{"assignments":[7330],"declarations":[{"constant":false,"id":7330,"mutability":"mutable","name":"result","nameLocation":"30664:6:24","nodeType":"VariableDeclaration","scope":7350,"src":"30656:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7329,"name":"uint256","nodeType":"ElementaryTypeName","src":"30656:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7334,"initialValue":{"arguments":[{"id":7332,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7321,"src":"30679:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7331,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[7318,7352],"referencedDeclaration":7318,"src":"30673:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30673:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30656:29:24"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7335,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7330,"src":"30706:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7339,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7324,"src":"30748:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}],"id":7338,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"30731:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$5862_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":7340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30731:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30761:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":7342,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7330,"src":"30767:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30761:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7344,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7321,"src":"30776:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30761:20:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30731:50:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7336,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"30715:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30724:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"30715:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30715:67:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30706:76:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7328,"id":7349,"nodeType":"Return","src":"30699:83:24"}]}]},"documentation":{"id":7319,"nodeType":"StructuredDocumentation","src":"30393:143:24","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":7352,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30550:5:24","nodeType":"FunctionDefinition","parameters":{"id":7325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7321,"mutability":"mutable","name":"value","nameLocation":"30564:5:24","nodeType":"VariableDeclaration","scope":7352,"src":"30556:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7320,"name":"uint256","nodeType":"ElementaryTypeName","src":"30556:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7324,"mutability":"mutable","name":"rounding","nameLocation":"30580:8:24","nodeType":"VariableDeclaration","scope":7352,"src":"30571:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"},"typeName":{"id":7323,"nodeType":"UserDefinedTypeName","pathNode":{"id":7322,"name":"Rounding","nameLocations":["30571:8:24"],"nodeType":"IdentifierPath","referencedDeclaration":5862,"src":"30571:8:24"},"referencedDeclaration":5862,"src":"30571:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30555:34:24"},"returnParameters":{"id":7328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7352,"src":"30613:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7326,"name":"uint256","nodeType":"ElementaryTypeName","src":"30613:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30612:9:24"},"scope":7507,"src":"30541:258:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7428,"nodeType":"Block","src":"31117:675:24","statements":[{"expression":{"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7360,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7358,"src":"31199:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7363,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7355,"src":"31219:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":7364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31223:34:24","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"31219:38:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7361,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"31203:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31212:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"31203:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31203:55:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":7367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31262:1:24","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"31203:60:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31199:64:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7370,"nodeType":"ExpressionStatement","src":"31199:64:24"},{"expression":{"id":7383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7371,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7358,"src":"31339:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7374,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7355,"src":"31361:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7375,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7358,"src":"31366:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31361:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7377,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31360:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":7378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31371:18:24","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31360:29:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7372,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"31344:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31353:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"31344:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31344:46:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":7381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31394:1:24","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31344:51:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31339:56:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7384,"nodeType":"ExpressionStatement","src":"31339:56:24"},{"expression":{"id":7397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7385,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7358,"src":"31470:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7388,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7355,"src":"31492:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7389,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7358,"src":"31497:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31492:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7391,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31491:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":7392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31502:10:24","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31491:21:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7386,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"31475:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31484:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"31475:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31475:38:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":7395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31517:1:24","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31475:43:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31470:48:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7398,"nodeType":"ExpressionStatement","src":"31470:48:24"},{"expression":{"id":7411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7399,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7358,"src":"31593:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7402,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7355,"src":"31615:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7403,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7358,"src":"31620:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31615:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7405,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31614:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":7406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31625:6:24","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31614:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7400,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"31598:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31607:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"31598:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31598:34:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":7409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31636:1:24","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31598:39:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31593:44:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7412,"nodeType":"ExpressionStatement","src":"31593:44:24"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7413,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7358,"src":"31743:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":7414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31748:1:24","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31743:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7416,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31742:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7419,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7355,"src":"31770:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7420,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7358,"src":"31775:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31770:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7422,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31769:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":7423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31780:4:24","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31769:15:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7417,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"31753:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31762:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"31753:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31753:32:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31742:43:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7359,"id":7427,"nodeType":"Return","src":"31735:50:24"}]},"documentation":{"id":7353,"nodeType":"StructuredDocumentation","src":"30805:246:24","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":7429,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31065:6:24","nodeType":"FunctionDefinition","parameters":{"id":7356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7355,"mutability":"mutable","name":"x","nameLocation":"31080:1:24","nodeType":"VariableDeclaration","scope":7429,"src":"31072:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7354,"name":"uint256","nodeType":"ElementaryTypeName","src":"31072:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31071:11:24"},"returnParameters":{"id":7359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7358,"mutability":"mutable","name":"r","nameLocation":"31114:1:24","nodeType":"VariableDeclaration","scope":7429,"src":"31106:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7357,"name":"uint256","nodeType":"ElementaryTypeName","src":"31106:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31105:11:24"},"scope":7507,"src":"31056:736:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7465,"nodeType":"Block","src":"32029:184:24","statements":[{"id":7464,"nodeType":"UncheckedBlock","src":"32039:168:24","statements":[{"assignments":[7441],"declarations":[{"constant":false,"id":7441,"mutability":"mutable","name":"result","nameLocation":"32071:6:24","nodeType":"VariableDeclaration","scope":7464,"src":"32063:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7440,"name":"uint256","nodeType":"ElementaryTypeName","src":"32063:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7445,"initialValue":{"arguments":[{"id":7443,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7432,"src":"32087:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7442,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[7429,7466],"referencedDeclaration":7429,"src":"32080:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32080:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32063:30:24"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7446,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7441,"src":"32114:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7450,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7435,"src":"32156:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}],"id":7449,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"32139:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$5862_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":7451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32139:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32169:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7453,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7441,"src":"32175:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":7454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32185:1:24","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"32175:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7456,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"32174:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32169:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7458,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7432,"src":"32190:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32169:26:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"32139:56:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7447,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"32123:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":7448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32132:6:24","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"32123:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32123:73:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32114:82:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7439,"id":7463,"nodeType":"Return","src":"32107:89:24"}]}]},"documentation":{"id":7430,"nodeType":"StructuredDocumentation","src":"31798:144:24","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":7466,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31956:6:24","nodeType":"FunctionDefinition","parameters":{"id":7436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7432,"mutability":"mutable","name":"value","nameLocation":"31971:5:24","nodeType":"VariableDeclaration","scope":7466,"src":"31963:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7431,"name":"uint256","nodeType":"ElementaryTypeName","src":"31963:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7435,"mutability":"mutable","name":"rounding","nameLocation":"31987:8:24","nodeType":"VariableDeclaration","scope":7466,"src":"31978:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"},"typeName":{"id":7434,"nodeType":"UserDefinedTypeName","pathNode":{"id":7433,"name":"Rounding","nameLocations":["31978:8:24"],"nodeType":"IdentifierPath","referencedDeclaration":5862,"src":"31978:8:24"},"referencedDeclaration":5862,"src":"31978:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31962:34:24"},"returnParameters":{"id":7439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7466,"src":"32020:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7437,"name":"uint256","nodeType":"ElementaryTypeName","src":"32020:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32019:9:24"},"scope":7507,"src":"31947:266:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7484,"nodeType":"Block","src":"32411:48:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7477,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7470,"src":"32434:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}],"id":7476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32428:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":7475,"name":"uint8","nodeType":"ElementaryTypeName","src":"32428:5:24","typeDescriptions":{}}},"id":7478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32428:15:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":7479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32446:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32428:19:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":7481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32451:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32428:24:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7474,"id":7483,"nodeType":"Return","src":"32421:31:24"}]},"documentation":{"id":7467,"nodeType":"StructuredDocumentation","src":"32219:113:24","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":7485,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32346:16:24","nodeType":"FunctionDefinition","parameters":{"id":7471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7470,"mutability":"mutable","name":"rounding","nameLocation":"32372:8:24","nodeType":"VariableDeclaration","scope":7485,"src":"32363:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"},"typeName":{"id":7469,"nodeType":"UserDefinedTypeName","pathNode":{"id":7468,"name":"Rounding","nameLocations":["32363:8:24"],"nodeType":"IdentifierPath","referencedDeclaration":5862,"src":"32363:8:24"},"referencedDeclaration":5862,"src":"32363:8:24","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$5862","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32362:19:24"},"returnParameters":{"id":7474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7473,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7485,"src":"32405:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7472,"name":"bool","nodeType":"ElementaryTypeName","src":"32405:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32404:6:24"},"scope":7507,"src":"32337:122:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7505,"nodeType":"Block","src":"32602:59:24","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7494,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"32627:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32632:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"32627:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"323536","id":7497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32635:3:24","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323535","id":7498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32640:3:24","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":7500,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"32651:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7499,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[7155,7189],"referencedDeclaration":7155,"src":"32646:4:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32646:7:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32640:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7493,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6139,"src":"32619:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":7503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32619:35:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7492,"id":7504,"nodeType":"Return","src":"32612:42:24"}]},"documentation":{"id":7486,"nodeType":"StructuredDocumentation","src":"32465:76:24","text":" @dev Counts the number of leading zero bits in a uint256."},"id":7506,"implemented":true,"kind":"function","modifiers":[],"name":"clz","nameLocation":"32555:3:24","nodeType":"FunctionDefinition","parameters":{"id":7489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7488,"mutability":"mutable","name":"x","nameLocation":"32567:1:24","nodeType":"VariableDeclaration","scope":7506,"src":"32559:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7487,"name":"uint256","nodeType":"ElementaryTypeName","src":"32559:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32558:11:24"},"returnParameters":{"id":7492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7506,"src":"32593:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7490,"name":"uint256","nodeType":"ElementaryTypeName","src":"32593:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32592:9:24"},"scope":7507,"src":"32546:115:24","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7508,"src":"281:32382:24","usedErrors":[],"usedEvents":[]}],"src":"103:32561:24"},"id":24},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[9272]},"id":9273,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7509,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:25"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":7510,"nodeType":"StructuredDocumentation","src":"218:550:25","text":" @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":9272,"linearizedBaseContracts":[9272],"name":"SafeCast","nameLocation":"777:8:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7511,"nodeType":"StructuredDocumentation","src":"792:67:25","text":" @dev Value doesn't fit in a uint of `bits` size."},"errorSelector":"6dfcc650","id":7517,"name":"SafeCastOverflowedUintDowncast","nameLocation":"870:30:25","nodeType":"ErrorDefinition","parameters":{"id":7516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7513,"mutability":"mutable","name":"bits","nameLocation":"907:4:25","nodeType":"VariableDeclaration","scope":7517,"src":"901:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7512,"name":"uint8","nodeType":"ElementaryTypeName","src":"901:5:25","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7515,"mutability":"mutable","name":"value","nameLocation":"921:5:25","nodeType":"VariableDeclaration","scope":7517,"src":"913:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7514,"name":"uint256","nodeType":"ElementaryTypeName","src":"913:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"900:27:25"},"src":"864:64:25"},{"documentation":{"id":7518,"nodeType":"StructuredDocumentation","src":"934:74:25","text":" @dev An int value doesn't fit in a uint of `bits` size."},"errorSelector":"a8ce4432","id":7522,"name":"SafeCastOverflowedIntToUint","nameLocation":"1019:27:25","nodeType":"ErrorDefinition","parameters":{"id":7521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7520,"mutability":"mutable","name":"value","nameLocation":"1054:5:25","nodeType":"VariableDeclaration","scope":7522,"src":"1047:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7519,"name":"int256","nodeType":"ElementaryTypeName","src":"1047:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1046:14:25"},"src":"1013:48:25"},{"documentation":{"id":7523,"nodeType":"StructuredDocumentation","src":"1067:67:25","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":7529,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1145:29:25","nodeType":"ErrorDefinition","parameters":{"id":7528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7525,"mutability":"mutable","name":"bits","nameLocation":"1181:4:25","nodeType":"VariableDeclaration","scope":7529,"src":"1175:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7524,"name":"uint8","nodeType":"ElementaryTypeName","src":"1175:5:25","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7527,"mutability":"mutable","name":"value","nameLocation":"1194:5:25","nodeType":"VariableDeclaration","scope":7529,"src":"1187:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7526,"name":"int256","nodeType":"ElementaryTypeName","src":"1187:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1174:26:25"},"src":"1139:62:25"},{"documentation":{"id":7530,"nodeType":"StructuredDocumentation","src":"1207:74:25","text":" @dev A uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":7534,"name":"SafeCastOverflowedUintToInt","nameLocation":"1292:27:25","nodeType":"ErrorDefinition","parameters":{"id":7533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7532,"mutability":"mutable","name":"value","nameLocation":"1328:5:25","nodeType":"VariableDeclaration","scope":7534,"src":"1320:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7531,"name":"uint256","nodeType":"ElementaryTypeName","src":"1320:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1319:15:25"},"src":"1286:49:25"},{"body":{"id":7561,"nodeType":"Block","src":"1692:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7542,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7537,"src":"1706:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1719:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":7544,"name":"uint248","nodeType":"ElementaryTypeName","src":"1719:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":7543,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1714:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1714:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":7547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1728:3:25","memberName":"max","nodeType":"MemberAccess","src":"1714:17:25","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1706:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7555,"nodeType":"IfStatement","src":"1702:105:25","trueBody":{"id":7554,"nodeType":"Block","src":"1733:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":7550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1785:3:25","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":7551,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7537,"src":"1790:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7549,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"1754:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1754:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7553,"nodeType":"RevertStatement","src":"1747:49:25"}]}},{"expression":{"arguments":[{"id":7558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7537,"src":"1831:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1823:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":7556,"name":"uint248","nodeType":"ElementaryTypeName","src":"1823:7:25","typeDescriptions":{}}},"id":7559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1823:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":7541,"id":7560,"nodeType":"Return","src":"1816:21:25"}]},"documentation":{"id":7535,"nodeType":"StructuredDocumentation","src":"1341:280:25","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":7562,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1635:9:25","nodeType":"FunctionDefinition","parameters":{"id":7538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7537,"mutability":"mutable","name":"value","nameLocation":"1653:5:25","nodeType":"VariableDeclaration","scope":7562,"src":"1645:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7536,"name":"uint256","nodeType":"ElementaryTypeName","src":"1645:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1644:15:25"},"returnParameters":{"id":7541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7540,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7562,"src":"1683:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":7539,"name":"uint248","nodeType":"ElementaryTypeName","src":"1683:7:25","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1682:9:25"},"scope":9272,"src":"1626:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7589,"nodeType":"Block","src":"2201:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7570,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"2215:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2228:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":7572,"name":"uint240","nodeType":"ElementaryTypeName","src":"2228:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":7571,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2223:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2223:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":7575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2237:3:25","memberName":"max","nodeType":"MemberAccess","src":"2223:17:25","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2215:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7583,"nodeType":"IfStatement","src":"2211:105:25","trueBody":{"id":7582,"nodeType":"Block","src":"2242:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":7578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2294:3:25","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":7579,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"2299:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7577,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"2263:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7581,"nodeType":"RevertStatement","src":"2256:49:25"}]}},{"expression":{"arguments":[{"id":7586,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"2340:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2332:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":7584,"name":"uint240","nodeType":"ElementaryTypeName","src":"2332:7:25","typeDescriptions":{}}},"id":7587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2332:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":7569,"id":7588,"nodeType":"Return","src":"2325:21:25"}]},"documentation":{"id":7563,"nodeType":"StructuredDocumentation","src":"1850:280:25","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":7590,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2144:9:25","nodeType":"FunctionDefinition","parameters":{"id":7566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7565,"mutability":"mutable","name":"value","nameLocation":"2162:5:25","nodeType":"VariableDeclaration","scope":7590,"src":"2154:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7564,"name":"uint256","nodeType":"ElementaryTypeName","src":"2154:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2153:15:25"},"returnParameters":{"id":7569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7568,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7590,"src":"2192:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":7567,"name":"uint240","nodeType":"ElementaryTypeName","src":"2192:7:25","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2191:9:25"},"scope":9272,"src":"2135:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7617,"nodeType":"Block","src":"2710:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7598,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7593,"src":"2724:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2737:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":7600,"name":"uint232","nodeType":"ElementaryTypeName","src":"2737:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":7599,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2732:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2732:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":7603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2746:3:25","memberName":"max","nodeType":"MemberAccess","src":"2732:17:25","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2724:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7611,"nodeType":"IfStatement","src":"2720:105:25","trueBody":{"id":7610,"nodeType":"Block","src":"2751:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":7606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2803:3:25","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":7607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7593,"src":"2808:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7605,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"2772:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7609,"nodeType":"RevertStatement","src":"2765:49:25"}]}},{"expression":{"arguments":[{"id":7614,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7593,"src":"2849:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2841:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":7612,"name":"uint232","nodeType":"ElementaryTypeName","src":"2841:7:25","typeDescriptions":{}}},"id":7615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2841:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":7597,"id":7616,"nodeType":"Return","src":"2834:21:25"}]},"documentation":{"id":7591,"nodeType":"StructuredDocumentation","src":"2359:280:25","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":7618,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2653:9:25","nodeType":"FunctionDefinition","parameters":{"id":7594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7593,"mutability":"mutable","name":"value","nameLocation":"2671:5:25","nodeType":"VariableDeclaration","scope":7618,"src":"2663:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7592,"name":"uint256","nodeType":"ElementaryTypeName","src":"2663:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2662:15:25"},"returnParameters":{"id":7597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7596,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7618,"src":"2701:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":7595,"name":"uint232","nodeType":"ElementaryTypeName","src":"2701:7:25","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2700:9:25"},"scope":9272,"src":"2644:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7645,"nodeType":"Block","src":"3219:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7626,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7621,"src":"3233:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3246:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7628,"name":"uint224","nodeType":"ElementaryTypeName","src":"3246:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":7627,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3241:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3241:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":7631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3255:3:25","memberName":"max","nodeType":"MemberAccess","src":"3241:17:25","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3233:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7639,"nodeType":"IfStatement","src":"3229:105:25","trueBody":{"id":7638,"nodeType":"Block","src":"3260:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":7634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3312:3:25","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":7635,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7621,"src":"3317:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7633,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"3281:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3281:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7637,"nodeType":"RevertStatement","src":"3274:49:25"}]}},{"expression":{"arguments":[{"id":7642,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7621,"src":"3358:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3350:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7640,"name":"uint224","nodeType":"ElementaryTypeName","src":"3350:7:25","typeDescriptions":{}}},"id":7643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3350:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":7625,"id":7644,"nodeType":"Return","src":"3343:21:25"}]},"documentation":{"id":7619,"nodeType":"StructuredDocumentation","src":"2868:280:25","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":7646,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3162:9:25","nodeType":"FunctionDefinition","parameters":{"id":7622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7621,"mutability":"mutable","name":"value","nameLocation":"3180:5:25","nodeType":"VariableDeclaration","scope":7646,"src":"3172:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7620,"name":"uint256","nodeType":"ElementaryTypeName","src":"3172:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3171:15:25"},"returnParameters":{"id":7625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7624,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7646,"src":"3210:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":7623,"name":"uint224","nodeType":"ElementaryTypeName","src":"3210:7:25","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3209:9:25"},"scope":9272,"src":"3153:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7673,"nodeType":"Block","src":"3728:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7654,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7649,"src":"3742:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3755:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":7656,"name":"uint216","nodeType":"ElementaryTypeName","src":"3755:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":7655,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3750:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3750:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":7659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3764:3:25","memberName":"max","nodeType":"MemberAccess","src":"3750:17:25","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3742:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7667,"nodeType":"IfStatement","src":"3738:105:25","trueBody":{"id":7666,"nodeType":"Block","src":"3769:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":7662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3821:3:25","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":7663,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7649,"src":"3826:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7661,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"3790:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3790:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7665,"nodeType":"RevertStatement","src":"3783:49:25"}]}},{"expression":{"arguments":[{"id":7670,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7649,"src":"3867:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3859:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":7668,"name":"uint216","nodeType":"ElementaryTypeName","src":"3859:7:25","typeDescriptions":{}}},"id":7671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":7653,"id":7672,"nodeType":"Return","src":"3852:21:25"}]},"documentation":{"id":7647,"nodeType":"StructuredDocumentation","src":"3377:280:25","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":7674,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3671:9:25","nodeType":"FunctionDefinition","parameters":{"id":7650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7649,"mutability":"mutable","name":"value","nameLocation":"3689:5:25","nodeType":"VariableDeclaration","scope":7674,"src":"3681:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7648,"name":"uint256","nodeType":"ElementaryTypeName","src":"3681:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3680:15:25"},"returnParameters":{"id":7653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7674,"src":"3719:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":7651,"name":"uint216","nodeType":"ElementaryTypeName","src":"3719:7:25","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3718:9:25"},"scope":9272,"src":"3662:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7701,"nodeType":"Block","src":"4237:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7682,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"4251:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4264:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":7684,"name":"uint208","nodeType":"ElementaryTypeName","src":"4264:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":7683,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"4259:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4259:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":7687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4273:3:25","memberName":"max","nodeType":"MemberAccess","src":"4259:17:25","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4251:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7695,"nodeType":"IfStatement","src":"4247:105:25","trueBody":{"id":7694,"nodeType":"Block","src":"4278:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":7690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4330:3:25","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":7691,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"4335:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7689,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"4299:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4299:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7693,"nodeType":"RevertStatement","src":"4292:49:25"}]}},{"expression":{"arguments":[{"id":7698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"4376:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4368:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":7696,"name":"uint208","nodeType":"ElementaryTypeName","src":"4368:7:25","typeDescriptions":{}}},"id":7699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4368:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":7681,"id":7700,"nodeType":"Return","src":"4361:21:25"}]},"documentation":{"id":7675,"nodeType":"StructuredDocumentation","src":"3886:280:25","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":7702,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4180:9:25","nodeType":"FunctionDefinition","parameters":{"id":7678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7677,"mutability":"mutable","name":"value","nameLocation":"4198:5:25","nodeType":"VariableDeclaration","scope":7702,"src":"4190:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7676,"name":"uint256","nodeType":"ElementaryTypeName","src":"4190:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4189:15:25"},"returnParameters":{"id":7681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7702,"src":"4228:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":7679,"name":"uint208","nodeType":"ElementaryTypeName","src":"4228:7:25","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4227:9:25"},"scope":9272,"src":"4171:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7729,"nodeType":"Block","src":"4746:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7710,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"4760:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4773:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":7712,"name":"uint200","nodeType":"ElementaryTypeName","src":"4773:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":7711,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"4768:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4768:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":7715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4782:3:25","memberName":"max","nodeType":"MemberAccess","src":"4768:17:25","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4760:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7723,"nodeType":"IfStatement","src":"4756:105:25","trueBody":{"id":7722,"nodeType":"Block","src":"4787:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":7718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4839:3:25","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":7719,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"4844:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7717,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"4808:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4808:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7721,"nodeType":"RevertStatement","src":"4801:49:25"}]}},{"expression":{"arguments":[{"id":7726,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"4885:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4877:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":7724,"name":"uint200","nodeType":"ElementaryTypeName","src":"4877:7:25","typeDescriptions":{}}},"id":7727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4877:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":7709,"id":7728,"nodeType":"Return","src":"4870:21:25"}]},"documentation":{"id":7703,"nodeType":"StructuredDocumentation","src":"4395:280:25","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":7730,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4689:9:25","nodeType":"FunctionDefinition","parameters":{"id":7706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7705,"mutability":"mutable","name":"value","nameLocation":"4707:5:25","nodeType":"VariableDeclaration","scope":7730,"src":"4699:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7704,"name":"uint256","nodeType":"ElementaryTypeName","src":"4699:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4698:15:25"},"returnParameters":{"id":7709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7730,"src":"4737:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":7707,"name":"uint200","nodeType":"ElementaryTypeName","src":"4737:7:25","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4736:9:25"},"scope":9272,"src":"4680:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7757,"nodeType":"Block","src":"5255:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7738,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7733,"src":"5269:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5282:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":7740,"name":"uint192","nodeType":"ElementaryTypeName","src":"5282:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":7739,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"5277:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5277:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":7743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5291:3:25","memberName":"max","nodeType":"MemberAccess","src":"5277:17:25","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5269:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7751,"nodeType":"IfStatement","src":"5265:105:25","trueBody":{"id":7750,"nodeType":"Block","src":"5296:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":7746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5348:3:25","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":7747,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7733,"src":"5353:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7745,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"5317:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5317:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7749,"nodeType":"RevertStatement","src":"5310:49:25"}]}},{"expression":{"arguments":[{"id":7754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7733,"src":"5394:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5386:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":7752,"name":"uint192","nodeType":"ElementaryTypeName","src":"5386:7:25","typeDescriptions":{}}},"id":7755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5386:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":7737,"id":7756,"nodeType":"Return","src":"5379:21:25"}]},"documentation":{"id":7731,"nodeType":"StructuredDocumentation","src":"4904:280:25","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":7758,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5198:9:25","nodeType":"FunctionDefinition","parameters":{"id":7734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7733,"mutability":"mutable","name":"value","nameLocation":"5216:5:25","nodeType":"VariableDeclaration","scope":7758,"src":"5208:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7732,"name":"uint256","nodeType":"ElementaryTypeName","src":"5208:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5207:15:25"},"returnParameters":{"id":7737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7758,"src":"5246:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":7735,"name":"uint192","nodeType":"ElementaryTypeName","src":"5246:7:25","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5245:9:25"},"scope":9272,"src":"5189:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7785,"nodeType":"Block","src":"5764:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7766,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"5778:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5791:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":7768,"name":"uint184","nodeType":"ElementaryTypeName","src":"5791:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":7767,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"5786:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5786:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":7771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5800:3:25","memberName":"max","nodeType":"MemberAccess","src":"5786:17:25","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5778:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7779,"nodeType":"IfStatement","src":"5774:105:25","trueBody":{"id":7778,"nodeType":"Block","src":"5805:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":7774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5857:3:25","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":7775,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"5862:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7773,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"5826:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5826:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7777,"nodeType":"RevertStatement","src":"5819:49:25"}]}},{"expression":{"arguments":[{"id":7782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"5903:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5895:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":7780,"name":"uint184","nodeType":"ElementaryTypeName","src":"5895:7:25","typeDescriptions":{}}},"id":7783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5895:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":7765,"id":7784,"nodeType":"Return","src":"5888:21:25"}]},"documentation":{"id":7759,"nodeType":"StructuredDocumentation","src":"5413:280:25","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":7786,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5707:9:25","nodeType":"FunctionDefinition","parameters":{"id":7762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7761,"mutability":"mutable","name":"value","nameLocation":"5725:5:25","nodeType":"VariableDeclaration","scope":7786,"src":"5717:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7760,"name":"uint256","nodeType":"ElementaryTypeName","src":"5717:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5716:15:25"},"returnParameters":{"id":7765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7786,"src":"5755:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":7763,"name":"uint184","nodeType":"ElementaryTypeName","src":"5755:7:25","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5754:9:25"},"scope":9272,"src":"5698:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7813,"nodeType":"Block","src":"6273:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7789,"src":"6287:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6300:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":7796,"name":"uint176","nodeType":"ElementaryTypeName","src":"6300:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":7795,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6295:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6295:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":7799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6309:3:25","memberName":"max","nodeType":"MemberAccess","src":"6295:17:25","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6287:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7807,"nodeType":"IfStatement","src":"6283:105:25","trueBody":{"id":7806,"nodeType":"Block","src":"6314:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":7802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6366:3:25","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":7803,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7789,"src":"6371:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7801,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"6335:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6335:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7805,"nodeType":"RevertStatement","src":"6328:49:25"}]}},{"expression":{"arguments":[{"id":7810,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7789,"src":"6412:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6404:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":7808,"name":"uint176","nodeType":"ElementaryTypeName","src":"6404:7:25","typeDescriptions":{}}},"id":7811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6404:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":7793,"id":7812,"nodeType":"Return","src":"6397:21:25"}]},"documentation":{"id":7787,"nodeType":"StructuredDocumentation","src":"5922:280:25","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":7814,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6216:9:25","nodeType":"FunctionDefinition","parameters":{"id":7790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7789,"mutability":"mutable","name":"value","nameLocation":"6234:5:25","nodeType":"VariableDeclaration","scope":7814,"src":"6226:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7788,"name":"uint256","nodeType":"ElementaryTypeName","src":"6226:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6225:15:25"},"returnParameters":{"id":7793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7792,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7814,"src":"6264:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":7791,"name":"uint176","nodeType":"ElementaryTypeName","src":"6264:7:25","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6263:9:25"},"scope":9272,"src":"6207:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7841,"nodeType":"Block","src":"6782:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7822,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7817,"src":"6796:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6809:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":7824,"name":"uint168","nodeType":"ElementaryTypeName","src":"6809:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":7823,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6804:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6804:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":7827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6818:3:25","memberName":"max","nodeType":"MemberAccess","src":"6804:17:25","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6796:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7835,"nodeType":"IfStatement","src":"6792:105:25","trueBody":{"id":7834,"nodeType":"Block","src":"6823:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":7830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6875:3:25","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":7831,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7817,"src":"6880:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7829,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"6844:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6844:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7833,"nodeType":"RevertStatement","src":"6837:49:25"}]}},{"expression":{"arguments":[{"id":7838,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7817,"src":"6921:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6913:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":7836,"name":"uint168","nodeType":"ElementaryTypeName","src":"6913:7:25","typeDescriptions":{}}},"id":7839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6913:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":7821,"id":7840,"nodeType":"Return","src":"6906:21:25"}]},"documentation":{"id":7815,"nodeType":"StructuredDocumentation","src":"6431:280:25","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":7842,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6725:9:25","nodeType":"FunctionDefinition","parameters":{"id":7818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7817,"mutability":"mutable","name":"value","nameLocation":"6743:5:25","nodeType":"VariableDeclaration","scope":7842,"src":"6735:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7816,"name":"uint256","nodeType":"ElementaryTypeName","src":"6735:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6734:15:25"},"returnParameters":{"id":7821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7842,"src":"6773:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":7819,"name":"uint168","nodeType":"ElementaryTypeName","src":"6773:7:25","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6772:9:25"},"scope":9272,"src":"6716:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7869,"nodeType":"Block","src":"7291:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7850,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7845,"src":"7305:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7318:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7852,"name":"uint160","nodeType":"ElementaryTypeName","src":"7318:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":7851,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"7313:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7313:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":7855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7327:3:25","memberName":"max","nodeType":"MemberAccess","src":"7313:17:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7305:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7863,"nodeType":"IfStatement","src":"7301:105:25","trueBody":{"id":7862,"nodeType":"Block","src":"7332:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":7858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7384:3:25","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":7859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7845,"src":"7389:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7857,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"7353:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7353:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7861,"nodeType":"RevertStatement","src":"7346:49:25"}]}},{"expression":{"arguments":[{"id":7866,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7845,"src":"7430:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7422:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7864,"name":"uint160","nodeType":"ElementaryTypeName","src":"7422:7:25","typeDescriptions":{}}},"id":7867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7422:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":7849,"id":7868,"nodeType":"Return","src":"7415:21:25"}]},"documentation":{"id":7843,"nodeType":"StructuredDocumentation","src":"6940:280:25","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":7870,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7234:9:25","nodeType":"FunctionDefinition","parameters":{"id":7846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7845,"mutability":"mutable","name":"value","nameLocation":"7252:5:25","nodeType":"VariableDeclaration","scope":7870,"src":"7244:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7844,"name":"uint256","nodeType":"ElementaryTypeName","src":"7244:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7243:15:25"},"returnParameters":{"id":7849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7870,"src":"7282:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7847,"name":"uint160","nodeType":"ElementaryTypeName","src":"7282:7:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7281:9:25"},"scope":9272,"src":"7225:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7897,"nodeType":"Block","src":"7800:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7878,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7873,"src":"7814:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7827:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":7880,"name":"uint152","nodeType":"ElementaryTypeName","src":"7827:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":7879,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"7822:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7822:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":7883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7836:3:25","memberName":"max","nodeType":"MemberAccess","src":"7822:17:25","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7814:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7891,"nodeType":"IfStatement","src":"7810:105:25","trueBody":{"id":7890,"nodeType":"Block","src":"7841:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":7886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7893:3:25","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":7887,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7873,"src":"7898:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7885,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"7862:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7862:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7889,"nodeType":"RevertStatement","src":"7855:49:25"}]}},{"expression":{"arguments":[{"id":7894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7873,"src":"7939:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7931:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":7892,"name":"uint152","nodeType":"ElementaryTypeName","src":"7931:7:25","typeDescriptions":{}}},"id":7895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7931:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":7877,"id":7896,"nodeType":"Return","src":"7924:21:25"}]},"documentation":{"id":7871,"nodeType":"StructuredDocumentation","src":"7449:280:25","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":7898,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7743:9:25","nodeType":"FunctionDefinition","parameters":{"id":7874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7873,"mutability":"mutable","name":"value","nameLocation":"7761:5:25","nodeType":"VariableDeclaration","scope":7898,"src":"7753:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7872,"name":"uint256","nodeType":"ElementaryTypeName","src":"7753:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7752:15:25"},"returnParameters":{"id":7877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7898,"src":"7791:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":7875,"name":"uint152","nodeType":"ElementaryTypeName","src":"7791:7:25","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7790:9:25"},"scope":9272,"src":"7734:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7925,"nodeType":"Block","src":"8309:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7906,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7901,"src":"8323:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8336:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":7908,"name":"uint144","nodeType":"ElementaryTypeName","src":"8336:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":7907,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"8331:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8331:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":7911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8345:3:25","memberName":"max","nodeType":"MemberAccess","src":"8331:17:25","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8323:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7919,"nodeType":"IfStatement","src":"8319:105:25","trueBody":{"id":7918,"nodeType":"Block","src":"8350:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":7914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8402:3:25","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":7915,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7901,"src":"8407:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7913,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"8371:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8371:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7917,"nodeType":"RevertStatement","src":"8364:49:25"}]}},{"expression":{"arguments":[{"id":7922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7901,"src":"8448:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8440:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":7920,"name":"uint144","nodeType":"ElementaryTypeName","src":"8440:7:25","typeDescriptions":{}}},"id":7923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8440:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":7905,"id":7924,"nodeType":"Return","src":"8433:21:25"}]},"documentation":{"id":7899,"nodeType":"StructuredDocumentation","src":"7958:280:25","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":7926,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8252:9:25","nodeType":"FunctionDefinition","parameters":{"id":7902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7901,"mutability":"mutable","name":"value","nameLocation":"8270:5:25","nodeType":"VariableDeclaration","scope":7926,"src":"8262:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7900,"name":"uint256","nodeType":"ElementaryTypeName","src":"8262:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8261:15:25"},"returnParameters":{"id":7905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7926,"src":"8300:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":7903,"name":"uint144","nodeType":"ElementaryTypeName","src":"8300:7:25","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8299:9:25"},"scope":9272,"src":"8243:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7953,"nodeType":"Block","src":"8818:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7929,"src":"8832:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8845:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":7936,"name":"uint136","nodeType":"ElementaryTypeName","src":"8845:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":7935,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"8840:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8840:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":7939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8854:3:25","memberName":"max","nodeType":"MemberAccess","src":"8840:17:25","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8832:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7947,"nodeType":"IfStatement","src":"8828:105:25","trueBody":{"id":7946,"nodeType":"Block","src":"8859:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":7942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8911:3:25","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":7943,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7929,"src":"8916:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7941,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"8880:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8880:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7945,"nodeType":"RevertStatement","src":"8873:49:25"}]}},{"expression":{"arguments":[{"id":7950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7929,"src":"8957:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8949:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":7948,"name":"uint136","nodeType":"ElementaryTypeName","src":"8949:7:25","typeDescriptions":{}}},"id":7951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8949:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":7933,"id":7952,"nodeType":"Return","src":"8942:21:25"}]},"documentation":{"id":7927,"nodeType":"StructuredDocumentation","src":"8467:280:25","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":7954,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8761:9:25","nodeType":"FunctionDefinition","parameters":{"id":7930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7929,"mutability":"mutable","name":"value","nameLocation":"8779:5:25","nodeType":"VariableDeclaration","scope":7954,"src":"8771:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7928,"name":"uint256","nodeType":"ElementaryTypeName","src":"8771:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8770:15:25"},"returnParameters":{"id":7933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7932,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7954,"src":"8809:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":7931,"name":"uint136","nodeType":"ElementaryTypeName","src":"8809:7:25","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8808:9:25"},"scope":9272,"src":"8752:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7981,"nodeType":"Block","src":"9327:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7962,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7957,"src":"9341:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9354:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":7964,"name":"uint128","nodeType":"ElementaryTypeName","src":"9354:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":7963,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"9349:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9349:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":7967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9363:3:25","memberName":"max","nodeType":"MemberAccess","src":"9349:17:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9341:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7975,"nodeType":"IfStatement","src":"9337:105:25","trueBody":{"id":7974,"nodeType":"Block","src":"9368:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":7970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9420:3:25","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":7971,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7957,"src":"9425:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7969,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"9389:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9389:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7973,"nodeType":"RevertStatement","src":"9382:49:25"}]}},{"expression":{"arguments":[{"id":7978,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7957,"src":"9466:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9458:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":7976,"name":"uint128","nodeType":"ElementaryTypeName","src":"9458:7:25","typeDescriptions":{}}},"id":7979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9458:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":7961,"id":7980,"nodeType":"Return","src":"9451:21:25"}]},"documentation":{"id":7955,"nodeType":"StructuredDocumentation","src":"8976:280:25","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":7982,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9270:9:25","nodeType":"FunctionDefinition","parameters":{"id":7958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7957,"mutability":"mutable","name":"value","nameLocation":"9288:5:25","nodeType":"VariableDeclaration","scope":7982,"src":"9280:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7956,"name":"uint256","nodeType":"ElementaryTypeName","src":"9280:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9279:15:25"},"returnParameters":{"id":7961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7960,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7982,"src":"9318:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":7959,"name":"uint128","nodeType":"ElementaryTypeName","src":"9318:7:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9317:9:25"},"scope":9272,"src":"9261:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8009,"nodeType":"Block","src":"9836:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7990,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7985,"src":"9850:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9863:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":7992,"name":"uint120","nodeType":"ElementaryTypeName","src":"9863:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":7991,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"9858:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9858:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":7995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9872:3:25","memberName":"max","nodeType":"MemberAccess","src":"9858:17:25","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9850:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8003,"nodeType":"IfStatement","src":"9846:105:25","trueBody":{"id":8002,"nodeType":"Block","src":"9877:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":7998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9929:3:25","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":7999,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7985,"src":"9934:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7997,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"9898:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9898:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8001,"nodeType":"RevertStatement","src":"9891:49:25"}]}},{"expression":{"arguments":[{"id":8006,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7985,"src":"9975:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8005,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9967:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":8004,"name":"uint120","nodeType":"ElementaryTypeName","src":"9967:7:25","typeDescriptions":{}}},"id":8007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9967:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":7989,"id":8008,"nodeType":"Return","src":"9960:21:25"}]},"documentation":{"id":7983,"nodeType":"StructuredDocumentation","src":"9485:280:25","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":8010,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9779:9:25","nodeType":"FunctionDefinition","parameters":{"id":7986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7985,"mutability":"mutable","name":"value","nameLocation":"9797:5:25","nodeType":"VariableDeclaration","scope":8010,"src":"9789:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7984,"name":"uint256","nodeType":"ElementaryTypeName","src":"9789:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9788:15:25"},"returnParameters":{"id":7989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7988,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8010,"src":"9827:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":7987,"name":"uint120","nodeType":"ElementaryTypeName","src":"9827:7:25","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9826:9:25"},"scope":9272,"src":"9770:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8037,"nodeType":"Block","src":"10345:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8013,"src":"10359:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10372:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":8020,"name":"uint112","nodeType":"ElementaryTypeName","src":"10372:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":8019,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"10367:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10367:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":8023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10381:3:25","memberName":"max","nodeType":"MemberAccess","src":"10367:17:25","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10359:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8031,"nodeType":"IfStatement","src":"10355:105:25","trueBody":{"id":8030,"nodeType":"Block","src":"10386:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":8026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10438:3:25","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":8027,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8013,"src":"10443:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8025,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"10407:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10407:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8029,"nodeType":"RevertStatement","src":"10400:49:25"}]}},{"expression":{"arguments":[{"id":8034,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8013,"src":"10484:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10476:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":8032,"name":"uint112","nodeType":"ElementaryTypeName","src":"10476:7:25","typeDescriptions":{}}},"id":8035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10476:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":8017,"id":8036,"nodeType":"Return","src":"10469:21:25"}]},"documentation":{"id":8011,"nodeType":"StructuredDocumentation","src":"9994:280:25","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":8038,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10288:9:25","nodeType":"FunctionDefinition","parameters":{"id":8014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8013,"mutability":"mutable","name":"value","nameLocation":"10306:5:25","nodeType":"VariableDeclaration","scope":8038,"src":"10298:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8012,"name":"uint256","nodeType":"ElementaryTypeName","src":"10298:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10297:15:25"},"returnParameters":{"id":8017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8016,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8038,"src":"10336:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":8015,"name":"uint112","nodeType":"ElementaryTypeName","src":"10336:7:25","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10335:9:25"},"scope":9272,"src":"10279:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8065,"nodeType":"Block","src":"10854:152:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8046,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8041,"src":"10868:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10881:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":8048,"name":"uint104","nodeType":"ElementaryTypeName","src":"10881:7:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":8047,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"10876:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10876:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":8051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10890:3:25","memberName":"max","nodeType":"MemberAccess","src":"10876:17:25","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10868:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8059,"nodeType":"IfStatement","src":"10864:105:25","trueBody":{"id":8058,"nodeType":"Block","src":"10895:74:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":8054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:3:25","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":8055,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8041,"src":"10952:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8053,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"10916:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10916:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8057,"nodeType":"RevertStatement","src":"10909:49:25"}]}},{"expression":{"arguments":[{"id":8062,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8041,"src":"10993:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10985:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":8060,"name":"uint104","nodeType":"ElementaryTypeName","src":"10985:7:25","typeDescriptions":{}}},"id":8063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10985:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":8045,"id":8064,"nodeType":"Return","src":"10978:21:25"}]},"documentation":{"id":8039,"nodeType":"StructuredDocumentation","src":"10503:280:25","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":8066,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10797:9:25","nodeType":"FunctionDefinition","parameters":{"id":8042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8041,"mutability":"mutable","name":"value","nameLocation":"10815:5:25","nodeType":"VariableDeclaration","scope":8066,"src":"10807:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8040,"name":"uint256","nodeType":"ElementaryTypeName","src":"10807:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10806:15:25"},"returnParameters":{"id":8045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8044,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8066,"src":"10845:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":8043,"name":"uint104","nodeType":"ElementaryTypeName","src":"10845:7:25","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10844:9:25"},"scope":9272,"src":"10788:218:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8093,"nodeType":"Block","src":"11357:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8074,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8069,"src":"11371:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11384:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":8076,"name":"uint96","nodeType":"ElementaryTypeName","src":"11384:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":8075,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"11379:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11379:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":8079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11392:3:25","memberName":"max","nodeType":"MemberAccess","src":"11379:16:25","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11371:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8087,"nodeType":"IfStatement","src":"11367:103:25","trueBody":{"id":8086,"nodeType":"Block","src":"11397:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":8082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11449:2:25","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":8083,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8069,"src":"11453:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8081,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"11418:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11418:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8085,"nodeType":"RevertStatement","src":"11411:48:25"}]}},{"expression":{"arguments":[{"id":8090,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8069,"src":"11493:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11486:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":8088,"name":"uint96","nodeType":"ElementaryTypeName","src":"11486:6:25","typeDescriptions":{}}},"id":8091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11486:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":8073,"id":8092,"nodeType":"Return","src":"11479:20:25"}]},"documentation":{"id":8067,"nodeType":"StructuredDocumentation","src":"11012:276:25","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":8094,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11302:8:25","nodeType":"FunctionDefinition","parameters":{"id":8070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8069,"mutability":"mutable","name":"value","nameLocation":"11319:5:25","nodeType":"VariableDeclaration","scope":8094,"src":"11311:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8068,"name":"uint256","nodeType":"ElementaryTypeName","src":"11311:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11310:15:25"},"returnParameters":{"id":8073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8072,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8094,"src":"11349:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":8071,"name":"uint96","nodeType":"ElementaryTypeName","src":"11349:6:25","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11348:8:25"},"scope":9272,"src":"11293:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8121,"nodeType":"Block","src":"11857:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8102,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8097,"src":"11871:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11884:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":8104,"name":"uint88","nodeType":"ElementaryTypeName","src":"11884:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":8103,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"11879:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11879:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":8107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11892:3:25","memberName":"max","nodeType":"MemberAccess","src":"11879:16:25","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11871:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8115,"nodeType":"IfStatement","src":"11867:103:25","trueBody":{"id":8114,"nodeType":"Block","src":"11897:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":8110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11949:2:25","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":8111,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8097,"src":"11953:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8109,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"11918:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11918:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8113,"nodeType":"RevertStatement","src":"11911:48:25"}]}},{"expression":{"arguments":[{"id":8118,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8097,"src":"11993:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11986:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":8116,"name":"uint88","nodeType":"ElementaryTypeName","src":"11986:6:25","typeDescriptions":{}}},"id":8119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11986:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":8101,"id":8120,"nodeType":"Return","src":"11979:20:25"}]},"documentation":{"id":8095,"nodeType":"StructuredDocumentation","src":"11512:276:25","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":8122,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11802:8:25","nodeType":"FunctionDefinition","parameters":{"id":8098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8097,"mutability":"mutable","name":"value","nameLocation":"11819:5:25","nodeType":"VariableDeclaration","scope":8122,"src":"11811:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8096,"name":"uint256","nodeType":"ElementaryTypeName","src":"11811:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11810:15:25"},"returnParameters":{"id":8101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8122,"src":"11849:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":8099,"name":"uint88","nodeType":"ElementaryTypeName","src":"11849:6:25","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11848:8:25"},"scope":9272,"src":"11793:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8149,"nodeType":"Block","src":"12357:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8130,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"12371:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12384:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":8132,"name":"uint80","nodeType":"ElementaryTypeName","src":"12384:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":8131,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"12379:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12379:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":8135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12392:3:25","memberName":"max","nodeType":"MemberAccess","src":"12379:16:25","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12371:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8143,"nodeType":"IfStatement","src":"12367:103:25","trueBody":{"id":8142,"nodeType":"Block","src":"12397:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":8138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12449:2:25","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":8139,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"12453:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8137,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"12418:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12418:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8141,"nodeType":"RevertStatement","src":"12411:48:25"}]}},{"expression":{"arguments":[{"id":8146,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8125,"src":"12493:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12486:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":8144,"name":"uint80","nodeType":"ElementaryTypeName","src":"12486:6:25","typeDescriptions":{}}},"id":8147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12486:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":8129,"id":8148,"nodeType":"Return","src":"12479:20:25"}]},"documentation":{"id":8123,"nodeType":"StructuredDocumentation","src":"12012:276:25","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":8150,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12302:8:25","nodeType":"FunctionDefinition","parameters":{"id":8126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8125,"mutability":"mutable","name":"value","nameLocation":"12319:5:25","nodeType":"VariableDeclaration","scope":8150,"src":"12311:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8124,"name":"uint256","nodeType":"ElementaryTypeName","src":"12311:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12310:15:25"},"returnParameters":{"id":8129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8128,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8150,"src":"12349:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":8127,"name":"uint80","nodeType":"ElementaryTypeName","src":"12349:6:25","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12348:8:25"},"scope":9272,"src":"12293:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8177,"nodeType":"Block","src":"12857:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8158,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"12871:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12884:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":8160,"name":"uint72","nodeType":"ElementaryTypeName","src":"12884:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":8159,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"12879:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12879:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":8163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12892:3:25","memberName":"max","nodeType":"MemberAccess","src":"12879:16:25","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12871:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8171,"nodeType":"IfStatement","src":"12867:103:25","trueBody":{"id":8170,"nodeType":"Block","src":"12897:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":8166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12949:2:25","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":8167,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"12953:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8165,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"12918:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12918:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8169,"nodeType":"RevertStatement","src":"12911:48:25"}]}},{"expression":{"arguments":[{"id":8174,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8153,"src":"12993:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12986:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":8172,"name":"uint72","nodeType":"ElementaryTypeName","src":"12986:6:25","typeDescriptions":{}}},"id":8175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12986:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":8157,"id":8176,"nodeType":"Return","src":"12979:20:25"}]},"documentation":{"id":8151,"nodeType":"StructuredDocumentation","src":"12512:276:25","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":8178,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12802:8:25","nodeType":"FunctionDefinition","parameters":{"id":8154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8153,"mutability":"mutable","name":"value","nameLocation":"12819:5:25","nodeType":"VariableDeclaration","scope":8178,"src":"12811:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8152,"name":"uint256","nodeType":"ElementaryTypeName","src":"12811:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12810:15:25"},"returnParameters":{"id":8157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8178,"src":"12849:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":8155,"name":"uint72","nodeType":"ElementaryTypeName","src":"12849:6:25","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12848:8:25"},"scope":9272,"src":"12793:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8205,"nodeType":"Block","src":"13357:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8186,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8181,"src":"13371:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13384:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8188,"name":"uint64","nodeType":"ElementaryTypeName","src":"13384:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":8187,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"13379:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13379:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":8191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13392:3:25","memberName":"max","nodeType":"MemberAccess","src":"13379:16:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13371:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8199,"nodeType":"IfStatement","src":"13367:103:25","trueBody":{"id":8198,"nodeType":"Block","src":"13397:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":8194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13449:2:25","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":8195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8181,"src":"13453:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8193,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"13418:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13418:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8197,"nodeType":"RevertStatement","src":"13411:48:25"}]}},{"expression":{"arguments":[{"id":8202,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8181,"src":"13493:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13486:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8200,"name":"uint64","nodeType":"ElementaryTypeName","src":"13486:6:25","typeDescriptions":{}}},"id":8203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13486:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":8185,"id":8204,"nodeType":"Return","src":"13479:20:25"}]},"documentation":{"id":8179,"nodeType":"StructuredDocumentation","src":"13012:276:25","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":8206,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13302:8:25","nodeType":"FunctionDefinition","parameters":{"id":8182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8181,"mutability":"mutable","name":"value","nameLocation":"13319:5:25","nodeType":"VariableDeclaration","scope":8206,"src":"13311:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8180,"name":"uint256","nodeType":"ElementaryTypeName","src":"13311:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13310:15:25"},"returnParameters":{"id":8185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8184,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8206,"src":"13349:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":8183,"name":"uint64","nodeType":"ElementaryTypeName","src":"13349:6:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13348:8:25"},"scope":9272,"src":"13293:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8233,"nodeType":"Block","src":"13857:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8214,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8209,"src":"13871:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13884:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":8216,"name":"uint56","nodeType":"ElementaryTypeName","src":"13884:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":8215,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"13879:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13879:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":8219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13892:3:25","memberName":"max","nodeType":"MemberAccess","src":"13879:16:25","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13871:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8227,"nodeType":"IfStatement","src":"13867:103:25","trueBody":{"id":8226,"nodeType":"Block","src":"13897:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":8222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13949:2:25","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":8223,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8209,"src":"13953:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8221,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"13918:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13918:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8225,"nodeType":"RevertStatement","src":"13911:48:25"}]}},{"expression":{"arguments":[{"id":8230,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8209,"src":"13993:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13986:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":8228,"name":"uint56","nodeType":"ElementaryTypeName","src":"13986:6:25","typeDescriptions":{}}},"id":8231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13986:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":8213,"id":8232,"nodeType":"Return","src":"13979:20:25"}]},"documentation":{"id":8207,"nodeType":"StructuredDocumentation","src":"13512:276:25","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":8234,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13802:8:25","nodeType":"FunctionDefinition","parameters":{"id":8210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8209,"mutability":"mutable","name":"value","nameLocation":"13819:5:25","nodeType":"VariableDeclaration","scope":8234,"src":"13811:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8208,"name":"uint256","nodeType":"ElementaryTypeName","src":"13811:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13810:15:25"},"returnParameters":{"id":8213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8212,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8234,"src":"13849:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":8211,"name":"uint56","nodeType":"ElementaryTypeName","src":"13849:6:25","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13848:8:25"},"scope":9272,"src":"13793:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8261,"nodeType":"Block","src":"14357:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8242,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"14371:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14384:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":8244,"name":"uint48","nodeType":"ElementaryTypeName","src":"14384:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":8243,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"14379:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14379:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":8247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14392:3:25","memberName":"max","nodeType":"MemberAccess","src":"14379:16:25","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14371:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8255,"nodeType":"IfStatement","src":"14367:103:25","trueBody":{"id":8254,"nodeType":"Block","src":"14397:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":8250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14449:2:25","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":8251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"14453:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8249,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"14418:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14418:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8253,"nodeType":"RevertStatement","src":"14411:48:25"}]}},{"expression":{"arguments":[{"id":8258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"14493:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14486:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":8256,"name":"uint48","nodeType":"ElementaryTypeName","src":"14486:6:25","typeDescriptions":{}}},"id":8259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14486:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":8241,"id":8260,"nodeType":"Return","src":"14479:20:25"}]},"documentation":{"id":8235,"nodeType":"StructuredDocumentation","src":"14012:276:25","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":8262,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14302:8:25","nodeType":"FunctionDefinition","parameters":{"id":8238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8237,"mutability":"mutable","name":"value","nameLocation":"14319:5:25","nodeType":"VariableDeclaration","scope":8262,"src":"14311:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8236,"name":"uint256","nodeType":"ElementaryTypeName","src":"14311:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14310:15:25"},"returnParameters":{"id":8241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8240,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8262,"src":"14349:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":8239,"name":"uint48","nodeType":"ElementaryTypeName","src":"14349:6:25","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14348:8:25"},"scope":9272,"src":"14293:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8289,"nodeType":"Block","src":"14857:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8265,"src":"14871:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14884:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":8272,"name":"uint40","nodeType":"ElementaryTypeName","src":"14884:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":8271,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"14879:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14879:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":8275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14892:3:25","memberName":"max","nodeType":"MemberAccess","src":"14879:16:25","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14871:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8283,"nodeType":"IfStatement","src":"14867:103:25","trueBody":{"id":8282,"nodeType":"Block","src":"14897:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":8278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14949:2:25","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":8279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8265,"src":"14953:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8277,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"14918:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14918:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8281,"nodeType":"RevertStatement","src":"14911:48:25"}]}},{"expression":{"arguments":[{"id":8286,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8265,"src":"14993:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14986:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":8284,"name":"uint40","nodeType":"ElementaryTypeName","src":"14986:6:25","typeDescriptions":{}}},"id":8287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14986:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":8269,"id":8288,"nodeType":"Return","src":"14979:20:25"}]},"documentation":{"id":8263,"nodeType":"StructuredDocumentation","src":"14512:276:25","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":8290,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14802:8:25","nodeType":"FunctionDefinition","parameters":{"id":8266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8265,"mutability":"mutable","name":"value","nameLocation":"14819:5:25","nodeType":"VariableDeclaration","scope":8290,"src":"14811:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8264,"name":"uint256","nodeType":"ElementaryTypeName","src":"14811:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14810:15:25"},"returnParameters":{"id":8269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8268,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8290,"src":"14849:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":8267,"name":"uint40","nodeType":"ElementaryTypeName","src":"14849:6:25","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14848:8:25"},"scope":9272,"src":"14793:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8317,"nodeType":"Block","src":"15357:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8298,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8293,"src":"15371:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15384:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":8300,"name":"uint32","nodeType":"ElementaryTypeName","src":"15384:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":8299,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"15379:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15379:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":8303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15392:3:25","memberName":"max","nodeType":"MemberAccess","src":"15379:16:25","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15371:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8311,"nodeType":"IfStatement","src":"15367:103:25","trueBody":{"id":8310,"nodeType":"Block","src":"15397:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":8306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15449:2:25","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":8307,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8293,"src":"15453:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8305,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"15418:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15418:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8309,"nodeType":"RevertStatement","src":"15411:48:25"}]}},{"expression":{"arguments":[{"id":8314,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8293,"src":"15493:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8313,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15486:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":8312,"name":"uint32","nodeType":"ElementaryTypeName","src":"15486:6:25","typeDescriptions":{}}},"id":8315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15486:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":8297,"id":8316,"nodeType":"Return","src":"15479:20:25"}]},"documentation":{"id":8291,"nodeType":"StructuredDocumentation","src":"15012:276:25","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":8318,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15302:8:25","nodeType":"FunctionDefinition","parameters":{"id":8294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8293,"mutability":"mutable","name":"value","nameLocation":"15319:5:25","nodeType":"VariableDeclaration","scope":8318,"src":"15311:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8292,"name":"uint256","nodeType":"ElementaryTypeName","src":"15311:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15310:15:25"},"returnParameters":{"id":8297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8318,"src":"15349:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8295,"name":"uint32","nodeType":"ElementaryTypeName","src":"15349:6:25","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15348:8:25"},"scope":9272,"src":"15293:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8345,"nodeType":"Block","src":"15857:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8326,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8321,"src":"15871:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15884:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":8328,"name":"uint24","nodeType":"ElementaryTypeName","src":"15884:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":8327,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"15879:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15879:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":8331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15892:3:25","memberName":"max","nodeType":"MemberAccess","src":"15879:16:25","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15871:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8339,"nodeType":"IfStatement","src":"15867:103:25","trueBody":{"id":8338,"nodeType":"Block","src":"15897:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":8334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15949:2:25","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":8335,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8321,"src":"15953:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8333,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"15918:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15918:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8337,"nodeType":"RevertStatement","src":"15911:48:25"}]}},{"expression":{"arguments":[{"id":8342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8321,"src":"15993:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8341,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15986:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":8340,"name":"uint24","nodeType":"ElementaryTypeName","src":"15986:6:25","typeDescriptions":{}}},"id":8343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15986:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":8325,"id":8344,"nodeType":"Return","src":"15979:20:25"}]},"documentation":{"id":8319,"nodeType":"StructuredDocumentation","src":"15512:276:25","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":8346,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15802:8:25","nodeType":"FunctionDefinition","parameters":{"id":8322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8321,"mutability":"mutable","name":"value","nameLocation":"15819:5:25","nodeType":"VariableDeclaration","scope":8346,"src":"15811:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8320,"name":"uint256","nodeType":"ElementaryTypeName","src":"15811:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15810:15:25"},"returnParameters":{"id":8325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8346,"src":"15849:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8323,"name":"uint24","nodeType":"ElementaryTypeName","src":"15849:6:25","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15848:8:25"},"scope":9272,"src":"15793:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8373,"nodeType":"Block","src":"16357:149:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8354,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8349,"src":"16371:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16384:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":8356,"name":"uint16","nodeType":"ElementaryTypeName","src":"16384:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":8355,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"16379:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16379:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":8359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16392:3:25","memberName":"max","nodeType":"MemberAccess","src":"16379:16:25","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16371:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8367,"nodeType":"IfStatement","src":"16367:103:25","trueBody":{"id":8366,"nodeType":"Block","src":"16397:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":8362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16449:2:25","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":8363,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8349,"src":"16453:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8361,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"16418:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16418:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8365,"nodeType":"RevertStatement","src":"16411:48:25"}]}},{"expression":{"arguments":[{"id":8370,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8349,"src":"16493:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16486:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":8368,"name":"uint16","nodeType":"ElementaryTypeName","src":"16486:6:25","typeDescriptions":{}}},"id":8371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16486:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":8353,"id":8372,"nodeType":"Return","src":"16479:20:25"}]},"documentation":{"id":8347,"nodeType":"StructuredDocumentation","src":"16012:276:25","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":8374,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16302:8:25","nodeType":"FunctionDefinition","parameters":{"id":8350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8349,"mutability":"mutable","name":"value","nameLocation":"16319:5:25","nodeType":"VariableDeclaration","scope":8374,"src":"16311:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8348,"name":"uint256","nodeType":"ElementaryTypeName","src":"16311:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16310:15:25"},"returnParameters":{"id":8353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8352,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8374,"src":"16349:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":8351,"name":"uint16","nodeType":"ElementaryTypeName","src":"16349:6:25","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16348:8:25"},"scope":9272,"src":"16293:213:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8401,"nodeType":"Block","src":"16851:146:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8382,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8377,"src":"16865:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16878:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8384,"name":"uint8","nodeType":"ElementaryTypeName","src":"16878:5:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":8383,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"16873:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16873:11:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":8387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16885:3:25","memberName":"max","nodeType":"MemberAccess","src":"16873:15:25","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16865:23:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8395,"nodeType":"IfStatement","src":"16861:101:25","trueBody":{"id":8394,"nodeType":"Block","src":"16890:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":8390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16942:1:25","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":8391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8377,"src":"16945:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8389,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"16911:30:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16911:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8393,"nodeType":"RevertStatement","src":"16904:47:25"}]}},{"expression":{"arguments":[{"id":8398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8377,"src":"16984:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16978:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8396,"name":"uint8","nodeType":"ElementaryTypeName","src":"16978:5:25","typeDescriptions":{}}},"id":8399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16978:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":8381,"id":8400,"nodeType":"Return","src":"16971:19:25"}]},"documentation":{"id":8375,"nodeType":"StructuredDocumentation","src":"16512:272:25","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":8402,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16798:7:25","nodeType":"FunctionDefinition","parameters":{"id":8378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8377,"mutability":"mutable","name":"value","nameLocation":"16814:5:25","nodeType":"VariableDeclaration","scope":8402,"src":"16806:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8376,"name":"uint256","nodeType":"ElementaryTypeName","src":"16806:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16805:15:25"},"returnParameters":{"id":8381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8380,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8402,"src":"16844:5:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8379,"name":"uint8","nodeType":"ElementaryTypeName","src":"16844:5:25","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16843:7:25"},"scope":9272,"src":"16789:208:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8424,"nodeType":"Block","src":"17233:128:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8410,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8405,"src":"17247:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17255:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17247:9:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8418,"nodeType":"IfStatement","src":"17243:81:25","trueBody":{"id":8417,"nodeType":"Block","src":"17258:66:25","statements":[{"errorCall":{"arguments":[{"id":8414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8405,"src":"17307:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8413,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7522,"src":"17279:27:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":8415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17279:34:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8416,"nodeType":"RevertStatement","src":"17272:41:25"}]}},{"expression":{"arguments":[{"id":8421,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8405,"src":"17348:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8420,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17340:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8419,"name":"uint256","nodeType":"ElementaryTypeName","src":"17340:7:25","typeDescriptions":{}}},"id":8422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17340:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8409,"id":8423,"nodeType":"Return","src":"17333:21:25"}]},"documentation":{"id":8403,"nodeType":"StructuredDocumentation","src":"17003:160:25","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":8425,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17177:9:25","nodeType":"FunctionDefinition","parameters":{"id":8406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8405,"mutability":"mutable","name":"value","nameLocation":"17194:5:25","nodeType":"VariableDeclaration","scope":8425,"src":"17187:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8404,"name":"int256","nodeType":"ElementaryTypeName","src":"17187:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17186:14:25"},"returnParameters":{"id":8409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8408,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8425,"src":"17224:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8407,"name":"uint256","nodeType":"ElementaryTypeName","src":"17224:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17223:9:25"},"scope":9272,"src":"17168:193:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8450,"nodeType":"Block","src":"17758:150:25","statements":[{"expression":{"id":8438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8433,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8431,"src":"17768:10:25","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8436,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8428,"src":"17788:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17781:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":8434,"name":"int248","nodeType":"ElementaryTypeName","src":"17781:6:25","typeDescriptions":{}}},"id":8437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17781:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17768:26:25","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":8439,"nodeType":"ExpressionStatement","src":"17768:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8440,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8431,"src":"17808:10:25","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8441,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8428,"src":"17822:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17808:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8449,"nodeType":"IfStatement","src":"17804:98:25","trueBody":{"id":8448,"nodeType":"Block","src":"17829:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":8444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17880:3:25","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":8445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8428,"src":"17885:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8443,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"17850:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17850:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8447,"nodeType":"RevertStatement","src":"17843:48:25"}]}}]},"documentation":{"id":8426,"nodeType":"StructuredDocumentation","src":"17367:312:25","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":8451,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17693:8:25","nodeType":"FunctionDefinition","parameters":{"id":8429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8428,"mutability":"mutable","name":"value","nameLocation":"17709:5:25","nodeType":"VariableDeclaration","scope":8451,"src":"17702:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8427,"name":"int256","nodeType":"ElementaryTypeName","src":"17702:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17701:14:25"},"returnParameters":{"id":8432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8431,"mutability":"mutable","name":"downcasted","nameLocation":"17746:10:25","nodeType":"VariableDeclaration","scope":8451,"src":"17739:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":8430,"name":"int248","nodeType":"ElementaryTypeName","src":"17739:6:25","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17738:19:25"},"scope":9272,"src":"17684:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8476,"nodeType":"Block","src":"18305:150:25","statements":[{"expression":{"id":8464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8459,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8457,"src":"18315:10:25","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8462,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"18335:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18328:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":8460,"name":"int240","nodeType":"ElementaryTypeName","src":"18328:6:25","typeDescriptions":{}}},"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18328:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18315:26:25","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":8465,"nodeType":"ExpressionStatement","src":"18315:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8466,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8457,"src":"18355:10:25","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8467,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"18369:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18355:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8475,"nodeType":"IfStatement","src":"18351:98:25","trueBody":{"id":8474,"nodeType":"Block","src":"18376:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":8470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18427:3:25","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":8471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"18432:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8469,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"18397:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18397:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8473,"nodeType":"RevertStatement","src":"18390:48:25"}]}}]},"documentation":{"id":8452,"nodeType":"StructuredDocumentation","src":"17914:312:25","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":8477,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18240:8:25","nodeType":"FunctionDefinition","parameters":{"id":8455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8454,"mutability":"mutable","name":"value","nameLocation":"18256:5:25","nodeType":"VariableDeclaration","scope":8477,"src":"18249:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8453,"name":"int256","nodeType":"ElementaryTypeName","src":"18249:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18248:14:25"},"returnParameters":{"id":8458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8457,"mutability":"mutable","name":"downcasted","nameLocation":"18293:10:25","nodeType":"VariableDeclaration","scope":8477,"src":"18286:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":8456,"name":"int240","nodeType":"ElementaryTypeName","src":"18286:6:25","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18285:19:25"},"scope":9272,"src":"18231:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8502,"nodeType":"Block","src":"18852:150:25","statements":[{"expression":{"id":8490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8485,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8483,"src":"18862:10:25","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8488,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"18882:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18875:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":8486,"name":"int232","nodeType":"ElementaryTypeName","src":"18875:6:25","typeDescriptions":{}}},"id":8489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18875:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18862:26:25","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":8491,"nodeType":"ExpressionStatement","src":"18862:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8492,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8483,"src":"18902:10:25","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"18916:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18902:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8501,"nodeType":"IfStatement","src":"18898:98:25","trueBody":{"id":8500,"nodeType":"Block","src":"18923:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":8496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18974:3:25","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":8497,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"18979:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8495,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"18944:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18944:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8499,"nodeType":"RevertStatement","src":"18937:48:25"}]}}]},"documentation":{"id":8478,"nodeType":"StructuredDocumentation","src":"18461:312:25","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":8503,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18787:8:25","nodeType":"FunctionDefinition","parameters":{"id":8481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8480,"mutability":"mutable","name":"value","nameLocation":"18803:5:25","nodeType":"VariableDeclaration","scope":8503,"src":"18796:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8479,"name":"int256","nodeType":"ElementaryTypeName","src":"18796:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18795:14:25"},"returnParameters":{"id":8484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8483,"mutability":"mutable","name":"downcasted","nameLocation":"18840:10:25","nodeType":"VariableDeclaration","scope":8503,"src":"18833:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":8482,"name":"int232","nodeType":"ElementaryTypeName","src":"18833:6:25","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18832:19:25"},"scope":9272,"src":"18778:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8528,"nodeType":"Block","src":"19399:150:25","statements":[{"expression":{"id":8516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8511,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8509,"src":"19409:10:25","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8514,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"19429:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19422:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":8512,"name":"int224","nodeType":"ElementaryTypeName","src":"19422:6:25","typeDescriptions":{}}},"id":8515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19422:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19409:26:25","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":8517,"nodeType":"ExpressionStatement","src":"19409:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8518,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8509,"src":"19449:10:25","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8519,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"19463:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19449:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8527,"nodeType":"IfStatement","src":"19445:98:25","trueBody":{"id":8526,"nodeType":"Block","src":"19470:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":8522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19521:3:25","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":8523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"19526:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8521,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"19491:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19491:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8525,"nodeType":"RevertStatement","src":"19484:48:25"}]}}]},"documentation":{"id":8504,"nodeType":"StructuredDocumentation","src":"19008:312:25","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":8529,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19334:8:25","nodeType":"FunctionDefinition","parameters":{"id":8507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8506,"mutability":"mutable","name":"value","nameLocation":"19350:5:25","nodeType":"VariableDeclaration","scope":8529,"src":"19343:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8505,"name":"int256","nodeType":"ElementaryTypeName","src":"19343:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19342:14:25"},"returnParameters":{"id":8510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8509,"mutability":"mutable","name":"downcasted","nameLocation":"19387:10:25","nodeType":"VariableDeclaration","scope":8529,"src":"19380:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":8508,"name":"int224","nodeType":"ElementaryTypeName","src":"19380:6:25","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19379:19:25"},"scope":9272,"src":"19325:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8554,"nodeType":"Block","src":"19946:150:25","statements":[{"expression":{"id":8542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8537,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8535,"src":"19956:10:25","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8540,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"19976:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19969:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":8538,"name":"int216","nodeType":"ElementaryTypeName","src":"19969:6:25","typeDescriptions":{}}},"id":8541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19969:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19956:26:25","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":8543,"nodeType":"ExpressionStatement","src":"19956:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8544,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8535,"src":"19996:10:25","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8545,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"20010:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19996:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8553,"nodeType":"IfStatement","src":"19992:98:25","trueBody":{"id":8552,"nodeType":"Block","src":"20017:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":8548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20068:3:25","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":8549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"20073:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8547,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"20038:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20038:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8551,"nodeType":"RevertStatement","src":"20031:48:25"}]}}]},"documentation":{"id":8530,"nodeType":"StructuredDocumentation","src":"19555:312:25","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":8555,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19881:8:25","nodeType":"FunctionDefinition","parameters":{"id":8533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8532,"mutability":"mutable","name":"value","nameLocation":"19897:5:25","nodeType":"VariableDeclaration","scope":8555,"src":"19890:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8531,"name":"int256","nodeType":"ElementaryTypeName","src":"19890:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19889:14:25"},"returnParameters":{"id":8536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8535,"mutability":"mutable","name":"downcasted","nameLocation":"19934:10:25","nodeType":"VariableDeclaration","scope":8555,"src":"19927:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":8534,"name":"int216","nodeType":"ElementaryTypeName","src":"19927:6:25","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19926:19:25"},"scope":9272,"src":"19872:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8580,"nodeType":"Block","src":"20493:150:25","statements":[{"expression":{"id":8568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8563,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"20503:10:25","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8566,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8558,"src":"20523:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20516:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":8564,"name":"int208","nodeType":"ElementaryTypeName","src":"20516:6:25","typeDescriptions":{}}},"id":8567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20516:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20503:26:25","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":8569,"nodeType":"ExpressionStatement","src":"20503:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8570,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"20543:10:25","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8571,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8558,"src":"20557:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20543:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8579,"nodeType":"IfStatement","src":"20539:98:25","trueBody":{"id":8578,"nodeType":"Block","src":"20564:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":8574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20615:3:25","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":8575,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8558,"src":"20620:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8573,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"20585:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20585:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8577,"nodeType":"RevertStatement","src":"20578:48:25"}]}}]},"documentation":{"id":8556,"nodeType":"StructuredDocumentation","src":"20102:312:25","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":8581,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20428:8:25","nodeType":"FunctionDefinition","parameters":{"id":8559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8558,"mutability":"mutable","name":"value","nameLocation":"20444:5:25","nodeType":"VariableDeclaration","scope":8581,"src":"20437:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8557,"name":"int256","nodeType":"ElementaryTypeName","src":"20437:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20436:14:25"},"returnParameters":{"id":8562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8561,"mutability":"mutable","name":"downcasted","nameLocation":"20481:10:25","nodeType":"VariableDeclaration","scope":8581,"src":"20474:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":8560,"name":"int208","nodeType":"ElementaryTypeName","src":"20474:6:25","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20473:19:25"},"scope":9272,"src":"20419:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8606,"nodeType":"Block","src":"21040:150:25","statements":[{"expression":{"id":8594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8589,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8587,"src":"21050:10:25","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8592,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8584,"src":"21070:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21063:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":8590,"name":"int200","nodeType":"ElementaryTypeName","src":"21063:6:25","typeDescriptions":{}}},"id":8593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21063:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21050:26:25","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":8595,"nodeType":"ExpressionStatement","src":"21050:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8596,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8587,"src":"21090:10:25","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8584,"src":"21104:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21090:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8605,"nodeType":"IfStatement","src":"21086:98:25","trueBody":{"id":8604,"nodeType":"Block","src":"21111:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":8600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21162:3:25","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":8601,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8584,"src":"21167:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8599,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"21132:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21132:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8603,"nodeType":"RevertStatement","src":"21125:48:25"}]}}]},"documentation":{"id":8582,"nodeType":"StructuredDocumentation","src":"20649:312:25","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":8607,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20975:8:25","nodeType":"FunctionDefinition","parameters":{"id":8585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8584,"mutability":"mutable","name":"value","nameLocation":"20991:5:25","nodeType":"VariableDeclaration","scope":8607,"src":"20984:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8583,"name":"int256","nodeType":"ElementaryTypeName","src":"20984:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20983:14:25"},"returnParameters":{"id":8588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8587,"mutability":"mutable","name":"downcasted","nameLocation":"21028:10:25","nodeType":"VariableDeclaration","scope":8607,"src":"21021:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":8586,"name":"int200","nodeType":"ElementaryTypeName","src":"21021:6:25","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21020:19:25"},"scope":9272,"src":"20966:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8632,"nodeType":"Block","src":"21587:150:25","statements":[{"expression":{"id":8620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8615,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8613,"src":"21597:10:25","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8618,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"21617:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21610:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":8616,"name":"int192","nodeType":"ElementaryTypeName","src":"21610:6:25","typeDescriptions":{}}},"id":8619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21610:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21597:26:25","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":8621,"nodeType":"ExpressionStatement","src":"21597:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8622,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8613,"src":"21637:10:25","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8623,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"21651:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21637:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8631,"nodeType":"IfStatement","src":"21633:98:25","trueBody":{"id":8630,"nodeType":"Block","src":"21658:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":8626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21709:3:25","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":8627,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"21714:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8625,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"21679:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21679:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8629,"nodeType":"RevertStatement","src":"21672:48:25"}]}}]},"documentation":{"id":8608,"nodeType":"StructuredDocumentation","src":"21196:312:25","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":8633,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21522:8:25","nodeType":"FunctionDefinition","parameters":{"id":8611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8610,"mutability":"mutable","name":"value","nameLocation":"21538:5:25","nodeType":"VariableDeclaration","scope":8633,"src":"21531:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8609,"name":"int256","nodeType":"ElementaryTypeName","src":"21531:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21530:14:25"},"returnParameters":{"id":8614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8613,"mutability":"mutable","name":"downcasted","nameLocation":"21575:10:25","nodeType":"VariableDeclaration","scope":8633,"src":"21568:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":8612,"name":"int192","nodeType":"ElementaryTypeName","src":"21568:6:25","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21567:19:25"},"scope":9272,"src":"21513:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8658,"nodeType":"Block","src":"22134:150:25","statements":[{"expression":{"id":8646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8641,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8639,"src":"22144:10:25","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8644,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8636,"src":"22164:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22157:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":8642,"name":"int184","nodeType":"ElementaryTypeName","src":"22157:6:25","typeDescriptions":{}}},"id":8645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22157:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22144:26:25","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":8647,"nodeType":"ExpressionStatement","src":"22144:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8648,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8639,"src":"22184:10:25","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8649,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8636,"src":"22198:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22184:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8657,"nodeType":"IfStatement","src":"22180:98:25","trueBody":{"id":8656,"nodeType":"Block","src":"22205:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":8652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22256:3:25","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":8653,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8636,"src":"22261:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8651,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"22226:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22226:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8655,"nodeType":"RevertStatement","src":"22219:48:25"}]}}]},"documentation":{"id":8634,"nodeType":"StructuredDocumentation","src":"21743:312:25","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":8659,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22069:8:25","nodeType":"FunctionDefinition","parameters":{"id":8637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8636,"mutability":"mutable","name":"value","nameLocation":"22085:5:25","nodeType":"VariableDeclaration","scope":8659,"src":"22078:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8635,"name":"int256","nodeType":"ElementaryTypeName","src":"22078:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22077:14:25"},"returnParameters":{"id":8640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8639,"mutability":"mutable","name":"downcasted","nameLocation":"22122:10:25","nodeType":"VariableDeclaration","scope":8659,"src":"22115:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":8638,"name":"int184","nodeType":"ElementaryTypeName","src":"22115:6:25","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22114:19:25"},"scope":9272,"src":"22060:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8684,"nodeType":"Block","src":"22681:150:25","statements":[{"expression":{"id":8672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8667,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8665,"src":"22691:10:25","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8670,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8662,"src":"22711:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22704:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":8668,"name":"int176","nodeType":"ElementaryTypeName","src":"22704:6:25","typeDescriptions":{}}},"id":8671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22704:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22691:26:25","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":8673,"nodeType":"ExpressionStatement","src":"22691:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8674,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8665,"src":"22731:10:25","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8675,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8662,"src":"22745:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22731:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8683,"nodeType":"IfStatement","src":"22727:98:25","trueBody":{"id":8682,"nodeType":"Block","src":"22752:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":8678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22803:3:25","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":8679,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8662,"src":"22808:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8677,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"22773:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22773:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8681,"nodeType":"RevertStatement","src":"22766:48:25"}]}}]},"documentation":{"id":8660,"nodeType":"StructuredDocumentation","src":"22290:312:25","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":8685,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22616:8:25","nodeType":"FunctionDefinition","parameters":{"id":8663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8662,"mutability":"mutable","name":"value","nameLocation":"22632:5:25","nodeType":"VariableDeclaration","scope":8685,"src":"22625:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8661,"name":"int256","nodeType":"ElementaryTypeName","src":"22625:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22624:14:25"},"returnParameters":{"id":8666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8665,"mutability":"mutable","name":"downcasted","nameLocation":"22669:10:25","nodeType":"VariableDeclaration","scope":8685,"src":"22662:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":8664,"name":"int176","nodeType":"ElementaryTypeName","src":"22662:6:25","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22661:19:25"},"scope":9272,"src":"22607:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8710,"nodeType":"Block","src":"23228:150:25","statements":[{"expression":{"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8693,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8691,"src":"23238:10:25","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8696,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8688,"src":"23258:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23251:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":8694,"name":"int168","nodeType":"ElementaryTypeName","src":"23251:6:25","typeDescriptions":{}}},"id":8697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23251:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23238:26:25","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":8699,"nodeType":"ExpressionStatement","src":"23238:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8700,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8691,"src":"23278:10:25","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8701,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8688,"src":"23292:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23278:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8709,"nodeType":"IfStatement","src":"23274:98:25","trueBody":{"id":8708,"nodeType":"Block","src":"23299:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":8704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23350:3:25","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":8705,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8688,"src":"23355:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8703,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"23320:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23320:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8707,"nodeType":"RevertStatement","src":"23313:48:25"}]}}]},"documentation":{"id":8686,"nodeType":"StructuredDocumentation","src":"22837:312:25","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":8711,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23163:8:25","nodeType":"FunctionDefinition","parameters":{"id":8689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8688,"mutability":"mutable","name":"value","nameLocation":"23179:5:25","nodeType":"VariableDeclaration","scope":8711,"src":"23172:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8687,"name":"int256","nodeType":"ElementaryTypeName","src":"23172:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23171:14:25"},"returnParameters":{"id":8692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8691,"mutability":"mutable","name":"downcasted","nameLocation":"23216:10:25","nodeType":"VariableDeclaration","scope":8711,"src":"23209:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":8690,"name":"int168","nodeType":"ElementaryTypeName","src":"23209:6:25","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23208:19:25"},"scope":9272,"src":"23154:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8736,"nodeType":"Block","src":"23775:150:25","statements":[{"expression":{"id":8724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8719,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"23785:10:25","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8722,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"23805:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23798:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":8720,"name":"int160","nodeType":"ElementaryTypeName","src":"23798:6:25","typeDescriptions":{}}},"id":8723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23798:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23785:26:25","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":8725,"nodeType":"ExpressionStatement","src":"23785:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8726,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"23825:10:25","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8727,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"23839:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23825:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8735,"nodeType":"IfStatement","src":"23821:98:25","trueBody":{"id":8734,"nodeType":"Block","src":"23846:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":8730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23897:3:25","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":8731,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"23902:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8729,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"23867:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23867:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8733,"nodeType":"RevertStatement","src":"23860:48:25"}]}}]},"documentation":{"id":8712,"nodeType":"StructuredDocumentation","src":"23384:312:25","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":8737,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23710:8:25","nodeType":"FunctionDefinition","parameters":{"id":8715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8714,"mutability":"mutable","name":"value","nameLocation":"23726:5:25","nodeType":"VariableDeclaration","scope":8737,"src":"23719:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8713,"name":"int256","nodeType":"ElementaryTypeName","src":"23719:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23718:14:25"},"returnParameters":{"id":8718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8717,"mutability":"mutable","name":"downcasted","nameLocation":"23763:10:25","nodeType":"VariableDeclaration","scope":8737,"src":"23756:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":8716,"name":"int160","nodeType":"ElementaryTypeName","src":"23756:6:25","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23755:19:25"},"scope":9272,"src":"23701:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8762,"nodeType":"Block","src":"24322:150:25","statements":[{"expression":{"id":8750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8745,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8743,"src":"24332:10:25","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8748,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8740,"src":"24352:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24345:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":8746,"name":"int152","nodeType":"ElementaryTypeName","src":"24345:6:25","typeDescriptions":{}}},"id":8749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24345:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24332:26:25","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":8751,"nodeType":"ExpressionStatement","src":"24332:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8752,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8743,"src":"24372:10:25","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8753,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8740,"src":"24386:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24372:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8761,"nodeType":"IfStatement","src":"24368:98:25","trueBody":{"id":8760,"nodeType":"Block","src":"24393:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":8756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24444:3:25","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":8757,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8740,"src":"24449:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8755,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"24414:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24414:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8759,"nodeType":"RevertStatement","src":"24407:48:25"}]}}]},"documentation":{"id":8738,"nodeType":"StructuredDocumentation","src":"23931:312:25","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":8763,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24257:8:25","nodeType":"FunctionDefinition","parameters":{"id":8741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8740,"mutability":"mutable","name":"value","nameLocation":"24273:5:25","nodeType":"VariableDeclaration","scope":8763,"src":"24266:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8739,"name":"int256","nodeType":"ElementaryTypeName","src":"24266:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24265:14:25"},"returnParameters":{"id":8744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8743,"mutability":"mutable","name":"downcasted","nameLocation":"24310:10:25","nodeType":"VariableDeclaration","scope":8763,"src":"24303:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":8742,"name":"int152","nodeType":"ElementaryTypeName","src":"24303:6:25","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24302:19:25"},"scope":9272,"src":"24248:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8788,"nodeType":"Block","src":"24869:150:25","statements":[{"expression":{"id":8776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8771,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8769,"src":"24879:10:25","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8774,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8766,"src":"24899:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24892:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":8772,"name":"int144","nodeType":"ElementaryTypeName","src":"24892:6:25","typeDescriptions":{}}},"id":8775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24892:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24879:26:25","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":8777,"nodeType":"ExpressionStatement","src":"24879:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8778,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8769,"src":"24919:10:25","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8779,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8766,"src":"24933:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24919:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8787,"nodeType":"IfStatement","src":"24915:98:25","trueBody":{"id":8786,"nodeType":"Block","src":"24940:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":8782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24991:3:25","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":8783,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8766,"src":"24996:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8781,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"24961:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24961:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8785,"nodeType":"RevertStatement","src":"24954:48:25"}]}}]},"documentation":{"id":8764,"nodeType":"StructuredDocumentation","src":"24478:312:25","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":8789,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24804:8:25","nodeType":"FunctionDefinition","parameters":{"id":8767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8766,"mutability":"mutable","name":"value","nameLocation":"24820:5:25","nodeType":"VariableDeclaration","scope":8789,"src":"24813:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8765,"name":"int256","nodeType":"ElementaryTypeName","src":"24813:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24812:14:25"},"returnParameters":{"id":8770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8769,"mutability":"mutable","name":"downcasted","nameLocation":"24857:10:25","nodeType":"VariableDeclaration","scope":8789,"src":"24850:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":8768,"name":"int144","nodeType":"ElementaryTypeName","src":"24850:6:25","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24849:19:25"},"scope":9272,"src":"24795:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8814,"nodeType":"Block","src":"25416:150:25","statements":[{"expression":{"id":8802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8797,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"25426:10:25","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8800,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"25446:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25439:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":8798,"name":"int136","nodeType":"ElementaryTypeName","src":"25439:6:25","typeDescriptions":{}}},"id":8801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25439:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25426:26:25","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":8803,"nodeType":"ExpressionStatement","src":"25426:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8804,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"25466:10:25","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"25480:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25466:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8813,"nodeType":"IfStatement","src":"25462:98:25","trueBody":{"id":8812,"nodeType":"Block","src":"25487:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":8808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25538:3:25","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":8809,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"25543:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8807,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"25508:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25508:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8811,"nodeType":"RevertStatement","src":"25501:48:25"}]}}]},"documentation":{"id":8790,"nodeType":"StructuredDocumentation","src":"25025:312:25","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":8815,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25351:8:25","nodeType":"FunctionDefinition","parameters":{"id":8793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8792,"mutability":"mutable","name":"value","nameLocation":"25367:5:25","nodeType":"VariableDeclaration","scope":8815,"src":"25360:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8791,"name":"int256","nodeType":"ElementaryTypeName","src":"25360:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25359:14:25"},"returnParameters":{"id":8796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8795,"mutability":"mutable","name":"downcasted","nameLocation":"25404:10:25","nodeType":"VariableDeclaration","scope":8815,"src":"25397:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":8794,"name":"int136","nodeType":"ElementaryTypeName","src":"25397:6:25","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25396:19:25"},"scope":9272,"src":"25342:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8840,"nodeType":"Block","src":"25963:150:25","statements":[{"expression":{"id":8828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8823,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8821,"src":"25973:10:25","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8826,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8818,"src":"25993:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25986:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":8824,"name":"int128","nodeType":"ElementaryTypeName","src":"25986:6:25","typeDescriptions":{}}},"id":8827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25986:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25973:26:25","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":8829,"nodeType":"ExpressionStatement","src":"25973:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8830,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8821,"src":"26013:10:25","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8831,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8818,"src":"26027:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26013:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8839,"nodeType":"IfStatement","src":"26009:98:25","trueBody":{"id":8838,"nodeType":"Block","src":"26034:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":8834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26085:3:25","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":8835,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8818,"src":"26090:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8833,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"26055:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26055:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8837,"nodeType":"RevertStatement","src":"26048:48:25"}]}}]},"documentation":{"id":8816,"nodeType":"StructuredDocumentation","src":"25572:312:25","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":8841,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25898:8:25","nodeType":"FunctionDefinition","parameters":{"id":8819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8818,"mutability":"mutable","name":"value","nameLocation":"25914:5:25","nodeType":"VariableDeclaration","scope":8841,"src":"25907:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8817,"name":"int256","nodeType":"ElementaryTypeName","src":"25907:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25906:14:25"},"returnParameters":{"id":8822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8821,"mutability":"mutable","name":"downcasted","nameLocation":"25951:10:25","nodeType":"VariableDeclaration","scope":8841,"src":"25944:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":8820,"name":"int128","nodeType":"ElementaryTypeName","src":"25944:6:25","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25943:19:25"},"scope":9272,"src":"25889:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8866,"nodeType":"Block","src":"26510:150:25","statements":[{"expression":{"id":8854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8849,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8847,"src":"26520:10:25","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8852,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8844,"src":"26540:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26533:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":8850,"name":"int120","nodeType":"ElementaryTypeName","src":"26533:6:25","typeDescriptions":{}}},"id":8853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26533:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26520:26:25","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":8855,"nodeType":"ExpressionStatement","src":"26520:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8856,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8847,"src":"26560:10:25","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8857,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8844,"src":"26574:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26560:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8865,"nodeType":"IfStatement","src":"26556:98:25","trueBody":{"id":8864,"nodeType":"Block","src":"26581:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":8860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26632:3:25","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":8861,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8844,"src":"26637:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8859,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"26602:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26602:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8863,"nodeType":"RevertStatement","src":"26595:48:25"}]}}]},"documentation":{"id":8842,"nodeType":"StructuredDocumentation","src":"26119:312:25","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":8867,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26445:8:25","nodeType":"FunctionDefinition","parameters":{"id":8845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8844,"mutability":"mutable","name":"value","nameLocation":"26461:5:25","nodeType":"VariableDeclaration","scope":8867,"src":"26454:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8843,"name":"int256","nodeType":"ElementaryTypeName","src":"26454:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26453:14:25"},"returnParameters":{"id":8848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8847,"mutability":"mutable","name":"downcasted","nameLocation":"26498:10:25","nodeType":"VariableDeclaration","scope":8867,"src":"26491:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":8846,"name":"int120","nodeType":"ElementaryTypeName","src":"26491:6:25","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26490:19:25"},"scope":9272,"src":"26436:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8892,"nodeType":"Block","src":"27057:150:25","statements":[{"expression":{"id":8880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8875,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8873,"src":"27067:10:25","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8878,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8870,"src":"27087:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27080:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":8876,"name":"int112","nodeType":"ElementaryTypeName","src":"27080:6:25","typeDescriptions":{}}},"id":8879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27080:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27067:26:25","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":8881,"nodeType":"ExpressionStatement","src":"27067:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8882,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8873,"src":"27107:10:25","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8883,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8870,"src":"27121:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27107:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8891,"nodeType":"IfStatement","src":"27103:98:25","trueBody":{"id":8890,"nodeType":"Block","src":"27128:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":8886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27179:3:25","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":8887,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8870,"src":"27184:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8885,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"27149:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27149:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8889,"nodeType":"RevertStatement","src":"27142:48:25"}]}}]},"documentation":{"id":8868,"nodeType":"StructuredDocumentation","src":"26666:312:25","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":8893,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26992:8:25","nodeType":"FunctionDefinition","parameters":{"id":8871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8870,"mutability":"mutable","name":"value","nameLocation":"27008:5:25","nodeType":"VariableDeclaration","scope":8893,"src":"27001:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8869,"name":"int256","nodeType":"ElementaryTypeName","src":"27001:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27000:14:25"},"returnParameters":{"id":8874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8873,"mutability":"mutable","name":"downcasted","nameLocation":"27045:10:25","nodeType":"VariableDeclaration","scope":8893,"src":"27038:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":8872,"name":"int112","nodeType":"ElementaryTypeName","src":"27038:6:25","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27037:19:25"},"scope":9272,"src":"26983:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8918,"nodeType":"Block","src":"27604:150:25","statements":[{"expression":{"id":8906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8901,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8899,"src":"27614:10:25","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"27634:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27627:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":8902,"name":"int104","nodeType":"ElementaryTypeName","src":"27627:6:25","typeDescriptions":{}}},"id":8905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27627:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27614:26:25","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":8907,"nodeType":"ExpressionStatement","src":"27614:26:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8908,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8899,"src":"27654:10:25","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"27668:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27654:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8917,"nodeType":"IfStatement","src":"27650:98:25","trueBody":{"id":8916,"nodeType":"Block","src":"27675:73:25","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":8912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27726:3:25","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":8913,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"27731:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8911,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"27696:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27696:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8915,"nodeType":"RevertStatement","src":"27689:48:25"}]}}]},"documentation":{"id":8894,"nodeType":"StructuredDocumentation","src":"27213:312:25","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":8919,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27539:8:25","nodeType":"FunctionDefinition","parameters":{"id":8897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8896,"mutability":"mutable","name":"value","nameLocation":"27555:5:25","nodeType":"VariableDeclaration","scope":8919,"src":"27548:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8895,"name":"int256","nodeType":"ElementaryTypeName","src":"27548:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27547:14:25"},"returnParameters":{"id":8900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8899,"mutability":"mutable","name":"downcasted","nameLocation":"27592:10:25","nodeType":"VariableDeclaration","scope":8919,"src":"27585:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":8898,"name":"int104","nodeType":"ElementaryTypeName","src":"27585:6:25","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27584:19:25"},"scope":9272,"src":"27530:224:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8944,"nodeType":"Block","src":"28144:148:25","statements":[{"expression":{"id":8932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8927,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8925,"src":"28154:10:25","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8930,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8922,"src":"28173:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28167:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":8928,"name":"int96","nodeType":"ElementaryTypeName","src":"28167:5:25","typeDescriptions":{}}},"id":8931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28167:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28154:25:25","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":8933,"nodeType":"ExpressionStatement","src":"28154:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8934,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8925,"src":"28193:10:25","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8935,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8922,"src":"28207:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28193:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8943,"nodeType":"IfStatement","src":"28189:97:25","trueBody":{"id":8942,"nodeType":"Block","src":"28214:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":8938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28265:2:25","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":8939,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8922,"src":"28269:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8937,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"28235:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28235:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8941,"nodeType":"RevertStatement","src":"28228:47:25"}]}}]},"documentation":{"id":8920,"nodeType":"StructuredDocumentation","src":"27760:307:25","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":8945,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28081:7:25","nodeType":"FunctionDefinition","parameters":{"id":8923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8922,"mutability":"mutable","name":"value","nameLocation":"28096:5:25","nodeType":"VariableDeclaration","scope":8945,"src":"28089:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8921,"name":"int256","nodeType":"ElementaryTypeName","src":"28089:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28088:14:25"},"returnParameters":{"id":8926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8925,"mutability":"mutable","name":"downcasted","nameLocation":"28132:10:25","nodeType":"VariableDeclaration","scope":8945,"src":"28126:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":8924,"name":"int96","nodeType":"ElementaryTypeName","src":"28126:5:25","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28125:18:25"},"scope":9272,"src":"28072:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8970,"nodeType":"Block","src":"28682:148:25","statements":[{"expression":{"id":8958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8953,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8951,"src":"28692:10:25","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8956,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8948,"src":"28711:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28705:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":8954,"name":"int88","nodeType":"ElementaryTypeName","src":"28705:5:25","typeDescriptions":{}}},"id":8957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28705:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28692:25:25","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":8959,"nodeType":"ExpressionStatement","src":"28692:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8960,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8951,"src":"28731:10:25","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8961,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8948,"src":"28745:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28731:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8969,"nodeType":"IfStatement","src":"28727:97:25","trueBody":{"id":8968,"nodeType":"Block","src":"28752:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":8964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28803:2:25","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":8965,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8948,"src":"28807:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8963,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"28773:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28773:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8967,"nodeType":"RevertStatement","src":"28766:47:25"}]}}]},"documentation":{"id":8946,"nodeType":"StructuredDocumentation","src":"28298:307:25","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":8971,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28619:7:25","nodeType":"FunctionDefinition","parameters":{"id":8949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8948,"mutability":"mutable","name":"value","nameLocation":"28634:5:25","nodeType":"VariableDeclaration","scope":8971,"src":"28627:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8947,"name":"int256","nodeType":"ElementaryTypeName","src":"28627:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28626:14:25"},"returnParameters":{"id":8952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8951,"mutability":"mutable","name":"downcasted","nameLocation":"28670:10:25","nodeType":"VariableDeclaration","scope":8971,"src":"28664:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":8950,"name":"int88","nodeType":"ElementaryTypeName","src":"28664:5:25","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28663:18:25"},"scope":9272,"src":"28610:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8996,"nodeType":"Block","src":"29220:148:25","statements":[{"expression":{"id":8984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8979,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"29230:10:25","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8982,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8974,"src":"29249:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29243:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":8980,"name":"int80","nodeType":"ElementaryTypeName","src":"29243:5:25","typeDescriptions":{}}},"id":8983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29243:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29230:25:25","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":8985,"nodeType":"ExpressionStatement","src":"29230:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8986,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"29269:10:25","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8987,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8974,"src":"29283:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29269:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8995,"nodeType":"IfStatement","src":"29265:97:25","trueBody":{"id":8994,"nodeType":"Block","src":"29290:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":8990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29341:2:25","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":8991,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8974,"src":"29345:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8989,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"29311:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29311:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8993,"nodeType":"RevertStatement","src":"29304:47:25"}]}}]},"documentation":{"id":8972,"nodeType":"StructuredDocumentation","src":"28836:307:25","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":8997,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29157:7:25","nodeType":"FunctionDefinition","parameters":{"id":8975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8974,"mutability":"mutable","name":"value","nameLocation":"29172:5:25","nodeType":"VariableDeclaration","scope":8997,"src":"29165:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8973,"name":"int256","nodeType":"ElementaryTypeName","src":"29165:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29164:14:25"},"returnParameters":{"id":8978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8977,"mutability":"mutable","name":"downcasted","nameLocation":"29208:10:25","nodeType":"VariableDeclaration","scope":8997,"src":"29202:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":8976,"name":"int80","nodeType":"ElementaryTypeName","src":"29202:5:25","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29201:18:25"},"scope":9272,"src":"29148:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9022,"nodeType":"Block","src":"29758:148:25","statements":[{"expression":{"id":9010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9005,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9003,"src":"29768:10:25","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9008,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9000,"src":"29787:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29781:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":9006,"name":"int72","nodeType":"ElementaryTypeName","src":"29781:5:25","typeDescriptions":{}}},"id":9009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29781:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29768:25:25","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":9011,"nodeType":"ExpressionStatement","src":"29768:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9012,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9003,"src":"29807:10:25","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9000,"src":"29821:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29807:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9021,"nodeType":"IfStatement","src":"29803:97:25","trueBody":{"id":9020,"nodeType":"Block","src":"29828:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":9016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29879:2:25","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":9017,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9000,"src":"29883:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9015,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"29849:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29849:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9019,"nodeType":"RevertStatement","src":"29842:47:25"}]}}]},"documentation":{"id":8998,"nodeType":"StructuredDocumentation","src":"29374:307:25","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":9023,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29695:7:25","nodeType":"FunctionDefinition","parameters":{"id":9001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9000,"mutability":"mutable","name":"value","nameLocation":"29710:5:25","nodeType":"VariableDeclaration","scope":9023,"src":"29703:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8999,"name":"int256","nodeType":"ElementaryTypeName","src":"29703:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29702:14:25"},"returnParameters":{"id":9004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9003,"mutability":"mutable","name":"downcasted","nameLocation":"29746:10:25","nodeType":"VariableDeclaration","scope":9023,"src":"29740:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":9002,"name":"int72","nodeType":"ElementaryTypeName","src":"29740:5:25","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29739:18:25"},"scope":9272,"src":"29686:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9048,"nodeType":"Block","src":"30296:148:25","statements":[{"expression":{"id":9036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9031,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"30306:10:25","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9034,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9026,"src":"30325:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30319:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":9032,"name":"int64","nodeType":"ElementaryTypeName","src":"30319:5:25","typeDescriptions":{}}},"id":9035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30319:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30306:25:25","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":9037,"nodeType":"ExpressionStatement","src":"30306:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9038,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"30345:10:25","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9039,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9026,"src":"30359:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30345:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9047,"nodeType":"IfStatement","src":"30341:97:25","trueBody":{"id":9046,"nodeType":"Block","src":"30366:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":9042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30417:2:25","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":9043,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9026,"src":"30421:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9041,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"30387:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30387:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9045,"nodeType":"RevertStatement","src":"30380:47:25"}]}}]},"documentation":{"id":9024,"nodeType":"StructuredDocumentation","src":"29912:307:25","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":9049,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30233:7:25","nodeType":"FunctionDefinition","parameters":{"id":9027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9026,"mutability":"mutable","name":"value","nameLocation":"30248:5:25","nodeType":"VariableDeclaration","scope":9049,"src":"30241:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9025,"name":"int256","nodeType":"ElementaryTypeName","src":"30241:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30240:14:25"},"returnParameters":{"id":9030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9029,"mutability":"mutable","name":"downcasted","nameLocation":"30284:10:25","nodeType":"VariableDeclaration","scope":9049,"src":"30278:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":9028,"name":"int64","nodeType":"ElementaryTypeName","src":"30278:5:25","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30277:18:25"},"scope":9272,"src":"30224:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9074,"nodeType":"Block","src":"30834:148:25","statements":[{"expression":{"id":9062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9057,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9055,"src":"30844:10:25","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9060,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9052,"src":"30863:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30857:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":9058,"name":"int56","nodeType":"ElementaryTypeName","src":"30857:5:25","typeDescriptions":{}}},"id":9061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30857:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30844:25:25","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":9063,"nodeType":"ExpressionStatement","src":"30844:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9064,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9055,"src":"30883:10:25","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9065,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9052,"src":"30897:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30883:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9073,"nodeType":"IfStatement","src":"30879:97:25","trueBody":{"id":9072,"nodeType":"Block","src":"30904:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":9068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30955:2:25","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":9069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9052,"src":"30959:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9067,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"30925:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30925:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9071,"nodeType":"RevertStatement","src":"30918:47:25"}]}}]},"documentation":{"id":9050,"nodeType":"StructuredDocumentation","src":"30450:307:25","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":9075,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30771:7:25","nodeType":"FunctionDefinition","parameters":{"id":9053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9052,"mutability":"mutable","name":"value","nameLocation":"30786:5:25","nodeType":"VariableDeclaration","scope":9075,"src":"30779:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9051,"name":"int256","nodeType":"ElementaryTypeName","src":"30779:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30778:14:25"},"returnParameters":{"id":9056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9055,"mutability":"mutable","name":"downcasted","nameLocation":"30822:10:25","nodeType":"VariableDeclaration","scope":9075,"src":"30816:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":9054,"name":"int56","nodeType":"ElementaryTypeName","src":"30816:5:25","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30815:18:25"},"scope":9272,"src":"30762:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9100,"nodeType":"Block","src":"31372:148:25","statements":[{"expression":{"id":9088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9083,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9081,"src":"31382:10:25","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9078,"src":"31401:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31395:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":9084,"name":"int48","nodeType":"ElementaryTypeName","src":"31395:5:25","typeDescriptions":{}}},"id":9087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31395:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31382:25:25","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":9089,"nodeType":"ExpressionStatement","src":"31382:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9090,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9081,"src":"31421:10:25","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9091,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9078,"src":"31435:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31421:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9099,"nodeType":"IfStatement","src":"31417:97:25","trueBody":{"id":9098,"nodeType":"Block","src":"31442:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":9094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31493:2:25","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":9095,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9078,"src":"31497:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9093,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"31463:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31463:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9097,"nodeType":"RevertStatement","src":"31456:47:25"}]}}]},"documentation":{"id":9076,"nodeType":"StructuredDocumentation","src":"30988:307:25","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":9101,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31309:7:25","nodeType":"FunctionDefinition","parameters":{"id":9079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9078,"mutability":"mutable","name":"value","nameLocation":"31324:5:25","nodeType":"VariableDeclaration","scope":9101,"src":"31317:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9077,"name":"int256","nodeType":"ElementaryTypeName","src":"31317:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31316:14:25"},"returnParameters":{"id":9082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9081,"mutability":"mutable","name":"downcasted","nameLocation":"31360:10:25","nodeType":"VariableDeclaration","scope":9101,"src":"31354:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":9080,"name":"int48","nodeType":"ElementaryTypeName","src":"31354:5:25","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31353:18:25"},"scope":9272,"src":"31300:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9126,"nodeType":"Block","src":"31910:148:25","statements":[{"expression":{"id":9114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9109,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9107,"src":"31920:10:25","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9112,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9104,"src":"31939:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31933:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":9110,"name":"int40","nodeType":"ElementaryTypeName","src":"31933:5:25","typeDescriptions":{}}},"id":9113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31933:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31920:25:25","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":9115,"nodeType":"ExpressionStatement","src":"31920:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9116,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9107,"src":"31959:10:25","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9117,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9104,"src":"31973:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31959:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9125,"nodeType":"IfStatement","src":"31955:97:25","trueBody":{"id":9124,"nodeType":"Block","src":"31980:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":9120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32031:2:25","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":9121,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9104,"src":"32035:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9119,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"32001:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32001:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9123,"nodeType":"RevertStatement","src":"31994:47:25"}]}}]},"documentation":{"id":9102,"nodeType":"StructuredDocumentation","src":"31526:307:25","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":9127,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31847:7:25","nodeType":"FunctionDefinition","parameters":{"id":9105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9104,"mutability":"mutable","name":"value","nameLocation":"31862:5:25","nodeType":"VariableDeclaration","scope":9127,"src":"31855:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9103,"name":"int256","nodeType":"ElementaryTypeName","src":"31855:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31854:14:25"},"returnParameters":{"id":9108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9107,"mutability":"mutable","name":"downcasted","nameLocation":"31898:10:25","nodeType":"VariableDeclaration","scope":9127,"src":"31892:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":9106,"name":"int40","nodeType":"ElementaryTypeName","src":"31892:5:25","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31891:18:25"},"scope":9272,"src":"31838:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9152,"nodeType":"Block","src":"32448:148:25","statements":[{"expression":{"id":9140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9135,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9133,"src":"32458:10:25","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9138,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9130,"src":"32477:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32471:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":9136,"name":"int32","nodeType":"ElementaryTypeName","src":"32471:5:25","typeDescriptions":{}}},"id":9139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32471:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32458:25:25","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":9141,"nodeType":"ExpressionStatement","src":"32458:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9142,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9133,"src":"32497:10:25","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9143,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9130,"src":"32511:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32497:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9151,"nodeType":"IfStatement","src":"32493:97:25","trueBody":{"id":9150,"nodeType":"Block","src":"32518:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":9146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32569:2:25","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":9147,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9130,"src":"32573:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9145,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"32539:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32539:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9149,"nodeType":"RevertStatement","src":"32532:47:25"}]}}]},"documentation":{"id":9128,"nodeType":"StructuredDocumentation","src":"32064:307:25","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":9153,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32385:7:25","nodeType":"FunctionDefinition","parameters":{"id":9131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9130,"mutability":"mutable","name":"value","nameLocation":"32400:5:25","nodeType":"VariableDeclaration","scope":9153,"src":"32393:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9129,"name":"int256","nodeType":"ElementaryTypeName","src":"32393:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32392:14:25"},"returnParameters":{"id":9134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9133,"mutability":"mutable","name":"downcasted","nameLocation":"32436:10:25","nodeType":"VariableDeclaration","scope":9153,"src":"32430:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":9132,"name":"int32","nodeType":"ElementaryTypeName","src":"32430:5:25","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32429:18:25"},"scope":9272,"src":"32376:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9178,"nodeType":"Block","src":"32986:148:25","statements":[{"expression":{"id":9166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9161,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9159,"src":"32996:10:25","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9164,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9156,"src":"33015:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33009:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":9162,"name":"int24","nodeType":"ElementaryTypeName","src":"33009:5:25","typeDescriptions":{}}},"id":9165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33009:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32996:25:25","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":9167,"nodeType":"ExpressionStatement","src":"32996:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9168,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9159,"src":"33035:10:25","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9169,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9156,"src":"33049:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33035:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9177,"nodeType":"IfStatement","src":"33031:97:25","trueBody":{"id":9176,"nodeType":"Block","src":"33056:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":9172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33107:2:25","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":9173,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9156,"src":"33111:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9171,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"33077:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33077:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9175,"nodeType":"RevertStatement","src":"33070:47:25"}]}}]},"documentation":{"id":9154,"nodeType":"StructuredDocumentation","src":"32602:307:25","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":9179,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32923:7:25","nodeType":"FunctionDefinition","parameters":{"id":9157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9156,"mutability":"mutable","name":"value","nameLocation":"32938:5:25","nodeType":"VariableDeclaration","scope":9179,"src":"32931:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9155,"name":"int256","nodeType":"ElementaryTypeName","src":"32931:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32930:14:25"},"returnParameters":{"id":9160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9159,"mutability":"mutable","name":"downcasted","nameLocation":"32974:10:25","nodeType":"VariableDeclaration","scope":9179,"src":"32968:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9158,"name":"int24","nodeType":"ElementaryTypeName","src":"32968:5:25","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32967:18:25"},"scope":9272,"src":"32914:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9204,"nodeType":"Block","src":"33524:148:25","statements":[{"expression":{"id":9192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9187,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"33534:10:25","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"33553:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33547:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":9188,"name":"int16","nodeType":"ElementaryTypeName","src":"33547:5:25","typeDescriptions":{}}},"id":9191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33547:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33534:25:25","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":9193,"nodeType":"ExpressionStatement","src":"33534:25:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9194,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"33573:10:25","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"33587:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33573:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9203,"nodeType":"IfStatement","src":"33569:97:25","trueBody":{"id":9202,"nodeType":"Block","src":"33594:72:25","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":9198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33645:2:25","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":9199,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"33649:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9197,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"33615:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33615:40:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9201,"nodeType":"RevertStatement","src":"33608:47:25"}]}}]},"documentation":{"id":9180,"nodeType":"StructuredDocumentation","src":"33140:307:25","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":9205,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33461:7:25","nodeType":"FunctionDefinition","parameters":{"id":9183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9182,"mutability":"mutable","name":"value","nameLocation":"33476:5:25","nodeType":"VariableDeclaration","scope":9205,"src":"33469:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9181,"name":"int256","nodeType":"ElementaryTypeName","src":"33469:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33468:14:25"},"returnParameters":{"id":9186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9185,"mutability":"mutable","name":"downcasted","nameLocation":"33512:10:25","nodeType":"VariableDeclaration","scope":9205,"src":"33506:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":9184,"name":"int16","nodeType":"ElementaryTypeName","src":"33506:5:25","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33505:18:25"},"scope":9272,"src":"33452:220:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9230,"nodeType":"Block","src":"34055:146:25","statements":[{"expression":{"id":9218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9213,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9211,"src":"34065:10:25","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9216,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9208,"src":"34083:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34078:4:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":9214,"name":"int8","nodeType":"ElementaryTypeName","src":"34078:4:25","typeDescriptions":{}}},"id":9217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34078:11:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34065:24:25","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":9219,"nodeType":"ExpressionStatement","src":"34065:24:25"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9220,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9211,"src":"34103:10:25","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9221,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9208,"src":"34117:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34103:19:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9229,"nodeType":"IfStatement","src":"34099:96:25","trueBody":{"id":9228,"nodeType":"Block","src":"34124:71:25","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":9224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34175:1:25","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":9225,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9208,"src":"34178:5:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9223,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"34145:29:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34145:39:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9227,"nodeType":"RevertStatement","src":"34138:46:25"}]}}]},"documentation":{"id":9206,"nodeType":"StructuredDocumentation","src":"33678:302:25","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":9231,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33994:6:25","nodeType":"FunctionDefinition","parameters":{"id":9209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9208,"mutability":"mutable","name":"value","nameLocation":"34008:5:25","nodeType":"VariableDeclaration","scope":9231,"src":"34001:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9207,"name":"int256","nodeType":"ElementaryTypeName","src":"34001:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34000:14:25"},"returnParameters":{"id":9212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9211,"mutability":"mutable","name":"downcasted","nameLocation":"34043:10:25","nodeType":"VariableDeclaration","scope":9231,"src":"34038:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":9210,"name":"int8","nodeType":"ElementaryTypeName","src":"34038:4:25","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34037:17:25"},"scope":9272,"src":"33985:216:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9260,"nodeType":"Block","src":"34441:250:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9239,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9234,"src":"34554:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":9244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34575:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9243,"name":"int256","nodeType":"ElementaryTypeName","src":"34575:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":9242,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"34570:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34570:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":9246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34583:3:25","memberName":"max","nodeType":"MemberAccess","src":"34570:16:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34562:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9240,"name":"uint256","nodeType":"ElementaryTypeName","src":"34562:7:25","typeDescriptions":{}}},"id":9247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34562:25:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34554:33:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9254,"nodeType":"IfStatement","src":"34550:105:25","trueBody":{"id":9253,"nodeType":"Block","src":"34589:66:25","statements":[{"errorCall":{"arguments":[{"id":9250,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9234,"src":"34638:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9249,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7534,"src":"34610:27:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":9251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34610:34:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9252,"nodeType":"RevertStatement","src":"34603:41:25"}]}},{"expression":{"arguments":[{"id":9257,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9234,"src":"34678:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34671:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9255,"name":"int256","nodeType":"ElementaryTypeName","src":"34671:6:25","typeDescriptions":{}}},"id":9258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34671:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9238,"id":9259,"nodeType":"Return","src":"34664:20:25"}]},"documentation":{"id":9232,"nodeType":"StructuredDocumentation","src":"34207:165:25","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":9261,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34386:8:25","nodeType":"FunctionDefinition","parameters":{"id":9235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9234,"mutability":"mutable","name":"value","nameLocation":"34403:5:25","nodeType":"VariableDeclaration","scope":9261,"src":"34395:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9233,"name":"uint256","nodeType":"ElementaryTypeName","src":"34395:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34394:15:25"},"returnParameters":{"id":9238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9237,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9261,"src":"34433:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9236,"name":"int256","nodeType":"ElementaryTypeName","src":"34433:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34432:8:25"},"scope":9272,"src":"34377:314:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9270,"nodeType":"Block","src":"34850:87:25","statements":[{"AST":{"nativeSrc":"34885:46:25","nodeType":"YulBlock","src":"34885:46:25","statements":[{"nativeSrc":"34899:22:25","nodeType":"YulAssignment","src":"34899:22:25","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34918:1:25","nodeType":"YulIdentifier","src":"34918:1:25"}],"functionName":{"name":"iszero","nativeSrc":"34911:6:25","nodeType":"YulIdentifier","src":"34911:6:25"},"nativeSrc":"34911:9:25","nodeType":"YulFunctionCall","src":"34911:9:25"}],"functionName":{"name":"iszero","nativeSrc":"34904:6:25","nodeType":"YulIdentifier","src":"34904:6:25"},"nativeSrc":"34904:17:25","nodeType":"YulFunctionCall","src":"34904:17:25"},"variableNames":[{"name":"u","nativeSrc":"34899:1:25","nodeType":"YulIdentifier","src":"34899:1:25"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9264,"isOffset":false,"isSlot":false,"src":"34918:1:25","valueSize":1},{"declaration":9267,"isOffset":false,"isSlot":false,"src":"34899:1:25","valueSize":1}],"flags":["memory-safe"],"id":9269,"nodeType":"InlineAssembly","src":"34860:71:25"}]},"documentation":{"id":9262,"nodeType":"StructuredDocumentation","src":"34697:90:25","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":9271,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34801:6:25","nodeType":"FunctionDefinition","parameters":{"id":9265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9264,"mutability":"mutable","name":"b","nameLocation":"34813:1:25","nodeType":"VariableDeclaration","scope":9271,"src":"34808:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9263,"name":"bool","nodeType":"ElementaryTypeName","src":"34808:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34807:8:25"},"returnParameters":{"id":9268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9267,"mutability":"mutable","name":"u","nameLocation":"34847:1:25","nodeType":"VariableDeclaration","scope":9271,"src":"34839:9:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9266,"name":"uint256","nodeType":"ElementaryTypeName","src":"34839:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34838:11:25"},"scope":9272,"src":"34792:145:25","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9273,"src":"769:34170:25","usedErrors":[7517,7522,7529,7534],"usedEvents":[]}],"src":"192:34748:25"},"id":25},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SafeCast":[9272],"SignedMath":[9416]},"id":9417,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9274,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:26"},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":9276,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9417,"sourceUnit":9273,"src":"135:40:26","symbolAliases":[{"foreign":{"id":9275,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"143:8:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":9277,"nodeType":"StructuredDocumentation","src":"177:80:26","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":9416,"linearizedBaseContracts":[9416],"name":"SignedMath","nameLocation":"266:10:26","nodeType":"ContractDefinition","nodes":[{"body":{"id":9306,"nodeType":"Block","src":"746:215:26","statements":[{"id":9305,"nodeType":"UncheckedBlock","src":"756:199:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9289,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"894:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9290,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9282,"src":"900:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9291,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"904:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"900:5:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9293,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"899:7:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"arguments":[{"id":9298,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9280,"src":"932:9:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9296,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"916:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9272_$","typeString":"type(library SafeCast)"}},"id":9297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"925:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9271,"src":"916:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"909:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9294,"name":"int256","nodeType":"ElementaryTypeName","src":"909:6:26","typeDescriptions":{}}},"id":9300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"909:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"899:44:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9302,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"898:46:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"894:50:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9288,"id":9304,"nodeType":"Return","src":"887:57:26"}]}]},"documentation":{"id":9278,"nodeType":"StructuredDocumentation","src":"283:374:26","text":" @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."},"id":9307,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"671:7:26","nodeType":"FunctionDefinition","parameters":{"id":9285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9280,"mutability":"mutable","name":"condition","nameLocation":"684:9:26","nodeType":"VariableDeclaration","scope":9307,"src":"679:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9279,"name":"bool","nodeType":"ElementaryTypeName","src":"679:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9282,"mutability":"mutable","name":"a","nameLocation":"702:1:26","nodeType":"VariableDeclaration","scope":9307,"src":"695:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9281,"name":"int256","nodeType":"ElementaryTypeName","src":"695:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9284,"mutability":"mutable","name":"b","nameLocation":"712:1:26","nodeType":"VariableDeclaration","scope":9307,"src":"705:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9283,"name":"int256","nodeType":"ElementaryTypeName","src":"705:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"678:36:26"},"returnParameters":{"id":9288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9307,"src":"738:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9286,"name":"int256","nodeType":"ElementaryTypeName","src":"738:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"737:8:26"},"scope":9416,"src":"662:299:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9325,"nodeType":"Block","src":"1102:44:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9318,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9310,"src":"1127:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9319,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"1131:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1127:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9321,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9310,"src":"1134:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":9322,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"1137:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9317,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"1119:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":9323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1119:20:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9316,"id":9324,"nodeType":"Return","src":"1112:27:26"}]},"documentation":{"id":9308,"nodeType":"StructuredDocumentation","src":"967:66:26","text":" @dev Returns the largest of two signed numbers."},"id":9326,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"1047:3:26","nodeType":"FunctionDefinition","parameters":{"id":9313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9310,"mutability":"mutable","name":"a","nameLocation":"1058:1:26","nodeType":"VariableDeclaration","scope":9326,"src":"1051:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9309,"name":"int256","nodeType":"ElementaryTypeName","src":"1051:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9312,"mutability":"mutable","name":"b","nameLocation":"1068:1:26","nodeType":"VariableDeclaration","scope":9326,"src":"1061:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9311,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1050:20:26"},"returnParameters":{"id":9316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9326,"src":"1094:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9314,"name":"int256","nodeType":"ElementaryTypeName","src":"1094:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1093:8:26"},"scope":9416,"src":"1038:108:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9344,"nodeType":"Block","src":"1288:44:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"1313:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9338,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9331,"src":"1317:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1313:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9340,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"1320:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":9341,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9331,"src":"1323:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9336,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"1305:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":9342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1305:20:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9335,"id":9343,"nodeType":"Return","src":"1298:27:26"}]},"documentation":{"id":9327,"nodeType":"StructuredDocumentation","src":"1152:67:26","text":" @dev Returns the smallest of two signed numbers."},"id":9345,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"1233:3:26","nodeType":"FunctionDefinition","parameters":{"id":9332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9329,"mutability":"mutable","name":"a","nameLocation":"1244:1:26","nodeType":"VariableDeclaration","scope":9345,"src":"1237:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9328,"name":"int256","nodeType":"ElementaryTypeName","src":"1237:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9331,"mutability":"mutable","name":"b","nameLocation":"1254:1:26","nodeType":"VariableDeclaration","scope":9345,"src":"1247:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9330,"name":"int256","nodeType":"ElementaryTypeName","src":"1247:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1236:20:26"},"returnParameters":{"id":9335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9334,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9345,"src":"1280:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9333,"name":"int256","nodeType":"ElementaryTypeName","src":"1280:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1279:8:26"},"scope":9416,"src":"1224:108:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9388,"nodeType":"Block","src":"1537:162:26","statements":[{"assignments":[9356],"declarations":[{"constant":false,"id":9356,"mutability":"mutable","name":"x","nameLocation":"1606:1:26","nodeType":"VariableDeclaration","scope":9388,"src":"1599:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9355,"name":"int256","nodeType":"ElementaryTypeName","src":"1599:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9369,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9357,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9348,"src":"1611:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":9358,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9350,"src":"1615:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1611:5:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9360,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1610:7:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9361,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9348,"src":"1622:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9362,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9350,"src":"1626:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1622:5:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9364,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1621:7:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":9365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1621:12:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9367,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1620:14:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1610:24:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1599:35:26"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9370,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9356,"src":"1651:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9375,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9356,"src":"1671:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1663:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9373,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:26","typeDescriptions":{}}},"id":9376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1663:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":9377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:3:26","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1663:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1656:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9371,"name":"int256","nodeType":"ElementaryTypeName","src":"1656:6:26","typeDescriptions":{}}},"id":9379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9380,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9348,"src":"1685:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9381,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9350,"src":"1689:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1685:5:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1684:7:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1656:35:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9385,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1655:37:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1651:41:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9354,"id":9387,"nodeType":"Return","src":"1644:48:26"}]},"documentation":{"id":9346,"nodeType":"StructuredDocumentation","src":"1338:126:26","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":9389,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"1478:7:26","nodeType":"FunctionDefinition","parameters":{"id":9351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9348,"mutability":"mutable","name":"a","nameLocation":"1493:1:26","nodeType":"VariableDeclaration","scope":9389,"src":"1486:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9347,"name":"int256","nodeType":"ElementaryTypeName","src":"1486:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9350,"mutability":"mutable","name":"b","nameLocation":"1503:1:26","nodeType":"VariableDeclaration","scope":9389,"src":"1496:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9349,"name":"int256","nodeType":"ElementaryTypeName","src":"1496:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1485:20:26"},"returnParameters":{"id":9354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9389,"src":"1529:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9352,"name":"int256","nodeType":"ElementaryTypeName","src":"1529:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1528:8:26"},"scope":9416,"src":"1469:230:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9414,"nodeType":"Block","src":"1843:767:26","statements":[{"id":9413,"nodeType":"UncheckedBlock","src":"1853:751:26","statements":[{"assignments":[9398],"declarations":[{"constant":false,"id":9398,"mutability":"mutable","name":"mask","nameLocation":"2424:4:26","nodeType":"VariableDeclaration","scope":9413,"src":"2417:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9397,"name":"int256","nodeType":"ElementaryTypeName","src":"2417:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9402,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9399,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9392,"src":"2431:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":9400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2436:3:26","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"2431:8:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2417:22:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9405,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9392,"src":"2576:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9406,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9398,"src":"2580:4:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2576:8:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9408,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2575:10:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9409,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9398,"src":"2588:4:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2575:17:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2567:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9403,"name":"uint256","nodeType":"ElementaryTypeName","src":"2567:7:26","typeDescriptions":{}}},"id":9411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2567:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9396,"id":9412,"nodeType":"Return","src":"2560:33:26"}]}]},"documentation":{"id":9390,"nodeType":"StructuredDocumentation","src":"1705:78:26","text":" @dev Returns the absolute unsigned value of a signed value."},"id":9415,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1797:3:26","nodeType":"FunctionDefinition","parameters":{"id":9393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9392,"mutability":"mutable","name":"n","nameLocation":"1808:1:26","nodeType":"VariableDeclaration","scope":9415,"src":"1801:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9391,"name":"int256","nodeType":"ElementaryTypeName","src":"1801:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1800:10:26"},"returnParameters":{"id":9396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9395,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9415,"src":"1834:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1833:9:26"},"scope":9416,"src":"1788:822:26","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9417,"src":"258:2354:26","usedErrors":[],"usedEvents":[]}],"src":"109:2504:26"},"id":26},"contracts/TricksforBoosterNFT.sol":{"ast":{"absolutePath":"contracts/TricksforBoosterNFT.sol","exportedSymbols":{"AccessControl":[295],"AccessControlDefaultAdminRules":[1331],"Context":[3907],"ERC165":[5838],"ERC2981":[3076],"ERC721":[2569],"ERC721Utils":[2809],"IAccessControl":[378],"IAccessControlDefaultAdminRules":[1430],"IERC165":[5850],"IERC2981":[1450],"IERC5313":[1460],"IERC721":[2686],"IERC721Errors":[1550],"IERC721Metadata":[2732],"Math":[7507],"Pausable":[4067],"SafeCast":[9272],"Strings":[5814],"TricksforBoosterNFT":[9702]},"id":9703,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9418,"literals":["solidity","^","0.8",".26"],"nodeType":"PragmaDirective","src":"32:24:27"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"@openzeppelin/contracts/token/ERC721/ERC721.sol","id":9419,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9703,"sourceUnit":2570,"src":"58:57:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/common/ERC2981.sol","file":"@openzeppelin/contracts/token/common/ERC2981.sol","id":9420,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9703,"sourceUnit":3077,"src":"116:58:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol","file":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol","id":9421,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9703,"sourceUnit":1332,"src":"175:86:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Pausable.sol","file":"@openzeppelin/contracts/utils/Pausable.sol","id":9422,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9703,"sourceUnit":4068,"src":"262:52:27","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9424,"name":"ERC721","nameLocations":["710:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"710:6:27"},"id":9425,"nodeType":"InheritanceSpecifier","src":"710:6:27"},{"baseName":{"id":9426,"name":"ERC2981","nameLocations":["718:7:27"],"nodeType":"IdentifierPath","referencedDeclaration":3076,"src":"718:7:27"},"id":9427,"nodeType":"InheritanceSpecifier","src":"718:7:27"},{"baseName":{"id":9428,"name":"AccessControlDefaultAdminRules","nameLocations":["727:30:27"],"nodeType":"IdentifierPath","referencedDeclaration":1331,"src":"727:30:27"},"id":9429,"nodeType":"InheritanceSpecifier","src":"727:30:27"},{"baseName":{"id":9430,"name":"Pausable","nameLocations":["759:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":4067,"src":"759:8:27"},"id":9431,"nodeType":"InheritanceSpecifier","src":"759:8:27"}],"canonicalName":"TricksforBoosterNFT","contractDependencies":[],"contractKind":"contract","documentation":{"id":9423,"nodeType":"StructuredDocumentation","src":"316:362:27","text":"@title TricksforBoosterNFT\n @notice ERC-721 NFT collection for Tricksfor Booster items.\n OpenSea-compatible: supports tokenURI, contractURI, and ERC-2981 royalties.\n Minting is role-gated (MINTER_ROLE) and can be paused by the default admin.\n @dev Does not include staking logic — staking is handled by TricksforBoosterStaking."},"fullyImplemented":true,"id":9702,"linearizedBaseContracts":[9702,4067,1331,295,3076,2569,1550,2732,2686,5838,1450,5850,1460,1430,378,3907],"name":"TricksforBoosterNFT","nameLocation":"687:19:27","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":9432,"nodeType":"StructuredDocumentation","src":"950:61:27","text":"@notice Role that authorizes an account to call safeMint."},"functionSelector":"d5391393","id":9437,"mutability":"constant","name":"MINTER_ROLE","nameLocation":"1040:11:27","nodeType":"VariableDeclaration","scope":9702,"src":"1016:62:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9433,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1016:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4d494e5445525f524f4c45","id":9435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1064:13:27","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","typeString":"literal_string \"MINTER_ROLE\""},"value":"MINTER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","typeString":"literal_string \"MINTER_ROLE\""}],"id":9434,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"1054:9:27","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1054:24:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"documentation":{"id":9438,"nodeType":"StructuredDocumentation","src":"1262:71:27","text":"@notice Zero address supplied where a non-zero address is required."},"errorSelector":"d92e233d","id":9440,"name":"ZeroAddress","nameLocation":"1344:11:27","nodeType":"ErrorDefinition","parameters":{"id":9439,"nodeType":"ParameterList","parameters":[],"src":"1355:2:27"},"src":"1338:20:27"},{"anonymous":false,"eventSelector":"309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1","id":9446,"name":"BaseURIUpdated","nameLocation":"1547:14:27","nodeType":"EventDefinition","parameters":{"id":9445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9442,"indexed":false,"mutability":"mutable","name":"previousURI","nameLocation":"1569:11:27","nodeType":"VariableDeclaration","scope":9446,"src":"1562:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9441,"name":"string","nodeType":"ElementaryTypeName","src":"1562:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9444,"indexed":false,"mutability":"mutable","name":"newURI","nameLocation":"1589:6:27","nodeType":"VariableDeclaration","scope":9446,"src":"1582:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9443,"name":"string","nodeType":"ElementaryTypeName","src":"1582:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1561:35:27"},"src":"1541:56:27"},{"anonymous":false,"eventSelector":"c9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16","id":9452,"name":"ContractURIUpdated","nameLocation":"1608:18:27","nodeType":"EventDefinition","parameters":{"id":9451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9448,"indexed":false,"mutability":"mutable","name":"previousURI","nameLocation":"1634:11:27","nodeType":"VariableDeclaration","scope":9452,"src":"1627:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9447,"name":"string","nodeType":"ElementaryTypeName","src":"1627:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9450,"indexed":false,"mutability":"mutable","name":"newURI","nameLocation":"1654:6:27","nodeType":"VariableDeclaration","scope":9452,"src":"1647:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9449,"name":"string","nodeType":"ElementaryTypeName","src":"1647:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1626:35:27"},"src":"1602:60:27"},{"anonymous":false,"eventSelector":"e12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf4","id":9458,"name":"DefaultRoyaltyUpdated","nameLocation":"1673:21:27","nodeType":"EventDefinition","parameters":{"id":9457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9454,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"1711:8:27","nodeType":"VariableDeclaration","scope":9458,"src":"1695:24:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9453,"name":"address","nodeType":"ElementaryTypeName","src":"1695:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9456,"indexed":false,"mutability":"mutable","name":"feeBasisPoints","nameLocation":"1728:14:27","nodeType":"VariableDeclaration","scope":9458,"src":"1721:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":9455,"name":"uint96","nodeType":"ElementaryTypeName","src":"1721:6:27","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"1694:49:27"},"src":"1667:77:27"},{"constant":false,"id":9460,"mutability":"mutable","name":"_baseTokenURI","nameLocation":"1941:13:27","nodeType":"VariableDeclaration","scope":9702,"src":"1926:28:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":9459,"name":"string","nodeType":"ElementaryTypeName","src":"1926:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":9462,"mutability":"mutable","name":"_contractMetadataURI","nameLocation":"1975:20:27","nodeType":"VariableDeclaration","scope":9702,"src":"1960:35:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":9461,"name":"string","nodeType":"ElementaryTypeName","src":"1960:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":9535,"nodeType":"Block","src":"3277:366:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9492,"name":"royaltyReceiver_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9473,"src":"3291:16:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3319:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3311:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9493,"name":"address","nodeType":"ElementaryTypeName","src":"3311:7:27","typeDescriptions":{}}},"id":9496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3311:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3291:30:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9498,"name":"initialAdmin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9477,"src":"3325:13:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3350:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3342:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9499,"name":"address","nodeType":"ElementaryTypeName","src":"3342:7:27","typeDescriptions":{}}},"id":9502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3342:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3325:27:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3291:61:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9505,"name":"initialMinter_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9479,"src":"3356:14:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3382:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3374:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9506,"name":"address","nodeType":"ElementaryTypeName","src":"3374:7:27","typeDescriptions":{}}},"id":9509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3374:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3356:28:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3291:93:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9516,"nodeType":"IfStatement","src":"3287:144:27","trueBody":{"id":9515,"nodeType":"Block","src":"3386:45:27","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9512,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9440,"src":"3407:11:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3407:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9514,"nodeType":"RevertStatement","src":"3400:20:27"}]}},{"expression":{"id":9519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9517,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"3440:13:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9518,"name":"baseURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9469,"src":"3456:8:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3440:24:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":9520,"nodeType":"ExpressionStatement","src":"3440:24:27"},{"expression":{"id":9523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9521,"name":"_contractMetadataURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"3474:20:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9522,"name":"contractMetadataURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9471,"src":"3497:20:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3474:43:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":9524,"nodeType":"ExpressionStatement","src":"3474:43:27"},{"expression":{"arguments":[{"id":9526,"name":"royaltyReceiver_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9473,"src":"3546:16:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9527,"name":"royaltyFeeBasisPoints_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9475,"src":"3564:22:27","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":9525,"name":"_setDefaultRoyalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"3527:18:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,uint96)"}},"id":9528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3527:60:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9529,"nodeType":"ExpressionStatement","src":"3527:60:27"},{"expression":{"arguments":[{"id":9531,"name":"MINTER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9437,"src":"3608:11:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9532,"name":"initialMinter_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9479,"src":"3621:14:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9530,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[865],"referencedDeclaration":865,"src":"3597:10:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":9533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3597:39:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9534,"nodeType":"ExpressionStatement","src":"3597:39:27"}]},"documentation":{"id":9463,"nodeType":"StructuredDocumentation","src":"2184:674:27","text":"@param name_ ERC-721 collection name\n @param symbol_ ERC-721 collection symbol\n @param baseURI_ Base URI for token metadata (appended with tokenId)\n @param contractMetadataURI_ URI for OpenSea collection-level metadata\n @param royaltyReceiver_ Address that receives royalty payments\n @param royaltyFeeBasisPoints_ Royalty fee in basis points (10 000 = 100%)\n @param initialAdmin_ Initial default administrator\n @param initialMinter_ Initial account authorized to mint\n @param defaultAdminDelay_ Delay in seconds for default-admin transfers"},"id":9536,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9484,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9465,"src":"3195:5:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9485,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9467,"src":"3202:7:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":9486,"kind":"baseConstructorSpecifier","modifierName":{"id":9483,"name":"ERC721","nameLocations":["3188:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"3188:6:27"},"nodeType":"ModifierInvocation","src":"3188:22:27"},{"arguments":[{"id":9488,"name":"defaultAdminDelay_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9481,"src":"3242:18:27","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":9489,"name":"initialAdmin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9477,"src":"3262:13:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":9490,"kind":"baseConstructorSpecifier","modifierName":{"id":9487,"name":"AccessControlDefaultAdminRules","nameLocations":["3211:30:27"],"nodeType":"IdentifierPath","referencedDeclaration":1331,"src":"3211:30:27"},"nodeType":"ModifierInvocation","src":"3211:65:27"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9465,"mutability":"mutable","name":"name_","nameLocation":"2898:5:27","nodeType":"VariableDeclaration","scope":9536,"src":"2884:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9464,"name":"string","nodeType":"ElementaryTypeName","src":"2884:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9467,"mutability":"mutable","name":"symbol_","nameLocation":"2927:7:27","nodeType":"VariableDeclaration","scope":9536,"src":"2913:21:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9466,"name":"string","nodeType":"ElementaryTypeName","src":"2913:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9469,"mutability":"mutable","name":"baseURI_","nameLocation":"2958:8:27","nodeType":"VariableDeclaration","scope":9536,"src":"2944:22:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9468,"name":"string","nodeType":"ElementaryTypeName","src":"2944:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9471,"mutability":"mutable","name":"contractMetadataURI_","nameLocation":"2990:20:27","nodeType":"VariableDeclaration","scope":9536,"src":"2976:34:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9470,"name":"string","nodeType":"ElementaryTypeName","src":"2976:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9473,"mutability":"mutable","name":"royaltyReceiver_","nameLocation":"3028:16:27","nodeType":"VariableDeclaration","scope":9536,"src":"3020:24:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9472,"name":"address","nodeType":"ElementaryTypeName","src":"3020:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9475,"mutability":"mutable","name":"royaltyFeeBasisPoints_","nameLocation":"3061:22:27","nodeType":"VariableDeclaration","scope":9536,"src":"3054:29:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":9474,"name":"uint96","nodeType":"ElementaryTypeName","src":"3054:6:27","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":9477,"mutability":"mutable","name":"initialAdmin_","nameLocation":"3101:13:27","nodeType":"VariableDeclaration","scope":9536,"src":"3093:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9476,"name":"address","nodeType":"ElementaryTypeName","src":"3093:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9479,"mutability":"mutable","name":"initialMinter_","nameLocation":"3132:14:27","nodeType":"VariableDeclaration","scope":9536,"src":"3124:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9478,"name":"address","nodeType":"ElementaryTypeName","src":"3124:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9481,"mutability":"mutable","name":"defaultAdminDelay_","nameLocation":"3163:18:27","nodeType":"VariableDeclaration","scope":9536,"src":"3156:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":9480,"name":"uint48","nodeType":"ElementaryTypeName","src":"3156:6:27","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2874:313:27"},"returnParameters":{"id":9491,"nodeType":"ParameterList","parameters":[],"src":"3277:0:27"},"scope":9702,"src":"2863:780:27","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9554,"nodeType":"Block","src":"4192:39:27","statements":[{"expression":{"arguments":[{"id":9550,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9539,"src":"4212:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9551,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9541,"src":"4216:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9549,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2232,2262],"referencedDeclaration":2232,"src":"4202:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4202:22:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9553,"nodeType":"ExpressionStatement","src":"4202:22:27"}]},"documentation":{"id":9537,"nodeType":"StructuredDocumentation","src":"3827:268:27","text":"@notice Mints a token with the given ID to the specified address.\n The caller must hold MINTER_ROLE. Reverts when paused.\n @param to Recipient address for the minted token.\n @param tokenId Token ID to mint. Must not already exist."},"functionSelector":"a1448194","id":9555,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9544,"name":"MINTER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9437,"src":"4165:11:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9545,"kind":"modifierInvocation","modifierName":{"id":9543,"name":"onlyRole","nameLocations":["4156:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4156:8:27"},"nodeType":"ModifierInvocation","src":"4156:21:27"},{"id":9547,"kind":"modifierInvocation","modifierName":{"id":9546,"name":"whenNotPaused","nameLocations":["4178:13:27"],"nodeType":"IdentifierPath","referencedDeclaration":3992,"src":"4178:13:27"},"nodeType":"ModifierInvocation","src":"4178:13:27"}],"name":"safeMint","nameLocation":"4109:8:27","nodeType":"FunctionDefinition","parameters":{"id":9542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9539,"mutability":"mutable","name":"to","nameLocation":"4126:2:27","nodeType":"VariableDeclaration","scope":9555,"src":"4118:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9538,"name":"address","nodeType":"ElementaryTypeName","src":"4118:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9541,"mutability":"mutable","name":"tokenId","nameLocation":"4138:7:27","nodeType":"VariableDeclaration","scope":9555,"src":"4130:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9540,"name":"uint256","nodeType":"ElementaryTypeName","src":"4130:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4117:29:27"},"returnParameters":{"id":9548,"nodeType":"ParameterList","parameters":[],"src":"4192:0:27"},"scope":9702,"src":"4100:131:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9577,"nodeType":"Block","src":"4636:144:27","statements":[{"assignments":[9565],"declarations":[{"constant":false,"id":9565,"mutability":"mutable","name":"previousURI","nameLocation":"4660:11:27","nodeType":"VariableDeclaration","scope":9577,"src":"4646:25:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9564,"name":"string","nodeType":"ElementaryTypeName","src":"4646:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":9567,"initialValue":{"id":9566,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"4674:13:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4646:41:27"},{"expression":{"id":9570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9568,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"4697:13:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9569,"name":"baseURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9558,"src":"4713:8:27","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"src":"4697:24:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":9571,"nodeType":"ExpressionStatement","src":"4697:24:27"},{"eventCall":{"arguments":[{"id":9573,"name":"previousURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9565,"src":"4751:11:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9574,"name":"baseURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9558,"src":"4764:8:27","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":9572,"name":"BaseURIUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9446,"src":"4736:14:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":9575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4736:37:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9576,"nodeType":"EmitStatement","src":"4731:42:27"}]},"documentation":{"id":9556,"nodeType":"StructuredDocumentation","src":"4427:120:27","text":"@notice Updates the base URI used to construct per-token metadata URIs.\n @param baseURI_ New base URI string."},"functionSelector":"55f804b3","id":9578,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9561,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"4616:18:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9562,"kind":"modifierInvocation","modifierName":{"id":9560,"name":"onlyRole","nameLocations":["4607:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4607:8:27"},"nodeType":"ModifierInvocation","src":"4607:28:27"}],"name":"setBaseURI","nameLocation":"4561:10:27","nodeType":"FunctionDefinition","parameters":{"id":9559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9558,"mutability":"mutable","name":"baseURI_","nameLocation":"4588:8:27","nodeType":"VariableDeclaration","scope":9578,"src":"4572:24:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":9557,"name":"string","nodeType":"ElementaryTypeName","src":"4572:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4571:26:27"},"returnParameters":{"id":9563,"nodeType":"ParameterList","parameters":[],"src":"4636:0:27"},"scope":9702,"src":"4552:228:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9600,"nodeType":"Block","src":"5042:186:27","statements":[{"assignments":[9588],"declarations":[{"constant":false,"id":9588,"mutability":"mutable","name":"previousURI","nameLocation":"5066:11:27","nodeType":"VariableDeclaration","scope":9600,"src":"5052:25:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9587,"name":"string","nodeType":"ElementaryTypeName","src":"5052:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":9590,"initialValue":{"id":9589,"name":"_contractMetadataURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"5080:20:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5052:48:27"},{"expression":{"id":9593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9591,"name":"_contractMetadataURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"5110:20:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9592,"name":"contractMetadataURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9581,"src":"5133:20:27","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"src":"5110:43:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":9594,"nodeType":"ExpressionStatement","src":"5110:43:27"},{"eventCall":{"arguments":[{"id":9596,"name":"previousURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"5187:11:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9597,"name":"contractMetadataURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9581,"src":"5200:20:27","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":9595,"name":"ContractURIUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9452,"src":"5168:18:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":9598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5168:53:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9599,"nodeType":"EmitStatement","src":"5163:58:27"}]},"documentation":{"id":9579,"nodeType":"StructuredDocumentation","src":"4786:151:27","text":"@notice Updates the collection-level metadata URI (OpenSea contractURI extension).\n @param contractMetadataURI_ New collection metadata URI."},"functionSelector":"938e3d7b","id":9601,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9584,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5022:18:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9585,"kind":"modifierInvocation","modifierName":{"id":9583,"name":"onlyRole","nameLocations":["5013:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"5013:8:27"},"nodeType":"ModifierInvocation","src":"5013:28:27"}],"name":"setContractURI","nameLocation":"4951:14:27","nodeType":"FunctionDefinition","parameters":{"id":9582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9581,"mutability":"mutable","name":"contractMetadataURI_","nameLocation":"4982:20:27","nodeType":"VariableDeclaration","scope":9601,"src":"4966:36:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":9580,"name":"string","nodeType":"ElementaryTypeName","src":"4966:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4965:38:27"},"returnParameters":{"id":9586,"nodeType":"ParameterList","parameters":[],"src":"5042:0:27"},"scope":9702,"src":"4942:286:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9632,"nodeType":"Block","src":"5559:181:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9612,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9604,"src":"5573:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5593:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5585:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9613,"name":"address","nodeType":"ElementaryTypeName","src":"5585:7:27","typeDescriptions":{}}},"id":9616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5585:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5573:22:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9621,"nodeType":"IfStatement","src":"5569:48:27","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9618,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9440,"src":"5604:11:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5604:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9620,"nodeType":"RevertStatement","src":"5597:20:27"}},{"expression":{"arguments":[{"id":9623,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9604,"src":"5646:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9624,"name":"feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9606,"src":"5656:14:27","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":9622,"name":"_setDefaultRoyalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"5627:18:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,uint96)"}},"id":9625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5627:44:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9626,"nodeType":"ExpressionStatement","src":"5627:44:27"},{"eventCall":{"arguments":[{"id":9628,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9604,"src":"5708:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9629,"name":"feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9606,"src":"5718:14:27","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":9627,"name":"DefaultRoyaltyUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9458,"src":"5686:21:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,uint96)"}},"id":9630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5686:47:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9631,"nodeType":"EmitStatement","src":"5681:52:27"}]},"documentation":{"id":9602,"nodeType":"StructuredDocumentation","src":"5234:217:27","text":"@notice Updates the default royalty receiver and fee for all tokens.\n @param receiver Address that receives royalty payments.\n @param feeBasisPoints Royalty fee in basis points (10 000 = 100%)."},"functionSelector":"02fa7c47","id":9633,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9609,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5539:18:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9610,"kind":"modifierInvocation","modifierName":{"id":9608,"name":"onlyRole","nameLocations":["5530:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"5530:8:27"},"nodeType":"ModifierInvocation","src":"5530:28:27"}],"name":"setRoyaltyInfo","nameLocation":"5465:14:27","nodeType":"FunctionDefinition","parameters":{"id":9607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9604,"mutability":"mutable","name":"receiver","nameLocation":"5488:8:27","nodeType":"VariableDeclaration","scope":9633,"src":"5480:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9603,"name":"address","nodeType":"ElementaryTypeName","src":"5480:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9606,"mutability":"mutable","name":"feeBasisPoints","nameLocation":"5505:14:27","nodeType":"VariableDeclaration","scope":9633,"src":"5498:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":9605,"name":"uint96","nodeType":"ElementaryTypeName","src":"5498:6:27","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"5479:41:27"},"returnParameters":{"id":9611,"nodeType":"ParameterList","parameters":[],"src":"5559:0:27"},"scope":9702,"src":"5456:284:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9643,"nodeType":"Block","src":"5860:25:27","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9640,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4050,"src":"5870:6:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5870:8:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9642,"nodeType":"ExpressionStatement","src":"5870:8:27"}]},"documentation":{"id":9634,"nodeType":"StructuredDocumentation","src":"5746:54:27","text":"@notice Pauses minting. Does not affect transfers."},"functionSelector":"8456cb59","id":9644,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9637,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5840:18:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9638,"kind":"modifierInvocation","modifierName":{"id":9636,"name":"onlyRole","nameLocations":["5831:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"5831:8:27"},"nodeType":"ModifierInvocation","src":"5831:28:27"}],"name":"pause","nameLocation":"5814:5:27","nodeType":"FunctionDefinition","parameters":{"id":9635,"nodeType":"ParameterList","parameters":[],"src":"5819:2:27"},"returnParameters":{"id":9639,"nodeType":"ParameterList","parameters":[],"src":"5860:0:27"},"scope":9702,"src":"5805:80:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9654,"nodeType":"Block","src":"5982:27:27","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9651,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"5992:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5992:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9653,"nodeType":"ExpressionStatement","src":"5992:10:27"}]},"documentation":{"id":9645,"nodeType":"StructuredDocumentation","src":"5891:29:27","text":"@notice Unpauses minting."},"functionSelector":"3f4ba83a","id":9655,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9648,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5962:18:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9649,"kind":"modifierInvocation","modifierName":{"id":9647,"name":"onlyRole","nameLocations":["5953:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"5953:8:27"},"nodeType":"ModifierInvocation","src":"5953:28:27"}],"name":"unpause","nameLocation":"5934:7:27","nodeType":"FunctionDefinition","parameters":{"id":9646,"nodeType":"ParameterList","parameters":[],"src":"5941:2:27"},"returnParameters":{"id":9650,"nodeType":"ParameterList","parameters":[],"src":"5982:0:27"},"scope":9702,"src":"5925:84:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9663,"nodeType":"Block","src":"6334:44:27","statements":[{"expression":{"id":9661,"name":"_contractMetadataURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"6351:20:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":9660,"id":9662,"nodeType":"Return","src":"6344:27:27"}]},"documentation":{"id":9656,"nodeType":"StructuredDocumentation","src":"6194:74:27","text":"@notice Returns the collection-level metadata URI (OpenSea extension)."},"functionSelector":"e8a3d485","id":9664,"implemented":true,"kind":"function","modifiers":[],"name":"contractURI","nameLocation":"6282:11:27","nodeType":"FunctionDefinition","parameters":{"id":9657,"nodeType":"ParameterList","parameters":[],"src":"6293:2:27"},"returnParameters":{"id":9660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9659,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9664,"src":"6319:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9658,"name":"string","nodeType":"ElementaryTypeName","src":"6319:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6318:15:27"},"scope":9702,"src":"6273:105:27","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9672,"nodeType":"Block","src":"6517:37:27","statements":[{"expression":{"id":9670,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"6534:13:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":9669,"id":9671,"nodeType":"Return","src":"6527:20:27"}]},"documentation":{"id":9665,"nodeType":"StructuredDocumentation","src":"6384:71:27","text":"@notice Returns the base URI used to construct token metadata URLs."},"functionSelector":"6c0360eb","id":9673,"implemented":true,"kind":"function","modifiers":[],"name":"baseURI","nameLocation":"6469:7:27","nodeType":"FunctionDefinition","parameters":{"id":9666,"nodeType":"ParameterList","parameters":[],"src":"6476:2:27"},"returnParameters":{"id":9669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9673,"src":"6502:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9667,"name":"string","nodeType":"ElementaryTypeName","src":"6502:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6501:15:27"},"scope":9702,"src":"6460:94:27","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1802],"body":{"id":9682,"nodeType":"Block","src":"6881:37:27","statements":[{"expression":{"id":9680,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"6898:13:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":9679,"id":9681,"nodeType":"Return","src":"6891:20:27"}]},"documentation":{"id":9674,"nodeType":"StructuredDocumentation","src":"6749:60:27","text":"@dev Returns the base URI used to build tokenURI values."},"id":9683,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"6823:8:27","nodeType":"FunctionDefinition","overrides":{"id":9676,"nodeType":"OverrideSpecifier","overrides":[],"src":"6848:8:27"},"parameters":{"id":9675,"nodeType":"ParameterList","parameters":[],"src":"6831:2:27"},"returnParameters":{"id":9679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9683,"src":"6866:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9677,"name":"string","nodeType":"ElementaryTypeName","src":"6866:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6865:15:27"},"scope":9702,"src":"6814:104:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[701,1698,2886],"body":{"id":9700,"nodeType":"Block","src":"7307:60:27","statements":[{"expression":{"arguments":[{"id":9697,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9686,"src":"7348:11:27","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":9695,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"7324:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TricksforBoosterNFT_$9702_$","typeString":"type(contract super TricksforBoosterNFT)"}},"id":9696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7330:17:27","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":701,"src":"7324:23:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":9698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7324:36:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9694,"id":9699,"nodeType":"Return","src":"7317:43:27"}]},"documentation":{"id":9684,"nodeType":"StructuredDocumentation","src":"7112:22:27","text":"@inheritdoc ERC165"},"functionSelector":"01ffc9a7","id":9701,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"7148:17:27","nodeType":"FunctionDefinition","overrides":{"id":9691,"nodeType":"OverrideSpecifier","overrides":[{"id":9688,"name":"ERC721","nameLocations":["7231:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"7231:6:27"},{"id":9689,"name":"ERC2981","nameLocations":["7239:7:27"],"nodeType":"IdentifierPath","referencedDeclaration":3076,"src":"7239:7:27"},{"id":9690,"name":"AccessControlDefaultAdminRules","nameLocations":["7248:30:27"],"nodeType":"IdentifierPath","referencedDeclaration":1331,"src":"7248:30:27"}],"src":"7222:57:27"},"parameters":{"id":9687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9686,"mutability":"mutable","name":"interfaceId","nameLocation":"7173:11:27","nodeType":"VariableDeclaration","scope":9701,"src":"7166:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9685,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7166:6:27","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7165:20:27"},"returnParameters":{"id":9694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9693,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9701,"src":"7297:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9692,"name":"bool","nodeType":"ElementaryTypeName","src":"7297:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7296:6:27"},"scope":9702,"src":"7139:228:27","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":9703,"src":"678:6691:27","usedErrors":[305,308,1343,1346,1351,1508,1513,1522,1527,1532,1539,1544,1549,2841,2846,2855,2862,3981,3984,7517,9440],"usedEvents":[317,326,335,1358,1361,1368,1371,2585,2594,2603,3973,3978,9446,9452,9458]}],"src":"32:7338:27"},"id":27},"contracts/TricksforBoosterStaking.sol":{"ast":{"absolutePath":"contracts/TricksforBoosterStaking.sol","exportedSymbols":{"Context":[3907],"IERC165":[5850],"IERC721":[2686],"IERC721Receiver":[2704],"Ownable":[526],"Ownable2Step":[612],"Pausable":[4067],"ReentrancyGuard":[4180],"StorageSlot":[4304],"TricksforBoosterStaking":[10372]},"id":10373,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9704,"literals":["solidity","^","0.8",".26"],"nodeType":"PragmaDirective","src":"32:24:28"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":9705,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10373,"sourceUnit":2687,"src":"58:58:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":9706,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10373,"sourceUnit":2705,"src":"117:66:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":9707,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10373,"sourceUnit":527,"src":"184:52:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable2Step.sol","file":"@openzeppelin/contracts/access/Ownable2Step.sol","id":9708,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10373,"sourceUnit":613,"src":"237:57:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","id":9709,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10373,"sourceUnit":4181,"src":"295:59:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Pausable.sol","file":"@openzeppelin/contracts/utils/Pausable.sol","id":9710,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10373,"sourceUnit":4068,"src":"355:52:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9712,"name":"Ownable2Step","nameLocations":["1498:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":612,"src":"1498:12:28"},"id":9713,"nodeType":"InheritanceSpecifier","src":"1498:12:28"},{"baseName":{"id":9714,"name":"ReentrancyGuard","nameLocations":["1512:15:28"],"nodeType":"IdentifierPath","referencedDeclaration":4180,"src":"1512:15:28"},"id":9715,"nodeType":"InheritanceSpecifier","src":"1512:15:28"},{"baseName":{"id":9716,"name":"Pausable","nameLocations":["1529:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":4067,"src":"1529:8:28"},"id":9717,"nodeType":"InheritanceSpecifier","src":"1529:8:28"},{"baseName":{"id":9718,"name":"IERC721Receiver","nameLocations":["1539:15:28"],"nodeType":"IdentifierPath","referencedDeclaration":2704,"src":"1539:15:28"},"id":9719,"nodeType":"InheritanceSpecifier","src":"1539:15:28"}],"canonicalName":"TricksforBoosterStaking","contractDependencies":[],"contractKind":"contract","documentation":{"id":9711,"nodeType":"StructuredDocumentation","src":"409:1053:28","text":"@title TricksforBoosterStaking\n @notice Custodial staking contract for Tricksfor Booster NFTs.\n Players transfer their NFTs into this contract to stake them and retrieve\n them when they unstake. Staking state and timestamps are recorded on-chain\n via integration-critical events consumed by the Tricksfor backend indexer.\n Responsibilities:\n - Accepting NFT custody during staking\n - Emitting TokenStaked / TokenUnstaked events for backend log processing\n - Providing read methods (isStaked, stakedOwnerOf) consistent with event state\n Not responsible for:\n - Reward calculation or distribution\n - Booster tier or multiplier classification\n - Game logic or settlement\n @dev Pause gates new staking only. Unstaking is always available so players can\n always recover their assets. emergencyWithdraw is an explicit, named, and\n event-emitting admin path — it is not hidden."},"fullyImplemented":true,"id":10372,"linearizedBaseContracts":[10372,2704,4067,4180,612,526,3907],"name":"TricksforBoosterStaking","nameLocation":"1471:23:28","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9720,"nodeType":"StructuredDocumentation","src":"1738:67:28","text":"@notice Caller does not own the token they are trying to stake."},"errorSelector":"59dc379f","id":9722,"name":"NotTokenOwner","nameLocation":"1816:13:28","nodeType":"ErrorDefinition","parameters":{"id":9721,"nodeType":"ParameterList","parameters":[],"src":"1829:2:28"},"src":"1810:22:28"},{"documentation":{"id":9723,"nodeType":"StructuredDocumentation","src":"1838:36:28","text":"@notice Token is already staked."},"errorSelector":"16e9ad8f","id":9725,"name":"TokenAlreadyStaked","nameLocation":"1885:18:28","nodeType":"ErrorDefinition","parameters":{"id":9724,"nodeType":"ParameterList","parameters":[],"src":"1903:2:28"},"src":"1879:27:28"},{"documentation":{"id":9726,"nodeType":"StructuredDocumentation","src":"1912:42:28","text":"@notice Token is not currently staked."},"errorSelector":"2926ef0c","id":9728,"name":"TokenNotStaked","nameLocation":"1965:14:28","nodeType":"ErrorDefinition","parameters":{"id":9727,"nodeType":"ParameterList","parameters":[],"src":"1979:2:28"},"src":"1959:23:28"},{"documentation":{"id":9729,"nodeType":"StructuredDocumentation","src":"1988:60:28","text":"@notice Caller is not the original staker of this token."},"errorSelector":"32dc95cb","id":9731,"name":"NotOriginalStaker","nameLocation":"2059:17:28","nodeType":"ErrorDefinition","parameters":{"id":9730,"nodeType":"ParameterList","parameters":[],"src":"2076:2:28"},"src":"2053:26:28"},{"documentation":{"id":9732,"nodeType":"StructuredDocumentation","src":"2085:71:28","text":"@notice Zero address supplied where a non-zero address is required."},"errorSelector":"d92e233d","id":9734,"name":"ZeroAddress","nameLocation":"2167:11:28","nodeType":"ErrorDefinition","parameters":{"id":9733,"nodeType":"ParameterList","parameters":[],"src":"2178:2:28"},"src":"2161:20:28"},{"documentation":{"id":9735,"nodeType":"StructuredDocumentation","src":"2187:60:28","text":"@notice Token received from an unsupported NFT contract."},"errorSelector":"de1db395","id":9737,"name":"UnsupportedNFTContract","nameLocation":"2258:22:28","nodeType":"ErrorDefinition","parameters":{"id":9736,"nodeType":"ParameterList","parameters":[],"src":"2280:2:28"},"src":"2252:31:28"},{"documentation":{"id":9738,"nodeType":"StructuredDocumentation","src":"2289:89:28","text":"@notice Emergency withdrawals can only return a tracked token to its original staker."},"errorSelector":"c56a3905","id":9740,"name":"InvalidEmergencyRecipient","nameLocation":"2389:25:28","nodeType":"ErrorDefinition","parameters":{"id":9739,"nodeType":"ParameterList","parameters":[],"src":"2414:2:28"},"src":"2383:34:28"},{"documentation":{"id":9741,"nodeType":"StructuredDocumentation","src":"2423:76:28","text":"@notice Rescue is only available for tokens that have no staking record."},"errorSelector":"82d272e3","id":9743,"name":"TokenIsTracked","nameLocation":"2510:14:28","nodeType":"ErrorDefinition","parameters":{"id":9742,"nodeType":"ParameterList","parameters":[],"src":"2524:2:28"},"src":"2504:23:28"},{"documentation":{"id":9744,"nodeType":"StructuredDocumentation","src":"2533:77:28","text":"@notice Rescue requires the staking contract to currently hold the token."},"errorSelector":"d79a486e","id":9746,"name":"TokenNotHeld","nameLocation":"2621:12:28","nodeType":"ErrorDefinition","parameters":{"id":9745,"nodeType":"ParameterList","parameters":[],"src":"2633:2:28"},"src":"2615:21:28"},{"anonymous":false,"documentation":{"id":9747,"nodeType":"StructuredDocumentation","src":"2882:246:28","text":"@notice Emitted when a token is successfully staked.\n @param staker The wallet address that owns and staked the token.\n @param tokenId The staked NFT token ID.\n @param stakedAt Block timestamp at the moment of staking."},"eventSelector":"6173e4d2d9dd52aae0ed37afed3adcf924a490639b759ca93d32dc43366c17d2","id":9755,"name":"TokenStaked","nameLocation":"3139:11:28","nodeType":"EventDefinition","parameters":{"id":9754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9749,"indexed":true,"mutability":"mutable","name":"staker","nameLocation":"3167:6:28","nodeType":"VariableDeclaration","scope":9755,"src":"3151:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9748,"name":"address","nodeType":"ElementaryTypeName","src":"3151:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9751,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3191:7:28","nodeType":"VariableDeclaration","scope":9755,"src":"3175:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9750,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9753,"indexed":false,"mutability":"mutable","name":"stakedAt","nameLocation":"3208:8:28","nodeType":"VariableDeclaration","scope":9755,"src":"3200:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9752,"name":"uint256","nodeType":"ElementaryTypeName","src":"3200:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3150:67:28"},"src":"3133:85:28"},{"anonymous":false,"documentation":{"id":9756,"nodeType":"StructuredDocumentation","src":"3224:280:28","text":"@notice Emitted when a token is successfully unstaked.\n @param staker The wallet address that originally staked (and receives back) the token.\n @param tokenId The unstaked NFT token ID.\n @param unstakedAt Block timestamp at the moment of unstaking."},"eventSelector":"563fc70fca9d440d883299c76a721644d5aca7c45df98aeb5292c4cb823579bf","id":9764,"name":"TokenUnstaked","nameLocation":"3515:13:28","nodeType":"EventDefinition","parameters":{"id":9763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9758,"indexed":true,"mutability":"mutable","name":"staker","nameLocation":"3545:6:28","nodeType":"VariableDeclaration","scope":9764,"src":"3529:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9757,"name":"address","nodeType":"ElementaryTypeName","src":"3529:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9760,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3569:7:28","nodeType":"VariableDeclaration","scope":9764,"src":"3553:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9759,"name":"uint256","nodeType":"ElementaryTypeName","src":"3553:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9762,"indexed":false,"mutability":"mutable","name":"unstakedAt","nameLocation":"3586:10:28","nodeType":"VariableDeclaration","scope":9764,"src":"3578:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9761,"name":"uint256","nodeType":"ElementaryTypeName","src":"3578:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3528:69:28"},"src":"3509:89:28"},{"anonymous":false,"documentation":{"id":9765,"nodeType":"StructuredDocumentation","src":"3604:525:28","text":"@notice Emitted when an owner-initiated emergency withdrawal occurs.\n This is the only admin path that moves a user's staked NFT without their consent.\n It is explicitly named, event-emitting, and documented here.\n @param originalStaker The wallet that originally staked the token.\n @param tokenId The affected NFT token ID.\n @param recipient The address that received the token.\n @param withdrawnAt Block timestamp at the moment of the withdrawal."},"eventSelector":"f4408f2b7cb3bb2b43ddb3715579eae68a12af5f2e6d938537db2be5e72f5f7d","id":9775,"name":"EmergencyWithdrawn","nameLocation":"4140:18:28","nodeType":"EventDefinition","parameters":{"id":9774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9767,"indexed":true,"mutability":"mutable","name":"originalStaker","nameLocation":"4184:14:28","nodeType":"VariableDeclaration","scope":9775,"src":"4168:30:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9766,"name":"address","nodeType":"ElementaryTypeName","src":"4168:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9769,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"4224:7:28","nodeType":"VariableDeclaration","scope":9775,"src":"4208:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9768,"name":"uint256","nodeType":"ElementaryTypeName","src":"4208:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9771,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"4257:9:28","nodeType":"VariableDeclaration","scope":9775,"src":"4241:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9770,"name":"address","nodeType":"ElementaryTypeName","src":"4241:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9773,"indexed":false,"mutability":"mutable","name":"withdrawnAt","nameLocation":"4284:11:28","nodeType":"VariableDeclaration","scope":9775,"src":"4276:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9772,"name":"uint256","nodeType":"ElementaryTypeName","src":"4276:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4158:143:28"},"src":"4134:168:28"},{"anonymous":false,"documentation":{"id":9776,"nodeType":"StructuredDocumentation","src":"4308:91:28","text":"@notice Emitted when an untracked NFT sent with transferFrom is recovered by the owner."},"eventSelector":"c27a1277308b3908a0fb998812a60b1da8911b8583f20bf8f98e5246db8c47ef","id":9784,"name":"UntrackedTokenRescued","nameLocation":"4410:21:28","nodeType":"EventDefinition","parameters":{"id":9783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9778,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"4448:9:28","nodeType":"VariableDeclaration","scope":9784,"src":"4432:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9777,"name":"address","nodeType":"ElementaryTypeName","src":"4432:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9780,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"4475:7:28","nodeType":"VariableDeclaration","scope":9784,"src":"4459:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9779,"name":"uint256","nodeType":"ElementaryTypeName","src":"4459:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9782,"indexed":false,"mutability":"mutable","name":"rescuedAt","nameLocation":"4492:9:28","nodeType":"VariableDeclaration","scope":9784,"src":"4484:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9781,"name":"uint256","nodeType":"ElementaryTypeName","src":"4484:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4431:71:28"},"src":"4404:99:28"},{"constant":false,"documentation":{"id":9785,"nodeType":"StructuredDocumentation","src":"4685:80:28","text":"@notice The ERC-721 NFT contract whose tokens this staking contract manages."},"functionSelector":"d56d229d","id":9788,"mutability":"immutable","name":"nftContract","nameLocation":"4795:11:28","nodeType":"VariableDeclaration","scope":10372,"src":"4770:36:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"},"typeName":{"id":9787,"nodeType":"UserDefinedTypeName","pathNode":{"id":9786,"name":"IERC721","nameLocations":["4770:7:28"],"nodeType":"IdentifierPath","referencedDeclaration":2686,"src":"4770:7:28"},"referencedDeclaration":2686,"src":"4770:7:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"visibility":"public"},{"constant":false,"documentation":{"id":9789,"nodeType":"StructuredDocumentation","src":"4813:81:28","text":"@dev Maps tokenId → original staker address. Zero address means not staked."},"id":9793,"mutability":"mutable","name":"_stakedBy","nameLocation":"4935:9:28","nodeType":"VariableDeclaration","scope":10372,"src":"4899:45:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":9792,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":9790,"name":"uint256","nodeType":"ElementaryTypeName","src":"4907:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"4899:27:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":9791,"name":"address","nodeType":"ElementaryTypeName","src":"4918:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"documentation":{"id":9794,"nodeType":"StructuredDocumentation","src":"4951:72:28","text":"@dev Maps tokenId → block.timestamp at which the token was staked."},"id":9798,"mutability":"mutable","name":"_stakedAt","nameLocation":"5064:9:28","nodeType":"VariableDeclaration","scope":10372,"src":"5028:45:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":9797,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":9795,"name":"uint256","nodeType":"ElementaryTypeName","src":"5036:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"5028:27:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":9796,"name":"uint256","nodeType":"ElementaryTypeName","src":"5047:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"documentation":{"id":9799,"nodeType":"StructuredDocumentation","src":"5080:68:28","text":"@dev Maps staker address → list of currently staked token IDs."},"id":9804,"mutability":"mutable","name":"_walletTokenIds","nameLocation":"5191:15:28","nodeType":"VariableDeclaration","scope":10372,"src":"5153:53:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[])"},"typeName":{"id":9803,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":9800,"name":"address","nodeType":"ElementaryTypeName","src":"5161:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5153:29:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":9801,"name":"uint256","nodeType":"ElementaryTypeName","src":"5172:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9802,"nodeType":"ArrayTypeName","src":"5172:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"visibility":"private"},{"constant":false,"documentation":{"id":9805,"nodeType":"StructuredDocumentation","src":"5213:76:28","text":"@dev Maps tokenId → index in _walletTokenIds[staker] for O(1) removal."},"id":9809,"mutability":"mutable","name":"_walletTokenIndex","nameLocation":"5330:17:28","nodeType":"VariableDeclaration","scope":10372,"src":"5294:53:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":9808,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":9806,"name":"uint256","nodeType":"ElementaryTypeName","src":"5302:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"5294:27:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":9807,"name":"uint256","nodeType":"ElementaryTypeName","src":"5313:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":9843,"nodeType":"Block","src":"5785:145:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9820,"name":"nftContract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"5799:12:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5823:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5815:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9821,"name":"address","nodeType":"ElementaryTypeName","src":"5815:7:28","typeDescriptions":{}}},"id":9824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5815:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5799:26:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9826,"name":"initialOwner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9814,"src":"5829:13:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5854:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5846:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9827,"name":"address","nodeType":"ElementaryTypeName","src":"5846:7:28","typeDescriptions":{}}},"id":9830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5846:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5829:27:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5799:57:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9836,"nodeType":"IfStatement","src":"5795:83:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9833,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9734,"src":"5865:11:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5865:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9835,"nodeType":"RevertStatement","src":"5858:20:28"}},{"expression":{"id":9841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9837,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9788,"src":"5888:11:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9839,"name":"nftContract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"5910:12:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9838,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"5902:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$2686_$","typeString":"type(contract IERC721)"}},"id":9840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5902:21:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"src":"5888:35:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":9842,"nodeType":"ExpressionStatement","src":"5888:35:28"}]},"documentation":{"id":9810,"nodeType":"StructuredDocumentation","src":"5536:164:28","text":"@param nftContract_ Address of the TricksforBoosterNFT contract.\n @param initialOwner_ Initial contract owner. Mainnet deployments should use a multisig."},"id":9844,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9817,"name":"initialOwner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9814,"src":"5770:13:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":9818,"kind":"baseConstructorSpecifier","modifierName":{"id":9816,"name":"Ownable","nameLocations":["5762:7:28"],"nodeType":"IdentifierPath","referencedDeclaration":526,"src":"5762:7:28"},"nodeType":"ModifierInvocation","src":"5762:22:28"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9812,"mutability":"mutable","name":"nftContract_","nameLocation":"5725:12:28","nodeType":"VariableDeclaration","scope":9844,"src":"5717:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9811,"name":"address","nodeType":"ElementaryTypeName","src":"5717:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9814,"mutability":"mutable","name":"initialOwner_","nameLocation":"5747:13:28","nodeType":"VariableDeclaration","scope":9844,"src":"5739:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9813,"name":"address","nodeType":"ElementaryTypeName","src":"5739:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5716:45:28"},"returnParameters":{"id":9819,"nodeType":"ParameterList","parameters":[],"src":"5785:0:28"},"scope":10372,"src":"5705:225:28","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9904,"nodeType":"Block","src":"6449:362:28","statements":[{"assignments":[9855],"declarations":[{"constant":false,"id":9855,"mutability":"mutable","name":"caller","nameLocation":"6467:6:28","nodeType":"VariableDeclaration","scope":9904,"src":"6459:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9854,"name":"address","nodeType":"ElementaryTypeName","src":"6459:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9858,"initialValue":{"expression":{"id":9856,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"6476:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6480:6:28","memberName":"sender","nodeType":"MemberAccess","src":"6476:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6459:27:28"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9859,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9793,"src":"6500:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":9861,"indexExpression":{"id":9860,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"6510:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6500:18:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6530:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6522:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9862,"name":"address","nodeType":"ElementaryTypeName","src":"6522:7:28","typeDescriptions":{}}},"id":9865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6522:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6500:32:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9870,"nodeType":"IfStatement","src":"6496:65:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9867,"name":"TokenAlreadyStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9725,"src":"6541:18:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6541:20:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9869,"nodeType":"RevertStatement","src":"6534:27:28"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9873,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"6595:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9871,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9788,"src":"6575:11:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":9872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6587:7:28","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":2619,"src":"6575:19:28","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":9874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6575:28:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9875,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9855,"src":"6607:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6575:38:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9880,"nodeType":"IfStatement","src":"6571:66:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9877,"name":"NotTokenOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9722,"src":"6622:13:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6622:15:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9879,"nodeType":"RevertStatement","src":"6615:22:28"}},{"expression":{"arguments":[{"id":9882,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9855,"src":"6661:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9883,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"6669:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9881,"name":"_recordStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10283,"src":"6648:12:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6648:29:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9885,"nodeType":"ExpressionStatement","src":"6648:29:28"},{"expression":{"arguments":[{"id":9889,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9855,"src":"6712:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9892,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"6728:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10372","typeString":"contract TricksforBoosterStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10372","typeString":"contract TricksforBoosterStaking"}],"id":9891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6720:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9890,"name":"address","nodeType":"ElementaryTypeName","src":"6720:7:28","typeDescriptions":{}}},"id":9893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6720:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9894,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"6735:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9886,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9788,"src":"6687:11:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":9888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6699:12:28","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2651,"src":"6687:24:28","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":9895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6687:56:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9896,"nodeType":"ExpressionStatement","src":"6687:56:28"},{"eventCall":{"arguments":[{"id":9898,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9855,"src":"6771:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9899,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"6779:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9900,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"6788:5:28","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6794:9:28","memberName":"timestamp","nodeType":"MemberAccess","src":"6788:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9897,"name":"TokenStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"6759:11:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":9902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6759:45:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9903,"nodeType":"EmitStatement","src":"6754:50:28"}]},"documentation":{"id":9845,"nodeType":"StructuredDocumentation","src":"6114:262:28","text":"@notice Stakes a Booster NFT. The caller must have first approved this contract\n (or set approval for all) on the NFT contract.\n Custody of the token is transferred to this contract.\n @param tokenId The token ID to stake."},"functionSelector":"a694fc3a","id":9905,"implemented":true,"kind":"function","modifiers":[{"id":9850,"kind":"modifierInvocation","modifierName":{"id":9849,"name":"nonReentrant","nameLocations":["6422:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":4110,"src":"6422:12:28"},"nodeType":"ModifierInvocation","src":"6422:12:28"},{"id":9852,"kind":"modifierInvocation","modifierName":{"id":9851,"name":"whenNotPaused","nameLocations":["6435:13:28"],"nodeType":"IdentifierPath","referencedDeclaration":3992,"src":"6435:13:28"},"nodeType":"ModifierInvocation","src":"6435:13:28"}],"name":"stake","nameLocation":"6390:5:28","nodeType":"FunctionDefinition","parameters":{"id":9848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9847,"mutability":"mutable","name":"tokenId","nameLocation":"6404:7:28","nodeType":"VariableDeclaration","scope":9905,"src":"6396:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9846,"name":"uint256","nodeType":"ElementaryTypeName","src":"6396:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6395:17:28"},"returnParameters":{"id":9853,"nodeType":"ParameterList","parameters":[],"src":"6449:0:28"},"scope":10372,"src":"6381:430:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2703],"body":{"id":9972,"nodeType":"Block","src":"7681:372:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9923,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"7695:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7699:6:28","memberName":"sender","nodeType":"MemberAccess","src":"7695:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":9927,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9788,"src":"7717:11:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}],"id":9926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7709:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9925,"name":"address","nodeType":"ElementaryTypeName","src":"7709:7:28","typeDescriptions":{}}},"id":9928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7709:20:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7695:34:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9933,"nodeType":"IfStatement","src":"7691:71:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9930,"name":"UnsupportedNFTContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9737,"src":"7738:22:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7738:24:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9932,"nodeType":"RevertStatement","src":"7731:31:28"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9934,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9910,"src":"7776:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7792:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7784:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9935,"name":"address","nodeType":"ElementaryTypeName","src":"7784:7:28","typeDescriptions":{}}},"id":9938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7784:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7776:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9943,"nodeType":"IfStatement","src":"7772:44:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9940,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9734,"src":"7803:11:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7803:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9942,"nodeType":"RevertStatement","src":"7796:20:28"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9944,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9793,"src":"7830:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":9946,"indexExpression":{"id":9945,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9912,"src":"7840:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7830:18:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7860:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9948,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7852:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9947,"name":"address","nodeType":"ElementaryTypeName","src":"7852:7:28","typeDescriptions":{}}},"id":9950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7852:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7830:32:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9955,"nodeType":"IfStatement","src":"7826:65:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9952,"name":"TokenAlreadyStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9725,"src":"7871:18:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7871:20:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9954,"nodeType":"RevertStatement","src":"7864:27:28"}},{"expression":{"arguments":[{"id":9957,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9910,"src":"7915:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9958,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9912,"src":"7921:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9956,"name":"_recordStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10283,"src":"7902:12:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7902:27:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9960,"nodeType":"ExpressionStatement","src":"7902:27:28"},{"eventCall":{"arguments":[{"id":9962,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9910,"src":"7956:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9963,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9912,"src":"7962:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9964,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"7971:5:28","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7977:9:28","memberName":"timestamp","nodeType":"MemberAccess","src":"7971:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9961,"name":"TokenStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"7944:11:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":9966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7944:43:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9967,"nodeType":"EmitStatement","src":"7939:48:28"},{"expression":{"expression":{"expression":{"id":9968,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"8005:15:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$2704_$","typeString":"type(contract IERC721Receiver)"}},"id":9969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8021:16:28","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2703,"src":"8005:32:28","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":9970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8038:8:28","memberName":"selector","nodeType":"MemberAccess","src":"8005:41:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":9922,"id":9971,"nodeType":"Return","src":"7998:48:28"}]},"documentation":{"id":9906,"nodeType":"StructuredDocumentation","src":"6817:660:28","text":"@notice Handles the receipt of a Booster NFT transferred via safeTransferFrom.\n Only accepts tokens from the configured nftContract; reverts for all others.\n Records `from` as the staker and emits TokenStaked — functionally equivalent\n to calling stake() but triggered by safeTransferFrom rather than approve+stake.\n Not available while paused (mirrors stake() pause behaviour).\n @param from The address that previously owned the token (recorded as staker).\n @param tokenId The token ID being transferred.\n @return The ERC-721 receiver magic value confirming acceptance."},"functionSelector":"150b7a02","id":9973,"implemented":true,"kind":"function","modifiers":[{"id":9917,"kind":"modifierInvocation","modifierName":{"id":9916,"name":"nonReentrant","nameLocations":["7637:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":4110,"src":"7637:12:28"},"nodeType":"ModifierInvocation","src":"7637:12:28"},{"id":9919,"kind":"modifierInvocation","modifierName":{"id":9918,"name":"whenNotPaused","nameLocations":["7650:13:28"],"nodeType":"IdentifierPath","referencedDeclaration":3992,"src":"7650:13:28"},"nodeType":"ModifierInvocation","src":"7650:13:28"}],"name":"onERC721Received","nameLocation":"7491:16:28","nodeType":"FunctionDefinition","parameters":{"id":9915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9973,"src":"7517:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9907,"name":"address","nodeType":"ElementaryTypeName","src":"7517:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9910,"mutability":"mutable","name":"from","nameLocation":"7557:4:28","nodeType":"VariableDeclaration","scope":9973,"src":"7549:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9909,"name":"address","nodeType":"ElementaryTypeName","src":"7549:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9912,"mutability":"mutable","name":"tokenId","nameLocation":"7579:7:28","nodeType":"VariableDeclaration","scope":9973,"src":"7571:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9911,"name":"uint256","nodeType":"ElementaryTypeName","src":"7571:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9914,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9973,"src":"7596:14:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9913,"name":"bytes","nodeType":"ElementaryTypeName","src":"7596:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7507:120:28"},"returnParameters":{"id":9922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9921,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9973,"src":"7673:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9920,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7673:6:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7672:8:28"},"scope":10372,"src":"7482:571:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10030,"nodeType":"Block","src":"8339:381:28","statements":[{"assignments":[9982],"declarations":[{"constant":false,"id":9982,"mutability":"mutable","name":"originalStaker","nameLocation":"8357:14:28","nodeType":"VariableDeclaration","scope":10030,"src":"8349:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9981,"name":"address","nodeType":"ElementaryTypeName","src":"8349:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9986,"initialValue":{"baseExpression":{"id":9983,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9793,"src":"8374:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":9985,"indexExpression":{"id":9984,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9976,"src":"8384:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8374:18:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8349:43:28"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9987,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"8406:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8432:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8424:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9988,"name":"address","nodeType":"ElementaryTypeName","src":"8424:7:28","typeDescriptions":{}}},"id":9991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8424:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8406:28:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9996,"nodeType":"IfStatement","src":"8402:57:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9993,"name":"TokenNotStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"8443:14:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:16:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9995,"nodeType":"RevertStatement","src":"8436:23:28"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9997,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"8473:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":9998,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"8491:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8495:6:28","memberName":"sender","nodeType":"MemberAccess","src":"8491:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8473:28:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10004,"nodeType":"IfStatement","src":"8469:60:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10001,"name":"NotOriginalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"8510:17:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8510:19:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10003,"nodeType":"RevertStatement","src":"8503:26:28"}},{"expression":{"arguments":[{"id":10006,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"8552:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10007,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9976,"src":"8568:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10005,"name":"_clearStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10307,"src":"8540:11:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8540:36:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10009,"nodeType":"ExpressionStatement","src":"8540:36:28"},{"expression":{"arguments":[{"arguments":[{"id":10015,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"8619:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10372","typeString":"contract TricksforBoosterStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10372","typeString":"contract TricksforBoosterStaking"}],"id":10014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8611:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10013,"name":"address","nodeType":"ElementaryTypeName","src":"8611:7:28","typeDescriptions":{}}},"id":10016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8611:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10017,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"8626:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8630:6:28","memberName":"sender","nodeType":"MemberAccess","src":"8626:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10019,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9976,"src":"8638:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10010,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9788,"src":"8586:11:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8598:12:28","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2651,"src":"8586:24:28","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":10020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8586:60:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10021,"nodeType":"ExpressionStatement","src":"8586:60:28"},{"eventCall":{"arguments":[{"expression":{"id":10023,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"8676:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8680:6:28","memberName":"sender","nodeType":"MemberAccess","src":"8676:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10025,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9976,"src":"8688:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10026,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"8697:5:28","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8703:9:28","memberName":"timestamp","nodeType":"MemberAccess","src":"8697:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10022,"name":"TokenUnstaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9764,"src":"8662:13:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":10028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8662:51:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10029,"nodeType":"EmitStatement","src":"8657:56:28"}]},"documentation":{"id":9974,"nodeType":"StructuredDocumentation","src":"8059:219:28","text":"@notice Unstakes a Booster NFT and returns it to the original staker.\n Always available — not gated by pause — so players can always recover assets.\n @param tokenId The token ID to unstake."},"functionSelector":"2e17de78","id":10031,"implemented":true,"kind":"function","modifiers":[{"id":9979,"kind":"modifierInvocation","modifierName":{"id":9978,"name":"nonReentrant","nameLocations":["8326:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":4110,"src":"8326:12:28"},"nodeType":"ModifierInvocation","src":"8326:12:28"}],"name":"unstake","nameLocation":"8292:7:28","nodeType":"FunctionDefinition","parameters":{"id":9977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9976,"mutability":"mutable","name":"tokenId","nameLocation":"8308:7:28","nodeType":"VariableDeclaration","scope":10031,"src":"8300:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9975,"name":"uint256","nodeType":"ElementaryTypeName","src":"8300:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8299:17:28"},"returnParameters":{"id":9980,"nodeType":"ParameterList","parameters":[],"src":"8339:0:28"},"scope":10372,"src":"8283:437:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10100,"nodeType":"Block","src":"9562:466:28","statements":[{"assignments":[10044],"declarations":[{"constant":false,"id":10044,"mutability":"mutable","name":"originalStaker","nameLocation":"9580:14:28","nodeType":"VariableDeclaration","scope":10100,"src":"9572:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10043,"name":"address","nodeType":"ElementaryTypeName","src":"9572:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10048,"initialValue":{"baseExpression":{"id":10045,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9793,"src":"9597:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10047,"indexExpression":{"id":10046,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"9607:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9597:18:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9572:43:28"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10049,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10044,"src":"9629:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9655:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9647:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10050,"name":"address","nodeType":"ElementaryTypeName","src":"9647:7:28","typeDescriptions":{}}},"id":10053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9647:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9629:28:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10058,"nodeType":"IfStatement","src":"9625:57:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10055,"name":"TokenNotStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"9666:14:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9666:16:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10057,"nodeType":"RevertStatement","src":"9659:23:28"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10059,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10036,"src":"9696:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9717:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9709:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10060,"name":"address","nodeType":"ElementaryTypeName","src":"9709:7:28","typeDescriptions":{}}},"id":10063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9709:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9696:23:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10068,"nodeType":"IfStatement","src":"9692:49:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10065,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9734,"src":"9728:11:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9728:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10067,"nodeType":"RevertStatement","src":"9721:20:28"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10069,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10036,"src":"9755:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10070,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10044,"src":"9768:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9755:27:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10075,"nodeType":"IfStatement","src":"9751:67:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10072,"name":"InvalidEmergencyRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9740,"src":"9791:25:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9791:27:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10074,"nodeType":"RevertStatement","src":"9784:34:28"}},{"expression":{"arguments":[{"id":10077,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10044,"src":"9841:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10078,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"9857:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10076,"name":"_clearStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10307,"src":"9829:11:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9829:36:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10080,"nodeType":"ExpressionStatement","src":"9829:36:28"},{"expression":{"arguments":[{"arguments":[{"id":10086,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"9908:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10372","typeString":"contract TricksforBoosterStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10372","typeString":"contract TricksforBoosterStaking"}],"id":10085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9900:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10084,"name":"address","nodeType":"ElementaryTypeName","src":"9900:7:28","typeDescriptions":{}}},"id":10087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9900:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10088,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10036,"src":"9915:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10089,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"9926:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10081,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9788,"src":"9875:11:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9887:12:28","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2651,"src":"9875:24:28","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":10090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9875:59:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10091,"nodeType":"ExpressionStatement","src":"9875:59:28"},{"eventCall":{"arguments":[{"id":10093,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10044,"src":"9969:14:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"9985:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10095,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10036,"src":"9994:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10096,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"10005:5:28","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10011:9:28","memberName":"timestamp","nodeType":"MemberAccess","src":"10005:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10092,"name":"EmergencyWithdrawn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9775,"src":"9950:18:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,uint256)"}},"id":10098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9950:71:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10099,"nodeType":"EmitStatement","src":"9945:76:28"}]},"documentation":{"id":10032,"nodeType":"StructuredDocumentation","src":"8927:535:28","text":"@notice Emergency withdrawal of a staked token by the contract owner.\n Use only in exceptional circumstances (e.g., critical contract bug).\n This is the only admin path that moves a user's staked NFT without their\n direct action. It is explicitly named, emits EmergencyWithdrawn, and is\n documented in this contract and the project's architecture documentation.\n @param tokenId The token ID to withdraw.\n @param recipient The address to send the token to."},"functionSelector":"2f940c70","id":10101,"implemented":true,"kind":"function","modifiers":[{"id":10039,"kind":"modifierInvocation","modifierName":{"id":10038,"name":"onlyOwner","nameLocations":["9539:9:28"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"9539:9:28"},"nodeType":"ModifierInvocation","src":"9539:9:28"},{"id":10041,"kind":"modifierInvocation","modifierName":{"id":10040,"name":"nonReentrant","nameLocations":["9549:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":4110,"src":"9549:12:28"},"nodeType":"ModifierInvocation","src":"9549:12:28"}],"name":"emergencyWithdraw","nameLocation":"9476:17:28","nodeType":"FunctionDefinition","parameters":{"id":10037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10034,"mutability":"mutable","name":"tokenId","nameLocation":"9502:7:28","nodeType":"VariableDeclaration","scope":10101,"src":"9494:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10033,"name":"uint256","nodeType":"ElementaryTypeName","src":"9494:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10036,"mutability":"mutable","name":"recipient","nameLocation":"9519:9:28","nodeType":"VariableDeclaration","scope":10101,"src":"9511:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10035,"name":"address","nodeType":"ElementaryTypeName","src":"9511:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9493:36:28"},"returnParameters":{"id":10042,"nodeType":"ParameterList","parameters":[],"src":"9562:0:28"},"scope":10372,"src":"9467:561:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10166,"nodeType":"Block","src":"10444:362:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10113,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10106,"src":"10458:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10479:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10471:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10114,"name":"address","nodeType":"ElementaryTypeName","src":"10471:7:28","typeDescriptions":{}}},"id":10117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10471:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10458:23:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10122,"nodeType":"IfStatement","src":"10454:49:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10119,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9734,"src":"10490:11:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10490:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10121,"nodeType":"RevertStatement","src":"10483:20:28"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10123,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9793,"src":"10517:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10125,"indexExpression":{"id":10124,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10104,"src":"10527:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10517:18:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10547:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10127,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10539:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10126,"name":"address","nodeType":"ElementaryTypeName","src":"10539:7:28","typeDescriptions":{}}},"id":10129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10539:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10517:32:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10134,"nodeType":"IfStatement","src":"10513:61:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10131,"name":"TokenIsTracked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"10558:14:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10558:16:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10133,"nodeType":"RevertStatement","src":"10551:23:28"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10137,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10104,"src":"10608:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10135,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9788,"src":"10588:11:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10600:7:28","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":2619,"src":"10588:19:28","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":10138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10588:28:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10141,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"10628:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10372","typeString":"contract TricksforBoosterStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10372","typeString":"contract TricksforBoosterStaking"}],"id":10140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10620:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10139,"name":"address","nodeType":"ElementaryTypeName","src":"10620:7:28","typeDescriptions":{}}},"id":10142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10620:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10588:45:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10147,"nodeType":"IfStatement","src":"10584:72:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10144,"name":"TokenNotHeld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9746,"src":"10642:12:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10642:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10146,"nodeType":"RevertStatement","src":"10635:21:28"}},{"expression":{"arguments":[{"arguments":[{"id":10153,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"10700:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10372","typeString":"contract TricksforBoosterStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10372","typeString":"contract TricksforBoosterStaking"}],"id":10152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10692:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10151,"name":"address","nodeType":"ElementaryTypeName","src":"10692:7:28","typeDescriptions":{}}},"id":10154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10692:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10155,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10106,"src":"10707:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10156,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10104,"src":"10718:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10148,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9788,"src":"10667:11:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10679:12:28","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2651,"src":"10667:24:28","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":10157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10667:59:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10158,"nodeType":"ExpressionStatement","src":"10667:59:28"},{"eventCall":{"arguments":[{"id":10160,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10106,"src":"10763:9:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10161,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10104,"src":"10774:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10162,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"10783:5:28","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10789:9:28","memberName":"timestamp","nodeType":"MemberAccess","src":"10783:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10159,"name":"UntrackedTokenRescued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9784,"src":"10741:21:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":10164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10741:58:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10165,"nodeType":"EmitStatement","src":"10736:63:28"}]},"documentation":{"id":10102,"nodeType":"StructuredDocumentation","src":"10034:307:28","text":"@notice Recovers an NFT that was sent directly with transferFrom and therefore did\n not invoke onERC721Received or create a staking record.\n @param tokenId The untracked token held by this contract.\n @param recipient The non-zero address that receives the recovered token."},"functionSelector":"0fa6f642","id":10167,"implemented":true,"kind":"function","modifiers":[{"id":10109,"kind":"modifierInvocation","modifierName":{"id":10108,"name":"onlyOwner","nameLocations":["10421:9:28"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"10421:9:28"},"nodeType":"ModifierInvocation","src":"10421:9:28"},{"id":10111,"kind":"modifierInvocation","modifierName":{"id":10110,"name":"nonReentrant","nameLocations":["10431:12:28"],"nodeType":"IdentifierPath","referencedDeclaration":4110,"src":"10431:12:28"},"nodeType":"ModifierInvocation","src":"10431:12:28"}],"name":"rescueUntrackedToken","nameLocation":"10355:20:28","nodeType":"FunctionDefinition","parameters":{"id":10107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10104,"mutability":"mutable","name":"tokenId","nameLocation":"10384:7:28","nodeType":"VariableDeclaration","scope":10167,"src":"10376:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10103,"name":"uint256","nodeType":"ElementaryTypeName","src":"10376:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10106,"mutability":"mutable","name":"recipient","nameLocation":"10401:9:28","nodeType":"VariableDeclaration","scope":10167,"src":"10393:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10105,"name":"address","nodeType":"ElementaryTypeName","src":"10393:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10375:36:28"},"returnParameters":{"id":10112,"nodeType":"ParameterList","parameters":[],"src":"10444:0:28"},"scope":10372,"src":"10346:460:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10176,"nodeType":"Block","src":"11102:25:28","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10173,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4050,"src":"11112:6:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11112:8:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10175,"nodeType":"ExpressionStatement","src":"11112:8:28"}]},"documentation":{"id":10168,"nodeType":"StructuredDocumentation","src":"10988:73:28","text":"@notice Pauses new staking. Unstaking remains available while paused."},"functionSelector":"8456cb59","id":10177,"implemented":true,"kind":"function","modifiers":[{"id":10171,"kind":"modifierInvocation","modifierName":{"id":10170,"name":"onlyOwner","nameLocations":["11092:9:28"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"11092:9:28"},"nodeType":"ModifierInvocation","src":"11092:9:28"}],"name":"pause","nameLocation":"11075:5:28","nodeType":"FunctionDefinition","parameters":{"id":10169,"nodeType":"ParameterList","parameters":[],"src":"11080:2:28"},"returnParameters":{"id":10172,"nodeType":"ParameterList","parameters":[],"src":"11102:0:28"},"scope":10372,"src":"11066:61:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10186,"nodeType":"Block","src":"11205:27:28","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10183,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"11215:8:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11215:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10185,"nodeType":"ExpressionStatement","src":"11215:10:28"}]},"documentation":{"id":10178,"nodeType":"StructuredDocumentation","src":"11133:29:28","text":"@notice Unpauses staking."},"functionSelector":"3f4ba83a","id":10187,"implemented":true,"kind":"function","modifiers":[{"id":10181,"kind":"modifierInvocation","modifierName":{"id":10180,"name":"onlyOwner","nameLocations":["11195:9:28"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"11195:9:28"},"nodeType":"ModifierInvocation","src":"11195:9:28"}],"name":"unpause","nameLocation":"11176:7:28","nodeType":"FunctionDefinition","parameters":{"id":10179,"nodeType":"ParameterList","parameters":[],"src":"11183:2:28"},"returnParameters":{"id":10182,"nodeType":"ParameterList","parameters":[],"src":"11205:0:28"},"scope":10372,"src":"11167:65:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10204,"nodeType":"Block","src":"11637:56:28","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10195,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9793,"src":"11654:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10197,"indexExpression":{"id":10196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"11664:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11654:18:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11684:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11676:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10198,"name":"address","nodeType":"ElementaryTypeName","src":"11676:7:28","typeDescriptions":{}}},"id":10201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11676:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11654:32:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10194,"id":10203,"nodeType":"Return","src":"11647:39:28"}]},"documentation":{"id":10188,"nodeType":"StructuredDocumentation","src":"11458:110:28","text":"@notice Returns true if the given token is currently staked.\n @param tokenId The token ID to query."},"functionSelector":"baa51f86","id":10205,"implemented":true,"kind":"function","modifiers":[],"name":"isStaked","nameLocation":"11582:8:28","nodeType":"FunctionDefinition","parameters":{"id":10191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10190,"mutability":"mutable","name":"tokenId","nameLocation":"11599:7:28","nodeType":"VariableDeclaration","scope":10205,"src":"11591:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10189,"name":"uint256","nodeType":"ElementaryTypeName","src":"11591:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11590:17:28"},"returnParameters":{"id":10194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10193,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10205,"src":"11631:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10192,"name":"bool","nodeType":"ElementaryTypeName","src":"11631:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11630:6:28"},"scope":10372,"src":"11573:120:28","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10217,"nodeType":"Block","src":"11959:42:28","statements":[{"expression":{"baseExpression":{"id":10213,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9793,"src":"11976:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10215,"indexExpression":{"id":10214,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10208,"src":"11986:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11976:18:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10212,"id":10216,"nodeType":"Return","src":"11969:25:28"}]},"documentation":{"id":10206,"nodeType":"StructuredDocumentation","src":"11699:183:28","text":"@notice Returns the original staker of a currently staked token.\n Returns the zero address if the token is not staked.\n @param tokenId The token ID to query."},"functionSelector":"1dcac94d","id":10218,"implemented":true,"kind":"function","modifiers":[],"name":"stakedOwnerOf","nameLocation":"11896:13:28","nodeType":"FunctionDefinition","parameters":{"id":10209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10208,"mutability":"mutable","name":"tokenId","nameLocation":"11918:7:28","nodeType":"VariableDeclaration","scope":10218,"src":"11910:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10207,"name":"uint256","nodeType":"ElementaryTypeName","src":"11910:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11909:17:28"},"returnParameters":{"id":10212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10211,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10218,"src":"11950:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10210,"name":"address","nodeType":"ElementaryTypeName","src":"11950:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11949:9:28"},"scope":10372,"src":"11887:114:28","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10230,"nodeType":"Block","src":"12262:42:28","statements":[{"expression":{"baseExpression":{"id":10226,"name":"_stakedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"12279:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10228,"indexExpression":{"id":10227,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10221,"src":"12289:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12279:18:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10225,"id":10229,"nodeType":"Return","src":"12272:25:28"}]},"documentation":{"id":10219,"nodeType":"StructuredDocumentation","src":"12007:181:28","text":"@notice Returns the block timestamp at which a token was staked.\n Returns zero if the token is not currently staked.\n @param tokenId The token ID to query."},"functionSelector":"1b3253b0","id":10231,"implemented":true,"kind":"function","modifiers":[],"name":"stakedAtOf","nameLocation":"12202:10:28","nodeType":"FunctionDefinition","parameters":{"id":10222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10221,"mutability":"mutable","name":"tokenId","nameLocation":"12221:7:28","nodeType":"VariableDeclaration","scope":10231,"src":"12213:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10220,"name":"uint256","nodeType":"ElementaryTypeName","src":"12213:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12212:17:28"},"returnParameters":{"id":10225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10231,"src":"12253:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10223,"name":"uint256","nodeType":"ElementaryTypeName","src":"12253:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12252:9:28"},"scope":10372,"src":"12193:111:28","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10244,"nodeType":"Block","src":"12841:47:28","statements":[{"expression":{"baseExpression":{"id":10240,"name":"_walletTokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9804,"src":"12858:15:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":10242,"indexExpression":{"id":10241,"name":"wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10234,"src":"12874:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12858:23:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"functionReturnParameters":10239,"id":10243,"nodeType":"Return","src":"12851:30:28"}]},"documentation":{"id":10232,"nodeType":"StructuredDocumentation","src":"12310:438:28","text":"@notice Returns the list of token IDs currently staked by the given wallet.\n @dev Ordering is not guaranteed. Tokens are stored in an array with swap-and-pop\n removal: when a token is unstaked or emergency-withdrawn, the last element\n in the array takes its position. Do not rely on index stability across\n state-changing transactions.\n @param wallet The address to query."},"functionSelector":"2b4bc300","id":10245,"implemented":true,"kind":"function","modifiers":[],"name":"getWalletStakedTokens","nameLocation":"12762:21:28","nodeType":"FunctionDefinition","parameters":{"id":10235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10234,"mutability":"mutable","name":"wallet","nameLocation":"12792:6:28","nodeType":"VariableDeclaration","scope":10245,"src":"12784:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10233,"name":"address","nodeType":"ElementaryTypeName","src":"12784:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12783:16:28"},"returnParameters":{"id":10239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10238,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10245,"src":"12823:16:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10236,"name":"uint256","nodeType":"ElementaryTypeName","src":"12823:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10237,"nodeType":"ArrayTypeName","src":"12823:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12822:18:28"},"scope":10372,"src":"12753:135:28","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10282,"nodeType":"Block","src":"13222:206:28","statements":[{"expression":{"id":10257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10253,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9793,"src":"13232:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10255,"indexExpression":{"id":10254,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"13242:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13232:18:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10256,"name":"staker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"13253:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13232:27:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10258,"nodeType":"ExpressionStatement","src":"13232:27:28"},{"expression":{"id":10264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10259,"name":"_stakedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"13269:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10261,"indexExpression":{"id":10260,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"13279:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13269:18:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10262,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"13290:5:28","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13296:9:28","memberName":"timestamp","nodeType":"MemberAccess","src":"13290:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13269:36:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10265,"nodeType":"ExpressionStatement","src":"13269:36:28"},{"expression":{"id":10273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10266,"name":"_walletTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9809,"src":"13315:17:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10268,"indexExpression":{"id":10267,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"13333:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13315:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":10269,"name":"_walletTokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9804,"src":"13344:15:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":10271,"indexExpression":{"id":10270,"name":"staker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"13360:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13344:23:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":10272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13368:6:28","memberName":"length","nodeType":"MemberAccess","src":"13344:30:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13315:59:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10274,"nodeType":"ExpressionStatement","src":"13315:59:28"},{"expression":{"arguments":[{"id":10279,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"13413:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":10275,"name":"_walletTokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9804,"src":"13384:15:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":10277,"indexExpression":{"id":10276,"name":"staker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"13400:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13384:23:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":10278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13408:4:28","memberName":"push","nodeType":"MemberAccess","src":"13384:28:28","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":10280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13384:37:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10281,"nodeType":"ExpressionStatement","src":"13384:37:28"}]},"documentation":{"id":10246,"nodeType":"StructuredDocumentation","src":"13081:72:28","text":"@dev Records all staking state for a token being staked by `staker`."},"id":10283,"implemented":true,"kind":"function","modifiers":[],"name":"_recordStake","nameLocation":"13167:12:28","nodeType":"FunctionDefinition","parameters":{"id":10251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10248,"mutability":"mutable","name":"staker","nameLocation":"13188:6:28","nodeType":"VariableDeclaration","scope":10283,"src":"13180:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10247,"name":"address","nodeType":"ElementaryTypeName","src":"13180:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10250,"mutability":"mutable","name":"tokenId","nameLocation":"13204:7:28","nodeType":"VariableDeclaration","scope":10283,"src":"13196:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10249,"name":"uint256","nodeType":"ElementaryTypeName","src":"13196:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13179:33:28"},"returnParameters":{"id":10252,"nodeType":"ParameterList","parameters":[],"src":"13222:0:28"},"scope":10372,"src":"13158:270:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10306,"nodeType":"Block","src":"13577:121:28","statements":[{"expression":{"id":10294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13587:25:28","subExpression":{"baseExpression":{"id":10291,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9793,"src":"13594:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10293,"indexExpression":{"id":10292,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10288,"src":"13604:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13594:18:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10295,"nodeType":"ExpressionStatement","src":"13587:25:28"},{"expression":{"id":10299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13622:25:28","subExpression":{"baseExpression":{"id":10296,"name":"_stakedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"13629:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10298,"indexExpression":{"id":10297,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10288,"src":"13639:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13629:18:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10300,"nodeType":"ExpressionStatement","src":"13622:25:28"},{"expression":{"arguments":[{"id":10302,"name":"staker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10286,"src":"13675:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10303,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10288,"src":"13683:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10301,"name":"_removeFromWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10371,"src":"13657:17:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13657:34:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10305,"nodeType":"ExpressionStatement","src":"13657:34:28"}]},"documentation":{"id":10284,"nodeType":"StructuredDocumentation","src":"13434:75:28","text":"@dev Clears all staking state for a token being unstaked from `staker`."},"id":10307,"implemented":true,"kind":"function","modifiers":[],"name":"_clearStake","nameLocation":"13523:11:28","nodeType":"FunctionDefinition","parameters":{"id":10289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10286,"mutability":"mutable","name":"staker","nameLocation":"13543:6:28","nodeType":"VariableDeclaration","scope":10307,"src":"13535:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10285,"name":"address","nodeType":"ElementaryTypeName","src":"13535:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10288,"mutability":"mutable","name":"tokenId","nameLocation":"13559:7:28","nodeType":"VariableDeclaration","scope":10307,"src":"13551:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10287,"name":"uint256","nodeType":"ElementaryTypeName","src":"13551:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13534:33:28"},"returnParameters":{"id":10290,"nodeType":"ParameterList","parameters":[],"src":"13577:0:28"},"scope":10372,"src":"13514:184:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10370,"nodeType":"Block","src":"13868:423:28","statements":[{"assignments":[10319],"declarations":[{"constant":false,"id":10319,"mutability":"mutable","name":"tokens","nameLocation":"13896:6:28","nodeType":"VariableDeclaration","scope":10370,"src":"13878:24:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10317,"name":"uint256","nodeType":"ElementaryTypeName","src":"13878:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10318,"nodeType":"ArrayTypeName","src":"13878:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10323,"initialValue":{"baseExpression":{"id":10320,"name":"_walletTokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9804,"src":"13905:15:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":10322,"indexExpression":{"id":10321,"name":"staker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10310,"src":"13921:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13905:23:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13878:50:28"},{"assignments":[10325],"declarations":[{"constant":false,"id":10325,"mutability":"mutable","name":"index","nameLocation":"13946:5:28","nodeType":"VariableDeclaration","scope":10370,"src":"13938:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10324,"name":"uint256","nodeType":"ElementaryTypeName","src":"13938:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10329,"initialValue":{"baseExpression":{"id":10326,"name":"_walletTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9809,"src":"13954:17:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10328,"indexExpression":{"id":10327,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10312,"src":"13972:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13954:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13938:42:28"},{"assignments":[10331],"declarations":[{"constant":false,"id":10331,"mutability":"mutable","name":"lastIndex","nameLocation":"13998:9:28","nodeType":"VariableDeclaration","scope":10370,"src":"13990:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10330,"name":"uint256","nodeType":"ElementaryTypeName","src":"13990:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10336,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10332,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"14010:6:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":10333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14017:6:28","memberName":"length","nodeType":"MemberAccess","src":"14010:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14026:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14010:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13990:37:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10337,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10325,"src":"14042:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10338,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10331,"src":"14051:9:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14042:18:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10359,"nodeType":"IfStatement","src":"14038:181:28","trueBody":{"id":10358,"nodeType":"Block","src":"14062:157:28","statements":[{"assignments":[10341],"declarations":[{"constant":false,"id":10341,"mutability":"mutable","name":"lastTokenId","nameLocation":"14084:11:28","nodeType":"VariableDeclaration","scope":10358,"src":"14076:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10340,"name":"uint256","nodeType":"ElementaryTypeName","src":"14076:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10345,"initialValue":{"baseExpression":{"id":10342,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"14098:6:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":10344,"indexExpression":{"id":10343,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10331,"src":"14105:9:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14098:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14076:39:28"},{"expression":{"id":10350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10346,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"14129:6:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":10348,"indexExpression":{"id":10347,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10325,"src":"14136:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14129:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10349,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10341,"src":"14145:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14129:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10351,"nodeType":"ExpressionStatement","src":"14129:27:28"},{"expression":{"id":10356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10352,"name":"_walletTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9809,"src":"14170:17:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10354,"indexExpression":{"id":10353,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10341,"src":"14188:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14170:30:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10355,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10325,"src":"14203:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14170:38:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10357,"nodeType":"ExpressionStatement","src":"14170:38:28"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10360,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"14229:6:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":10362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14236:3:28","memberName":"pop","nodeType":"MemberAccess","src":"14229:10:28","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":10363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14229:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10364,"nodeType":"ExpressionStatement","src":"14229:12:28"},{"expression":{"id":10368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"14251:33:28","subExpression":{"baseExpression":{"id":10365,"name":"_walletTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9809,"src":"14258:17:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10367,"indexExpression":{"id":10366,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10312,"src":"14276:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14258:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10369,"nodeType":"ExpressionStatement","src":"14251:33:28"}]},"documentation":{"id":10308,"nodeType":"StructuredDocumentation","src":"13704:90:28","text":"@dev Removes tokenId from _walletTokenIds[staker] using swap-and-pop for O(1) removal."},"id":10371,"implemented":true,"kind":"function","modifiers":[],"name":"_removeFromWallet","nameLocation":"13808:17:28","nodeType":"FunctionDefinition","parameters":{"id":10313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10310,"mutability":"mutable","name":"staker","nameLocation":"13834:6:28","nodeType":"VariableDeclaration","scope":10371,"src":"13826:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10309,"name":"address","nodeType":"ElementaryTypeName","src":"13826:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10312,"mutability":"mutable","name":"tokenId","nameLocation":"13850:7:28","nodeType":"VariableDeclaration","scope":10371,"src":"13842:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10311,"name":"uint256","nodeType":"ElementaryTypeName","src":"13842:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13825:33:28"},"returnParameters":{"id":10314,"nodeType":"ParameterList","parameters":[],"src":"13868:0:28"},"scope":10372,"src":"13799:492:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":10373,"src":"1462:12831:28","usedErrors":[392,397,3981,3984,4087,9722,9725,9728,9731,9734,9737,9740,9743,9746],"usedEvents":[403,541,3973,3978,9755,9764,9775,9784]}],"src":"32:14262:28"},"id":28},"contracts/test/ReentrantERC721.sol":{"ast":{"absolutePath":"contracts/test/ReentrantERC721.sol","exportedSymbols":{"IReentrantStakingTarget":[10380],"ReentrantERC721":[10484]},"id":10485,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10374,"literals":["solidity","^","0.8",".26"],"nodeType":"PragmaDirective","src":"32:24:29"},{"abstract":false,"baseContracts":[],"canonicalName":"IReentrantStakingTarget","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":10380,"linearizedBaseContracts":[10380],"name":"IReentrantStakingTarget","nameLocation":"68:23:29","nodeType":"ContractDefinition","nodes":[{"functionSelector":"a694fc3a","id":10379,"implemented":false,"kind":"function","modifiers":[],"name":"stake","nameLocation":"107:5:29","nodeType":"FunctionDefinition","parameters":{"id":10377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10376,"mutability":"mutable","name":"tokenId","nameLocation":"121:7:29","nodeType":"VariableDeclaration","scope":10379,"src":"113:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10375,"name":"uint256","nodeType":"ElementaryTypeName","src":"113:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"112:17:29"},"returnParameters":{"id":10378,"nodeType":"ParameterList","parameters":[],"src":"138:0:29"},"scope":10380,"src":"98:41:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10485,"src":"58:83:29","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"ReentrantERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":10381,"nodeType":"StructuredDocumentation","src":"143:72:29","text":"@dev Test-only NFT double that calls stake again from transferFrom."},"fullyImplemented":true,"id":10484,"linearizedBaseContracts":[10484],"name":"ReentrantERC721","nameLocation":"224:15:29","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10385,"mutability":"mutable","name":"_owners","nameLocation":"296:7:29","nodeType":"VariableDeclaration","scope":10484,"src":"246:57:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":10384,"keyName":"tokenId","keyNameLocation":"262:7:29","keyType":{"id":10382,"name":"uint256","nodeType":"ElementaryTypeName","src":"254:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"246:41:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"owner","valueNameLocation":"281:5:29","valueType":{"id":10383,"name":"address","nodeType":"ElementaryTypeName","src":"273:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"functionSelector":"4cf088d9","id":10388,"mutability":"immutable","name":"staking","nameLocation":"350:7:29","nodeType":"VariableDeclaration","scope":10484,"src":"309:48:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10380","typeString":"contract IReentrantStakingTarget"},"typeName":{"id":10387,"nodeType":"UserDefinedTypeName","pathNode":{"id":10386,"name":"IReentrantStakingTarget","nameLocations":["309:23:29"],"nodeType":"IdentifierPath","referencedDeclaration":10380,"src":"309:23:29"},"referencedDeclaration":10380,"src":"309:23:29","typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10380","typeString":"contract IReentrantStakingTarget"}},"visibility":"public"},{"constant":false,"functionSelector":"d7751b85","id":10390,"mutability":"mutable","name":"attackEnabled","nameLocation":"375:13:29","nodeType":"VariableDeclaration","scope":10484,"src":"363:25:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10389,"name":"bool","nodeType":"ElementaryTypeName","src":"363:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":10401,"nodeType":"Block","src":"425:60:29","statements":[{"expression":{"id":10399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10395,"name":"staking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10388,"src":"435:7:29","typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10380","typeString":"contract IReentrantStakingTarget"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10397,"name":"staking_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10392,"src":"469:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10396,"name":"IReentrantStakingTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"445:23:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IReentrantStakingTarget_$10380_$","typeString":"type(contract IReentrantStakingTarget)"}},"id":10398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"445:33:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10380","typeString":"contract IReentrantStakingTarget"}},"src":"435:43:29","typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10380","typeString":"contract IReentrantStakingTarget"}},"id":10400,"nodeType":"ExpressionStatement","src":"435:43:29"}]},"id":10402,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10392,"mutability":"mutable","name":"staking_","nameLocation":"415:8:29","nodeType":"VariableDeclaration","scope":10402,"src":"407:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10391,"name":"address","nodeType":"ElementaryTypeName","src":"407:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"406:18:29"},"returnParameters":{"id":10394,"nodeType":"ParameterList","parameters":[],"src":"425:0:29"},"scope":10484,"src":"395:90:29","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10415,"nodeType":"Block","src":"543:38:29","statements":[{"expression":{"id":10413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10409,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10385,"src":"553:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10411,"indexExpression":{"id":10410,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10406,"src":"561:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"553:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10412,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10404,"src":"572:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"553:21:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10414,"nodeType":"ExpressionStatement","src":"553:21:29"}]},"functionSelector":"40c10f19","id":10416,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"500:4:29","nodeType":"FunctionDefinition","parameters":{"id":10407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10404,"mutability":"mutable","name":"to","nameLocation":"513:2:29","nodeType":"VariableDeclaration","scope":10416,"src":"505:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10403,"name":"address","nodeType":"ElementaryTypeName","src":"505:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10406,"mutability":"mutable","name":"tokenId","nameLocation":"525:7:29","nodeType":"VariableDeclaration","scope":10416,"src":"517:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10405,"name":"uint256","nodeType":"ElementaryTypeName","src":"517:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"504:29:29"},"returnParameters":{"id":10408,"nodeType":"ParameterList","parameters":[],"src":"543:0:29"},"scope":10484,"src":"491:90:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10432,"nodeType":"Block","src":"620:75:29","statements":[{"expression":{"id":10421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10419,"name":"attackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10390,"src":"630:13:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":10420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"646:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"630:20:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10422,"nodeType":"ExpressionStatement","src":"630:20:29"},{"expression":{"id":10430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10423,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10385,"src":"660:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10425,"indexExpression":{"hexValue":"393939","id":10424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"668:3:29","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"660:12:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10428,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"683:4:29","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrantERC721_$10484","typeString":"contract ReentrantERC721"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReentrantERC721_$10484","typeString":"contract ReentrantERC721"}],"id":10427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"675:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10426,"name":"address","nodeType":"ElementaryTypeName","src":"675:7:29","typeDescriptions":{}}},"id":10429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"675:13:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"660:28:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10431,"nodeType":"ExpressionStatement","src":"660:28:29"}]},"functionSelector":"21f16193","id":10433,"implemented":true,"kind":"function","modifiers":[],"name":"enableAttack","nameLocation":"596:12:29","nodeType":"FunctionDefinition","parameters":{"id":10417,"nodeType":"ParameterList","parameters":[],"src":"608:2:29"},"returnParameters":{"id":10418,"nodeType":"ParameterList","parameters":[],"src":"620:0:29"},"scope":10484,"src":"587:108:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10444,"nodeType":"Block","src":"767:40:29","statements":[{"expression":{"baseExpression":{"id":10440,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10385,"src":"784:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10442,"indexExpression":{"id":10441,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10435,"src":"792:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"784:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10439,"id":10443,"nodeType":"Return","src":"777:23:29"}]},"functionSelector":"6352211e","id":10445,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"710:7:29","nodeType":"FunctionDefinition","parameters":{"id":10436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10435,"mutability":"mutable","name":"tokenId","nameLocation":"726:7:29","nodeType":"VariableDeclaration","scope":10445,"src":"718:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10434,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"717:17:29"},"returnParameters":{"id":10439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10445,"src":"758:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10437,"name":"address","nodeType":"ElementaryTypeName","src":"758:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"757:9:29"},"scope":10484,"src":"701:106:29","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10482,"nodeType":"Block","src":"887:202:29","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10455,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10385,"src":"905:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10457,"indexExpression":{"id":10456,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"913:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"905:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10458,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10447,"src":"925:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"905:24:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"77726f6e67206f776e6572","id":10460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"931:13:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_1910a1b31627cb44672fa41011dea21df90d76304ea37cd5fe77e38d944205f7","typeString":"literal_string \"wrong owner\""},"value":"wrong owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1910a1b31627cb44672fa41011dea21df90d76304ea37cd5fe77e38d944205f7","typeString":"literal_string \"wrong owner\""}],"id":10454,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278,4294967278],"referencedDeclaration":4294967278,"src":"897:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"897:48:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10462,"nodeType":"ExpressionStatement","src":"897:48:29"},{"condition":{"id":10463,"name":"attackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10390,"src":"959:13:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10475,"nodeType":"IfStatement","src":"955:97:29","trueBody":{"id":10474,"nodeType":"Block","src":"974:78:29","statements":[{"expression":{"id":10466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10464,"name":"attackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10390,"src":"988:13:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":10465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1004:5:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"988:21:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10467,"nodeType":"ExpressionStatement","src":"988:21:29"},{"expression":{"arguments":[{"hexValue":"393939","id":10471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1037:3:29","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"}],"expression":{"id":10468,"name":"staking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10388,"src":"1023:7:29","typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10380","typeString":"contract IReentrantStakingTarget"}},"id":10470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1031:5:29","memberName":"stake","nodeType":"MemberAccess","referencedDeclaration":10379,"src":"1023:13:29","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":10472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1023:18:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10473,"nodeType":"ExpressionStatement","src":"1023:18:29"}]}},{"expression":{"id":10480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10476,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10385,"src":"1061:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10478,"indexExpression":{"id":10477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"1069:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1061:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10479,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10449,"src":"1080:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1061:21:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10481,"nodeType":"ExpressionStatement","src":"1061:21:29"}]},"functionSelector":"23b872dd","id":10483,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"822:12:29","nodeType":"FunctionDefinition","parameters":{"id":10452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10447,"mutability":"mutable","name":"from","nameLocation":"843:4:29","nodeType":"VariableDeclaration","scope":10483,"src":"835:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10446,"name":"address","nodeType":"ElementaryTypeName","src":"835:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10449,"mutability":"mutable","name":"to","nameLocation":"857:2:29","nodeType":"VariableDeclaration","scope":10483,"src":"849:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10448,"name":"address","nodeType":"ElementaryTypeName","src":"849:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10451,"mutability":"mutable","name":"tokenId","nameLocation":"869:7:29","nodeType":"VariableDeclaration","scope":10483,"src":"861:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10450,"name":"uint256","nodeType":"ElementaryTypeName","src":"861:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"834:43:29"},"returnParameters":{"id":10453,"nodeType":"ParameterList","parameters":[],"src":"887:0:29"},"scope":10484,"src":"813:276:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10485,"src":"215:876:29","usedErrors":[],"usedEvents":[]}],"src":"32:1060:29"},"id":29}}}} diff --git a/artifacts/build-info/solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6.json b/artifacts/build-info/solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee.json similarity index 93% rename from artifacts/build-info/solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6.json rename to artifacts/build-info/solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee.json index e9b2923..926674a 100644 --- a/artifacts/build-info/solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6.json +++ b/artifacts/build-info/solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee.json @@ -1,6 +1,6 @@ { "_format": "hh3-sol-build-info-1", - "id": "solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6", + "id": "solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee", "solcVersion": "0.8.26", "solcLongVersion": "0.8.26+commit.8a97fa7a.Emscripten.clang", "compilerType": "solcjs", @@ -13,7 +13,7 @@ "language": "Solidity", "sources": { "contracts/TricksforBoosterNFT.sol": { - "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/common/ERC2981.sol\";\nimport \"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol\";\nimport \"@openzeppelin/contracts/utils/Pausable.sol\";\n\n/// @title TricksforBoosterNFT\n/// @notice ERC-721 NFT collection for Tricksfor Booster items.\n/// OpenSea-compatible: supports tokenURI, contractURI, and ERC-2981 royalties.\n/// Minting is role-gated (MINTER_ROLE) and can be paused by the default admin.\n/// @dev Does not include staking logic — staking is handled by TricksforBoosterStaking.\ncontract TricksforBoosterNFT is ERC721, ERC2981, AccessControlDefaultAdminRules, Pausable {\n // -------------------------------------------------------------------------\n // Roles\n // -------------------------------------------------------------------------\n\n /// @notice Role that authorizes an account to call safeMint.\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n // -------------------------------------------------------------------------\n // Errors\n // -------------------------------------------------------------------------\n\n /// @notice Zero address supplied where a non-zero address is required.\n error ZeroAddress();\n\n // -------------------------------------------------------------------------\n // Events\n // -------------------------------------------------------------------------\n\n event BaseURIUpdated(string previousURI, string newURI);\n event ContractURIUpdated(string previousURI, string newURI);\n event DefaultRoyaltyUpdated(address indexed receiver, uint96 feeBasisPoints);\n\n // -------------------------------------------------------------------------\n // State\n // -------------------------------------------------------------------------\n\n string private _baseTokenURI;\n string private _contractMetadataURI;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n /// @param name_ ERC-721 collection name\n /// @param symbol_ ERC-721 collection symbol\n /// @param baseURI_ Base URI for token metadata (appended with tokenId)\n /// @param contractMetadataURI_ URI for OpenSea collection-level metadata\n /// @param royaltyReceiver_ Address that receives royalty payments\n /// @param royaltyFeeBasisPoints_ Royalty fee in basis points (10 000 = 100%)\n /// @param initialAdmin_ Initial default administrator\n /// @param initialMinter_ Initial account authorized to mint\n /// @param defaultAdminDelay_ Delay in seconds for default-admin transfers\n constructor(\n string memory name_,\n string memory symbol_,\n string memory baseURI_,\n string memory contractMetadataURI_,\n address royaltyReceiver_,\n uint96 royaltyFeeBasisPoints_,\n address initialAdmin_,\n address initialMinter_,\n uint48 defaultAdminDelay_\n ) ERC721(name_, symbol_) AccessControlDefaultAdminRules(defaultAdminDelay_, initialAdmin_) {\n if (royaltyReceiver_ == address(0) || initialAdmin_ == address(0) || initialMinter_ == address(0)) {\n revert ZeroAddress();\n }\n _baseTokenURI = baseURI_;\n _contractMetadataURI = contractMetadataURI_;\n _setDefaultRoyalty(royaltyReceiver_, royaltyFeeBasisPoints_);\n _grantRole(MINTER_ROLE, initialMinter_);\n }\n\n // -------------------------------------------------------------------------\n // Minting\n // -------------------------------------------------------------------------\n\n /// @notice Mints a token with the given ID to the specified address.\n /// The caller must hold MINTER_ROLE. Reverts when paused.\n /// @param to Recipient address for the minted token.\n /// @param tokenId Token ID to mint. Must not already exist.\n function safeMint(address to, uint256 tokenId) external onlyRole(MINTER_ROLE) whenNotPaused {\n _safeMint(to, tokenId);\n }\n\n // -------------------------------------------------------------------------\n // Admin configuration\n // -------------------------------------------------------------------------\n\n /// @notice Updates the base URI used to construct per-token metadata URIs.\n /// @param baseURI_ New base URI string.\n function setBaseURI(string calldata baseURI_) external onlyRole(DEFAULT_ADMIN_ROLE) {\n string memory previousURI = _baseTokenURI;\n _baseTokenURI = baseURI_;\n emit BaseURIUpdated(previousURI, baseURI_);\n }\n\n /// @notice Updates the collection-level metadata URI (OpenSea contractURI extension).\n /// @param contractMetadataURI_ New collection metadata URI.\n function setContractURI(string calldata contractMetadataURI_) external onlyRole(DEFAULT_ADMIN_ROLE) {\n string memory previousURI = _contractMetadataURI;\n _contractMetadataURI = contractMetadataURI_;\n emit ContractURIUpdated(previousURI, contractMetadataURI_);\n }\n\n /// @notice Updates the default royalty receiver and fee for all tokens.\n /// @param receiver Address that receives royalty payments.\n /// @param feeBasisPoints Royalty fee in basis points (10 000 = 100%).\n function setRoyaltyInfo(address receiver, uint96 feeBasisPoints) external onlyRole(DEFAULT_ADMIN_ROLE) {\n if (receiver == address(0)) revert ZeroAddress();\n _setDefaultRoyalty(receiver, feeBasisPoints);\n emit DefaultRoyaltyUpdated(receiver, feeBasisPoints);\n }\n\n /// @notice Pauses minting. Does not affect transfers.\n function pause() external onlyRole(DEFAULT_ADMIN_ROLE) {\n _pause();\n }\n\n /// @notice Unpauses minting.\n function unpause() external onlyRole(DEFAULT_ADMIN_ROLE) {\n _unpause();\n }\n\n // -------------------------------------------------------------------------\n // Metadata\n // -------------------------------------------------------------------------\n\n /// @notice Returns the collection-level metadata URI (OpenSea extension).\n function contractURI() external view returns (string memory) {\n return _contractMetadataURI;\n }\n\n /// @notice Returns the base URI used to construct token metadata URLs.\n function baseURI() external view returns (string memory) {\n return _baseTokenURI;\n }\n\n // -------------------------------------------------------------------------\n // Internal overrides\n // -------------------------------------------------------------------------\n\n /// @dev Returns the base URI used to build tokenURI values.\n function _baseURI() internal view override returns (string memory) {\n return _baseTokenURI;\n }\n\n // -------------------------------------------------------------------------\n // Interface support\n // -------------------------------------------------------------------------\n\n /// @inheritdoc ERC165\n function supportsInterface(bytes4 interfaceId)\n public\n view\n override(ERC721, ERC2981, AccessControlDefaultAdminRules)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n}\n" + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\";\nimport \"@openzeppelin/contracts/token/common/ERC2981.sol\";\nimport \"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol\";\nimport \"@openzeppelin/contracts/utils/Pausable.sol\";\n\n/// @title TricksforBoosterNFT\n/// @notice ERC-721 Enumerable NFT collection for Tricksfor Booster items.\n/// OpenSea-compatible: supports tokenURI, contractURI, and ERC-2981 royalties.\n/// Minting is role-gated (MINTER_ROLE) and can be paused by the default admin.\n/// @dev Does not include staking logic — staking is handled by TricksforBoosterStaking.\ncontract TricksforBoosterNFT is\n ERC721,\n ERC721Enumerable,\n ERC2981,\n AccessControlDefaultAdminRules,\n Pausable\n{\n // -------------------------------------------------------------------------\n // Roles\n // -------------------------------------------------------------------------\n\n /// @notice Role that authorizes an account to call safeMint.\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n // -------------------------------------------------------------------------\n // Errors\n // -------------------------------------------------------------------------\n\n /// @notice Zero address supplied where a non-zero address is required.\n error ZeroAddress();\n\n // -------------------------------------------------------------------------\n // Events\n // -------------------------------------------------------------------------\n\n event BaseURIUpdated(string previousURI, string newURI);\n event ContractURIUpdated(string previousURI, string newURI);\n event DefaultRoyaltyUpdated(address indexed receiver, uint96 feeBasisPoints);\n\n // -------------------------------------------------------------------------\n // State\n // -------------------------------------------------------------------------\n\n string private _baseTokenURI;\n string private _contractMetadataURI;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n /// @param name_ ERC-721 collection name\n /// @param symbol_ ERC-721 collection symbol\n /// @param baseURI_ Base URI for token metadata (appended with tokenId)\n /// @param contractMetadataURI_ URI for OpenSea collection-level metadata\n /// @param royaltyReceiver_ Address that receives royalty payments\n /// @param royaltyFeeBasisPoints_ Royalty fee in basis points (10 000 = 100%)\n /// @param initialAdmin_ Initial default administrator\n /// @param initialMinter_ Initial account authorized to mint\n /// @param defaultAdminDelay_ Delay in seconds for default-admin transfers\n constructor(\n string memory name_,\n string memory symbol_,\n string memory baseURI_,\n string memory contractMetadataURI_,\n address royaltyReceiver_,\n uint96 royaltyFeeBasisPoints_,\n address initialAdmin_,\n address initialMinter_,\n uint48 defaultAdminDelay_\n ) ERC721(name_, symbol_) AccessControlDefaultAdminRules(defaultAdminDelay_, initialAdmin_) {\n if (royaltyReceiver_ == address(0) || initialAdmin_ == address(0) || initialMinter_ == address(0)) {\n revert ZeroAddress();\n }\n _baseTokenURI = baseURI_;\n _contractMetadataURI = contractMetadataURI_;\n _setDefaultRoyalty(royaltyReceiver_, royaltyFeeBasisPoints_);\n _grantRole(MINTER_ROLE, initialMinter_);\n }\n\n // -------------------------------------------------------------------------\n // Minting\n // -------------------------------------------------------------------------\n\n /// @notice Mints a token with the given ID to the specified address.\n /// The caller must hold MINTER_ROLE. Reverts when paused.\n /// @param to Recipient address for the minted token.\n /// @param tokenId Token ID to mint. Must not already exist.\n function safeMint(address to, uint256 tokenId) external onlyRole(MINTER_ROLE) whenNotPaused {\n _safeMint(to, tokenId);\n }\n\n // -------------------------------------------------------------------------\n // Admin configuration\n // -------------------------------------------------------------------------\n\n /// @notice Updates the base URI used to construct per-token metadata URIs.\n /// @param baseURI_ New base URI string.\n function setBaseURI(string calldata baseURI_) external onlyRole(DEFAULT_ADMIN_ROLE) {\n string memory previousURI = _baseTokenURI;\n _baseTokenURI = baseURI_;\n emit BaseURIUpdated(previousURI, baseURI_);\n }\n\n /// @notice Updates the collection-level metadata URI (OpenSea contractURI extension).\n /// @param contractMetadataURI_ New collection metadata URI.\n function setContractURI(string calldata contractMetadataURI_) external onlyRole(DEFAULT_ADMIN_ROLE) {\n string memory previousURI = _contractMetadataURI;\n _contractMetadataURI = contractMetadataURI_;\n emit ContractURIUpdated(previousURI, contractMetadataURI_);\n }\n\n /// @notice Updates the default royalty receiver and fee for all tokens.\n /// @param receiver Address that receives royalty payments.\n /// @param feeBasisPoints Royalty fee in basis points (10 000 = 100%).\n function setRoyaltyInfo(address receiver, uint96 feeBasisPoints) external onlyRole(DEFAULT_ADMIN_ROLE) {\n if (receiver == address(0)) revert ZeroAddress();\n _setDefaultRoyalty(receiver, feeBasisPoints);\n emit DefaultRoyaltyUpdated(receiver, feeBasisPoints);\n }\n\n /// @notice Pauses minting. Does not affect transfers.\n function pause() external onlyRole(DEFAULT_ADMIN_ROLE) {\n _pause();\n }\n\n /// @notice Unpauses minting.\n function unpause() external onlyRole(DEFAULT_ADMIN_ROLE) {\n _unpause();\n }\n\n // -------------------------------------------------------------------------\n // Metadata\n // -------------------------------------------------------------------------\n\n /// @notice Returns the collection-level metadata URI (OpenSea extension).\n function contractURI() external view returns (string memory) {\n return _contractMetadataURI;\n }\n\n /// @notice Returns the base URI used to construct token metadata URLs.\n function baseURI() external view returns (string memory) {\n return _baseTokenURI;\n }\n\n // -------------------------------------------------------------------------\n // Internal overrides\n // -------------------------------------------------------------------------\n\n /// @dev Returns the base URI used to build tokenURI values.\n function _baseURI() internal view override returns (string memory) {\n return _baseTokenURI;\n }\n\n /// @dev Keeps ERC-721 ownership and enumerable indexes synchronized on mint and transfer.\n function _update(address to, uint256 tokenId, address auth)\n internal\n override(ERC721, ERC721Enumerable)\n returns (address)\n {\n return super._update(to, tokenId, auth);\n }\n\n /// @dev Resolves the balance hook shared by ERC721 and ERC721Enumerable.\n function _increaseBalance(address account, uint128 value)\n internal\n override(ERC721, ERC721Enumerable)\n {\n super._increaseBalance(account, value);\n }\n\n // -------------------------------------------------------------------------\n // Interface support\n // -------------------------------------------------------------------------\n\n /// @inheritdoc ERC165\n function supportsInterface(bytes4 interfaceId)\n public\n view\n override(ERC721, ERC721Enumerable, ERC2981, AccessControlDefaultAdminRules)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n}\n" }, "@openzeppelin/contracts/token/ERC721/ERC721.sol": { "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.6.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.24;\n\nimport {IERC721} from \"./IERC721.sol\";\nimport {IERC721Metadata} from \"./extensions/IERC721Metadata.sol\";\nimport {ERC721Utils} from \"./utils/ERC721Utils.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {Strings} from \"../../utils/Strings.sol\";\nimport {IERC165, ERC165} from \"../../utils/introspection/ERC165.sol\";\nimport {IERC721Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\nabstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {\n using Strings for uint256;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n mapping(uint256 tokenId => address) private _owners;\n\n mapping(address owner => uint256) private _balances;\n\n mapping(uint256 tokenId => address) private _tokenApprovals;\n\n mapping(address owner => mapping(address operator => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /// @inheritdoc IERC165\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /// @inheritdoc IERC721\n function balanceOf(address owner) public view virtual returns (uint256) {\n if (owner == address(0)) {\n revert ERC721InvalidOwner(address(0));\n }\n return _balances[owner];\n }\n\n /// @inheritdoc IERC721\n function ownerOf(uint256 tokenId) public view virtual returns (address) {\n return _requireOwned(tokenId);\n }\n\n /// @inheritdoc IERC721Metadata\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /// @inheritdoc IERC721Metadata\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /// @inheritdoc IERC721Metadata\n function tokenURI(uint256 tokenId) public view virtual returns (string memory) {\n _requireOwned(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string.concat(baseURI, tokenId.toString()) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /// @inheritdoc IERC721\n function approve(address to, uint256 tokenId) public virtual {\n _approve(to, tokenId, _msgSender());\n }\n\n /// @inheritdoc IERC721\n function getApproved(uint256 tokenId) public view virtual returns (address) {\n _requireOwned(tokenId);\n\n return _getApproved(tokenId);\n }\n\n /// @inheritdoc IERC721\n function setApprovalForAll(address operator, bool approved) public virtual {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /// @inheritdoc IERC721\n function isApprovedForAll(address owner, address operator) public view virtual returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /// @inheritdoc IERC721\n function transferFrom(address from, address to, uint256 tokenId) public virtual {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n // Setting an \"auth\" arguments enables the `_isAuthorized` check which verifies that the token exists\n // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here.\n address previousOwner = _update(to, tokenId, _msgSender());\n if (previousOwner != from) {\n revert ERC721IncorrectOwner(from, tokenId, previousOwner);\n }\n }\n\n /// @inheritdoc IERC721\n function safeTransferFrom(address from, address to, uint256 tokenId) public {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /// @inheritdoc IERC721\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual {\n transferFrom(from, to, tokenId);\n ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\n }\n\n /**\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n *\n * IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n * core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n * consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n * `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`.\n */\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n return _owners[tokenId];\n }\n\n /**\n * @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted.\n */\n function _getApproved(uint256 tokenId) internal view virtual returns (address) {\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n * particular (ignoring whether it is owned by `owner`).\n *\n * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n * assumption.\n */\n function _isAuthorized(address owner, address spender, uint256 tokenId) internal view virtual returns (bool) {\n return\n spender != address(0) &&\n (owner == spender || isApprovedForAll(owner, spender) || _getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n * Reverts if:\n * - `spender` does not have approval from `owner` for `tokenId`.\n * - `spender` does not have approval to manage all of `owner`'s assets.\n *\n * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n * assumption.\n */\n function _checkAuthorized(address owner, address spender, uint256 tokenId) internal view virtual {\n if (!_isAuthorized(owner, spender, tokenId)) {\n if (owner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n } else {\n revert ERC721InsufficientApproval(spender, tokenId);\n }\n }\n }\n\n /**\n * @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n *\n * NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n * a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n *\n * WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n * {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n * remain consistent with one another.\n */\n function _increaseBalance(address account, uint128 value) internal virtual {\n unchecked {\n _balances[account] += value;\n }\n }\n\n /**\n * @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n * (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n *\n * The `auth` argument is optional. If the value passed is non 0, then this function will check that\n * `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n *\n * Emits a {Transfer} event.\n *\n * NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}.\n */\n function _update(address to, uint256 tokenId, address auth) internal virtual returns (address) {\n address from = _ownerOf(tokenId);\n\n // Perform (optional) operator check\n if (auth != address(0)) {\n _checkAuthorized(from, auth, tokenId);\n }\n\n // Execute the update\n if (from != address(0)) {\n // Clear approval. No need to re-authorize or emit the Approval event\n _approve(address(0), tokenId, address(0), false);\n\n unchecked {\n _balances[from] -= 1;\n }\n }\n\n if (to != address(0)) {\n unchecked {\n _balances[to] += 1;\n }\n }\n\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n return from;\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n address previousOwner = _update(to, tokenId, address(0));\n if (previousOwner != address(0)) {\n revert ERC721InvalidSender(address(0));\n }\n }\n\n /**\n * @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\n _mint(to, tokenId);\n ERC721Utils.checkOnERC721Received(_msgSender(), address(0), to, tokenId, data);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n * This is an internal function that does not check if the sender is authorized to operate on the token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal {\n address previousOwner = _update(address(0), tokenId, address(0));\n if (previousOwner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n }\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(address from, address to, uint256 tokenId) internal {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n address previousOwner = _update(to, tokenId, address(0));\n if (previousOwner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n } else if (previousOwner != from) {\n revert ERC721IncorrectOwner(from, tokenId, previousOwner);\n }\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n * are aware of the ERC-721 standard to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is like {safeTransferFrom} in the sense that it invokes\n * {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `tokenId` token must exist and be owned by `from`.\n * - `to` cannot be the zero address.\n * - `from` cannot be the zero address.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(address from, address to, uint256 tokenId) internal {\n _safeTransfer(from, to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\n _transfer(from, to, tokenId);\n ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n * either the owner of the token, or approved to operate on all tokens held by this owner.\n *\n * Emits an {Approval} event.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address to, uint256 tokenId, address auth) internal {\n _approve(to, tokenId, auth, true);\n }\n\n /**\n * @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n * emitted in the context of transfers.\n */\n function _approve(address to, uint256 tokenId, address auth, bool emitEvent) internal virtual {\n // Avoid reading the owner unless necessary\n if (emitEvent || auth != address(0)) {\n address owner = _requireOwned(tokenId);\n\n // We do not use _isAuthorized because single-token approvals should not be able to call approve\n if (auth != address(0) && owner != auth && !isApprovedForAll(owner, auth)) {\n revert ERC721InvalidApprover(auth);\n }\n\n if (emitEvent) {\n emit Approval(owner, to, tokenId);\n }\n }\n\n _tokenApprovals[tokenId] = to;\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Requirements:\n * - operator can't be the address zero.\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\n if (owner == address(0)) {\n revert ERC721InvalidApprover(address(0));\n }\n if (operator == address(0)) {\n revert ERC721InvalidOperator(operator);\n }\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n * Returns the owner.\n *\n * Overrides to ownership logic should be done to {_ownerOf}.\n */\n function _requireOwned(uint256 tokenId) internal view returns (address) {\n address owner = _ownerOf(tokenId);\n if (owner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n }\n return owner;\n }\n}\n" @@ -60,6 +60,12 @@ "@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/token/ERC721/extensions/ERC721Enumerable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.6.0) (token/ERC721/extensions/ERC721Enumerable.sol)\n\npragma solidity ^0.8.24;\n\nimport {ERC721} from \"../ERC721.sol\";\nimport {IERC721Enumerable} from \"./IERC721Enumerable.sol\";\nimport {IERC165} from \"../../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev This implements an optional extension of {ERC721} defined in the ERC that adds enumerability\n * of all the token ids in the contract as well as all token ids owned by each account.\n *\n * CAUTION: {ERC721} extensions that implement custom `balanceOf` logic, such as {ERC721Consecutive},\n * interfere with enumerability and should not be used together with {ERC721Enumerable}.\n */\nabstract contract ERC721Enumerable is ERC721, IERC721Enumerable {\n mapping(address owner => mapping(uint256 index => uint256)) private _ownedTokens;\n mapping(uint256 tokenId => uint256) private _ownedTokensIndex;\n\n uint256[] private _allTokens;\n mapping(uint256 tokenId => uint256) private _allTokensIndex;\n\n /**\n * @dev An `owner`'s token query was out of bounds for `index`.\n *\n * NOTE: The owner being `address(0)` indicates a global out of bounds index.\n */\n error ERC721OutOfBoundsIndex(address owner, uint256 index);\n\n /**\n * @dev Batch mint is not allowed.\n */\n error ERC721EnumerableForbiddenBatchMint();\n\n /// @inheritdoc IERC165\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /// @inheritdoc IERC721Enumerable\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual returns (uint256) {\n if (index >= balanceOf(owner)) {\n revert ERC721OutOfBoundsIndex(owner, index);\n }\n return _ownedTokens[owner][index];\n }\n\n /// @inheritdoc IERC721Enumerable\n function totalSupply() public view virtual returns (uint256) {\n return _allTokens.length;\n }\n\n /// @inheritdoc IERC721Enumerable\n function tokenByIndex(uint256 index) public view virtual returns (uint256) {\n if (index >= totalSupply()) {\n revert ERC721OutOfBoundsIndex(address(0), index);\n }\n return _allTokens[index];\n }\n\n /// @inheritdoc ERC721\n function _update(address to, uint256 tokenId, address auth) internal virtual override returns (address) {\n address previousOwner = super._update(to, tokenId, auth);\n\n if (previousOwner == address(0)) {\n _addTokenToAllTokensEnumeration(tokenId);\n } else if (previousOwner != to) {\n _removeTokenFromOwnerEnumeration(previousOwner, tokenId);\n }\n if (to == address(0)) {\n _removeTokenFromAllTokensEnumeration(tokenId);\n } else if (previousOwner != to) {\n _addTokenToOwnerEnumeration(to, tokenId);\n }\n\n return previousOwner;\n }\n\n /**\n * @dev Private function to add a token to this extension's ownership-tracking data structures.\n * @param to address representing the new owner of the given token ID\n * @param tokenId uint256 ID of the token to be added to the tokens list of the given address\n */\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\n uint256 length = balanceOf(to) - 1;\n _ownedTokens[to][length] = tokenId;\n _ownedTokensIndex[tokenId] = length;\n }\n\n /**\n * @dev Private function to add a token to this extension's token tracking data structures.\n * @param tokenId uint256 ID of the token to be added to the tokens list\n */\n function _addTokenToAllTokensEnumeration(uint256 tokenId) private {\n _allTokensIndex[tokenId] = _allTokens.length;\n _allTokens.push(tokenId);\n }\n\n /**\n * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n * gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n * This has O(1) time complexity, but alters the order of the _ownedTokens array.\n * @param from address representing the previous owner of the given token ID\n * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address\n */\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = balanceOf(from);\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\n\n mapping(uint256 index => uint256) storage _ownedTokensByOwner = _ownedTokens[from];\n\n // When the token to delete is the last token, the swap operation is unnecessary\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = _ownedTokensByOwner[lastTokenIndex];\n\n _ownedTokensByOwner[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n }\n\n // This also deletes the contents at the last position of the array\n delete _ownedTokensIndex[tokenId];\n delete _ownedTokensByOwner[lastTokenIndex];\n }\n\n /**\n * @dev Private function to remove a token from this extension's token tracking data structures.\n * This has O(1) time complexity, but alters the order of the _allTokens array.\n * @param tokenId uint256 ID of the token to be removed from the tokens list\n */\n function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {\n // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = _allTokens.length - 1;\n uint256 tokenIndex = _allTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so\n // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding\n // an 'if' statement (like in _removeTokenFromOwnerEnumeration)\n uint256 lastTokenId = _allTokens[lastTokenIndex];\n\n _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n\n // This also deletes the contents at the last position of the array\n delete _allTokensIndex[tokenId];\n _allTokens.pop();\n }\n\n /**\n * See {ERC721-_increaseBalance}. We need to forbid batch minting because the enumeration\n * extension does not support it.\n */\n function _increaseBalance(address account, uint128 amount) internal virtual override {\n if (amount > 0) {\n revert ERC721EnumerableForbiddenBatchMint();\n }\n super._increaseBalance(account, amount);\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC721/extensions/IERC721Enumerable.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC721} from \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n /**\n * @dev Returns the total amount of tokens stored by the contract.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n /**\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n * Use along with {totalSupply} to enumerate all tokens.\n */\n function tokenByIndex(uint256 index) external view returns (uint256);\n}\n" + }, "@openzeppelin/contracts/token/common/ERC2981.sol": { "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/common/ERC2981.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC2981} from \"../../interfaces/IERC2981.sol\";\nimport {IERC165, ERC165} from \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.\n *\n * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for\n * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.\n *\n * Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the\n * fee is specified in basis points by default.\n *\n * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See\n * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the ERC. Marketplaces are expected to\n * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.\n */\nabstract contract ERC2981 is IERC2981, ERC165 {\n struct RoyaltyInfo {\n address receiver;\n uint96 royaltyFraction;\n }\n\n RoyaltyInfo private _defaultRoyaltyInfo;\n mapping(uint256 tokenId => RoyaltyInfo) private _tokenRoyaltyInfo;\n\n /**\n * @dev The default royalty set is invalid (eg. (numerator / denominator) >= 1).\n */\n error ERC2981InvalidDefaultRoyalty(uint256 numerator, uint256 denominator);\n\n /**\n * @dev The default royalty receiver is invalid.\n */\n error ERC2981InvalidDefaultRoyaltyReceiver(address receiver);\n\n /**\n * @dev The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1).\n */\n error ERC2981InvalidTokenRoyalty(uint256 tokenId, uint256 numerator, uint256 denominator);\n\n /**\n * @dev The royalty receiver for `tokenId` is invalid.\n */\n error ERC2981InvalidTokenRoyaltyReceiver(uint256 tokenId, address receiver);\n\n /// @inheritdoc IERC165\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) {\n return interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /// @inheritdoc IERC2981\n function royaltyInfo(\n uint256 tokenId,\n uint256 salePrice\n ) public view virtual returns (address receiver, uint256 amount) {\n RoyaltyInfo storage _royaltyInfo = _tokenRoyaltyInfo[tokenId];\n address royaltyReceiver = _royaltyInfo.receiver;\n uint96 royaltyFraction = _royaltyInfo.royaltyFraction;\n\n if (royaltyReceiver == address(0)) {\n royaltyReceiver = _defaultRoyaltyInfo.receiver;\n royaltyFraction = _defaultRoyaltyInfo.royaltyFraction;\n }\n\n uint256 royaltyAmount = (salePrice * royaltyFraction) / _feeDenominator();\n\n return (royaltyReceiver, royaltyAmount);\n }\n\n /**\n * @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a\n * fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an\n * override.\n */\n function _feeDenominator() internal pure virtual returns (uint96) {\n return 10000;\n }\n\n /**\n * @dev Sets the royalty information that all ids in this contract will default to.\n *\n * Requirements:\n *\n * - `receiver` cannot be the zero address.\n * - `feeNumerator` cannot be greater than the fee denominator.\n */\n function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual {\n uint256 denominator = _feeDenominator();\n if (feeNumerator > denominator) {\n // Royalty fee will exceed the sale price\n revert ERC2981InvalidDefaultRoyalty(feeNumerator, denominator);\n }\n if (receiver == address(0)) {\n revert ERC2981InvalidDefaultRoyaltyReceiver(address(0));\n }\n\n _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator);\n }\n\n /**\n * @dev Removes default royalty information.\n */\n function _deleteDefaultRoyalty() internal virtual {\n delete _defaultRoyaltyInfo;\n }\n\n /**\n * @dev Sets the royalty information for a specific token id, overriding the global default.\n *\n * Requirements:\n *\n * - `receiver` cannot be the zero address.\n * - `feeNumerator` cannot be greater than the fee denominator.\n */\n function _setTokenRoyalty(uint256 tokenId, address receiver, uint96 feeNumerator) internal virtual {\n uint256 denominator = _feeDenominator();\n if (feeNumerator > denominator) {\n // Royalty fee will exceed the sale price\n revert ERC2981InvalidTokenRoyalty(tokenId, feeNumerator, denominator);\n }\n if (receiver == address(0)) {\n revert ERC2981InvalidTokenRoyaltyReceiver(tokenId, address(0));\n }\n\n _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator);\n }\n\n /**\n * @dev Resets royalty information for the token id back to the global default.\n */\n function _resetTokenRoyalty(uint256 tokenId) internal virtual {\n delete _tokenRoyaltyInfo[tokenId];\n }\n}\n" }, diff --git a/artifacts/build-info/solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee.output.json b/artifacts/build-info/solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee.output.json new file mode 100644 index 0000000..51365d9 --- /dev/null +++ b/artifacts/build-info/solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee.output.json @@ -0,0 +1 @@ +{"_format":"hh3-sol-build-info-output-1","id":"solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee","output":{"contracts":{"@openzeppelin/contracts/access/AccessControl.sol":{"AccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.","errors":{"AccessControlBadConfirmation()":[{"details":"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."}],"AccessControlUnauthorizedAccount(address,bytes32)":[{"details":"The `account` is missing a role."}]},"events":{"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4686ec784d75f95beaf2bf5b5f26e5f946d4c864aaee9c3c62bdc18381f5e017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26710ca191913f3c9df542079c4a6dcff02968e92d4f7357daefef9fbe72a19c\",\"dweb:/ipfs/QmanHbeWuBbVEqXySHa1zhm2rExjYpChDBubBaJNTCa2JB\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":26,"contract":"@openzeppelin/contracts/access/AccessControl.sol:AccessControl","label":"_roles","offset":0,"slot":"0","type":"t_mapping(t_bytes32,t_struct(RoleData)21_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_struct(RoleData)21_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct AccessControl.RoleData)","numberOfBytes":"32","value":"t_struct(RoleData)21_storage"},"t_struct(RoleData)21_storage":{"encoding":"inplace","label":"struct AccessControl.RoleData","members":[{"astId":18,"contract":"@openzeppelin/contracts/access/AccessControl.sol:AccessControl","label":"hasRole","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":20,"contract":"@openzeppelin/contracts/access/AccessControl.sol:AccessControl","label":"adminRole","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"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"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"External interface of AccessControl declared to support ERC-165 detection.","errors":{"AccessControlBadConfirmation()":[{"details":"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."}],"AccessControlUnauthorizedAccount(address,bytes32)":[{"details":"The `account` is missing a role."}]},"events":{"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the address provided by the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":387,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/Ownable2Step.sol":{"Ownable2Step":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. This extension of the {Ownable} contract includes a two-step mechanism to transfer ownership, where the new owner must call {acceptOwnership} in order to replace the old one. This can help prevent common mistakes, such as transfers of ownership to incorrect accounts, or to contracts that are unable to interact with the permission system. The initial owner is specified at deployment time in the constructor for `Ownable`. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"acceptOwnership()":"79ba5097","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. This extension of the {Ownable} contract includes a two-step mechanism to transfer ownership, where the new owner must call {acceptOwnership} in order to replace the old one. This can help prevent common mistakes, such as transfers of ownership to incorrect accounts, or to contracts that are unable to interact with the permission system. The initial owner is specified at deployment time in the constructor for `Ownable`. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable2Step.sol\":\"Ownable2Step\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":387,"contract":"@openzeppelin/contracts/access/Ownable2Step.sol:Ownable2Step","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":535,"contract":"@openzeppelin/contracts/access/Ownable2Step.sol:Ownable2Step","label":"_pendingOwner","offset":0,"slot":"1","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol":{"AccessControlDefaultAdminRules":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"uint48","name":"schedule","type":"uint48"}],"name":"AccessControlEnforcedDefaultAdminDelay","type":"error"},{"inputs":[],"name":"AccessControlEnforcedDefaultAdminRules","type":"error"},{"inputs":[{"internalType":"address","name":"defaultAdmin","type":"address"}],"name":"AccessControlInvalidDefaultAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"anonymous":false,"inputs":[],"name":"DefaultAdminDelayChangeCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint48","name":"newDelay","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"effectSchedule","type":"uint48"}],"name":"DefaultAdminDelayChangeScheduled","type":"event"},{"anonymous":false,"inputs":[],"name":"DefaultAdminTransferCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":false,"internalType":"uint48","name":"acceptSchedule","type":"uint48"}],"name":"DefaultAdminTransferScheduled","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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"beginDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"}],"name":"changeDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelayIncreaseWait","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdmin","outputs":[{"internalType":"address","name":"newAdmin","type":"address"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdminDelay","outputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rollbackDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Extension of {AccessControl} that allows specifying special rules to manage the `DEFAULT_ADMIN_ROLE` holder, which is a sensitive role with special permissions over other roles that may potentially have privileged rights in the system. If a specific role doesn't have an admin role assigned, the holder of the `DEFAULT_ADMIN_ROLE` will have the ability to grant it and revoke it. This contract implements the following risk mitigations on top of {AccessControl}: * Only one account holds the `DEFAULT_ADMIN_ROLE` since deployment until it's potentially renounced. * Enforces a 2-step process to transfer the `DEFAULT_ADMIN_ROLE` to another account. * Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted. * The delay can be changed by scheduling, see {changeDefaultAdminDelay}. * Role transfers must wait at least one block after scheduling before it can be accepted. * It is not possible to use another role to manage the `DEFAULT_ADMIN_ROLE`. Example usage: ```solidity contract MyToken is AccessControlDefaultAdminRules { constructor() AccessControlDefaultAdminRules( 3 days, msg.sender // Explicit initial `DEFAULT_ADMIN_ROLE` holder ) {} } ```","errors":{"AccessControlBadConfirmation()":[{"details":"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."}],"AccessControlEnforcedDefaultAdminDelay(uint48)":[{"details":"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled."}],"AccessControlEnforcedDefaultAdminRules()":[{"details":"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps."}],"AccessControlInvalidDefaultAdmin(address)":[{"details":"The new default admin is not a valid default admin."}],"AccessControlUnauthorizedAccount(address,bytes32)":[{"details":"The `account` is missing a role."}],"SafeCastOverflowedUintDowncast(uint8,uint256)":[{"details":"Value doesn't fit in a uint of `bits` size."}]},"events":{"DefaultAdminDelayChangeCanceled()":{"details":"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass."},"DefaultAdminDelayChangeScheduled(uint48,uint48)":{"details":"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed."},"DefaultAdminTransferCanceled()":{"details":"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule."},"DefaultAdminTransferScheduled(address,uint48)":{"details":"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes."},"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"acceptDefaultAdminTransfer()":{"details":"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed."},"beginDefaultAdminTransfer(address)":{"details":"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event."},"cancelDefaultAdminTransfer()":{"details":"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event."},"changeDefaultAdminDelay(uint48)":{"details":"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event."},"constructor":{"details":"Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address."},"defaultAdmin()":{"details":"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder."},"defaultAdminDelay()":{"details":"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}."},"defaultAdminDelayIncreaseWait()":{"details":"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds)."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"owner()":{"details":"Gets the address of the owner."},"pendingDefaultAdmin()":{"details":"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced."},"pendingDefaultAdminDelay()":{"details":"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule."},"renounceRole(bytes32,address)":{"details":"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role."},"revokeRole(bytes32,address)":{"details":"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"rollbackDefaultAdminDelay()":{"details":"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","acceptDefaultAdminTransfer()":"cefc1429","beginDefaultAdminTransfer(address)":"634e93da","cancelDefaultAdminTransfer()":"d602b9fd","changeDefaultAdminDelay(uint48)":"649a5ec7","defaultAdmin()":"84ef8ffc","defaultAdminDelay()":"cc8463c8","defaultAdminDelayIncreaseWait()":"022d63fb","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","owner()":"8da5cb5b","pendingDefaultAdmin()":"cf6eefb7","pendingDefaultAdminDelay()":"a1eda53c","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rollbackDefaultAdminDelay()":"0aa6220b","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"name\":\"AccessControlEnforcedDefaultAdminDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessControlEnforcedDefaultAdminRules\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"}],\"name\":\"AccessControlInvalidDefaultAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminDelayChangeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminDelayChangeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminTransferCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminTransferScheduled\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"beginDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"}],\"name\":\"changeDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelayIncreaseWait\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"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\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollbackDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {AccessControl} that allows specifying special rules to manage the `DEFAULT_ADMIN_ROLE` holder, which is a sensitive role with special permissions over other roles that may potentially have privileged rights in the system. If a specific role doesn't have an admin role assigned, the holder of the `DEFAULT_ADMIN_ROLE` will have the ability to grant it and revoke it. This contract implements the following risk mitigations on top of {AccessControl}: * Only one account holds the `DEFAULT_ADMIN_ROLE` since deployment until it's potentially renounced. * Enforces a 2-step process to transfer the `DEFAULT_ADMIN_ROLE` to another account. * Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted. * The delay can be changed by scheduling, see {changeDefaultAdminDelay}. * Role transfers must wait at least one block after scheduling before it can be accepted. * It is not possible to use another role to manage the `DEFAULT_ADMIN_ROLE`. Example usage: ```solidity contract MyToken is AccessControlDefaultAdminRules { constructor() AccessControlDefaultAdminRules( 3 days, msg.sender // Explicit initial `DEFAULT_ADMIN_ROLE` holder ) {} } ```\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlEnforcedDefaultAdminDelay(uint48)\":[{\"details\":\"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\"}],\"AccessControlEnforcedDefaultAdminRules()\":[{\"details\":\"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\"}],\"AccessControlInvalidDefaultAdmin(address)\":[{\"details\":\"The new default admin is not a valid default admin.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in a uint of `bits` size.\"}]},\"events\":{\"DefaultAdminDelayChangeCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\"},\"DefaultAdminDelayChangeScheduled(uint48,uint48)\":{\"details\":\"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed.\"},\"DefaultAdminTransferCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\"},\"DefaultAdminTransferScheduled(address,uint48)\":{\"details\":\"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"acceptDefaultAdminTransfer()\":{\"details\":\"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\"},\"beginDefaultAdminTransfer(address)\":{\"details\":\"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event.\"},\"cancelDefaultAdminTransfer()\":{\"details\":\"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event.\"},\"changeDefaultAdminDelay(uint48)\":{\"details\":\"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event.\"},\"constructor\":{\"details\":\"Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address.\"},\"defaultAdmin()\":{\"details\":\"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\"},\"defaultAdminDelay()\":{\"details\":\"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}.\"},\"defaultAdminDelayIncreaseWait()\":{\"details\":\"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"owner()\":{\"details\":\"Gets the address of the owner.\"},\"pendingDefaultAdmin()\":{\"details\":\"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\"},\"pendingDefaultAdminDelay()\":{\"details\":\"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule.\"},\"renounceRole(bytes32,address)\":{\"details\":\"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role.\"},\"revokeRole(bytes32,address)\":{\"details\":\"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"rollbackDefaultAdminDelay()\":{\"details\":\"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol\":\"AccessControlDefaultAdminRules\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4686ec784d75f95beaf2bf5b5f26e5f946d4c864aaee9c3c62bdc18381f5e017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26710ca191913f3c9df542079c4a6dcff02968e92d4f7357daefef9fbe72a19c\",\"dweb:/ipfs/QmanHbeWuBbVEqXySHa1zhm2rExjYpChDBubBaJNTCa2JB\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x5e57537d20a1706f81517842eb09b48a564d5cfc15131537bef76d9c8c100938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c08027cac4185cca5bd35924409cb91aaa43a3fd5629d80c65edbab7c4ee2671\",\"dweb:/ipfs/QmYEhwh5mQZ5NqCaqUm2qLJ1NLcRpwEz87MM7bzXrtCfvD\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x5d8c755a8bfec7cb44cff075c206d642478ebc10c780494bc540cf90f3f25771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a18c2615920ab40a406d658dc7d9f0df0447eddf7c689b29720243a623fea72e\",\"dweb:/ipfs/QmXqCRrcx9A5MhBojvSEsiGhqKDnJjfVaJuF7by3YsKWwf\"]},\"@openzeppelin/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":26,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_roles","offset":0,"slot":"0","type":"t_mapping(t_bytes32,t_struct(RoleData)21_storage)"},{"astId":636,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_pendingDefaultAdmin","offset":0,"slot":"1","type":"t_address"},{"astId":638,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_pendingDefaultAdminSchedule","offset":20,"slot":"1","type":"t_uint48"},{"astId":640,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_currentDelay","offset":26,"slot":"1","type":"t_uint48"},{"astId":642,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_currentDefaultAdmin","offset":0,"slot":"2","type":"t_address"},{"astId":644,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_pendingDelay","offset":20,"slot":"2","type":"t_uint48"},{"astId":646,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"_pendingDelaySchedule","offset":26,"slot":"2","type":"t_uint48"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_struct(RoleData)21_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct AccessControl.RoleData)","numberOfBytes":"32","value":"t_struct(RoleData)21_storage"},"t_struct(RoleData)21_storage":{"encoding":"inplace","label":"struct AccessControl.RoleData","members":[{"astId":18,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"hasRole","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":20,"contract":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol:AccessControlDefaultAdminRules","label":"adminRole","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_uint48":{"encoding":"inplace","label":"uint48","numberOfBytes":"6"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol":{"IAccessControlDefaultAdminRules":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"uint48","name":"schedule","type":"uint48"}],"name":"AccessControlEnforcedDefaultAdminDelay","type":"error"},{"inputs":[],"name":"AccessControlEnforcedDefaultAdminRules","type":"error"},{"inputs":[{"internalType":"address","name":"defaultAdmin","type":"address"}],"name":"AccessControlInvalidDefaultAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[],"name":"DefaultAdminDelayChangeCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint48","name":"newDelay","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"effectSchedule","type":"uint48"}],"name":"DefaultAdminDelayChangeScheduled","type":"event"},{"anonymous":false,"inputs":[],"name":"DefaultAdminTransferCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":false,"internalType":"uint48","name":"acceptSchedule","type":"uint48"}],"name":"DefaultAdminTransferScheduled","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"},{"inputs":[],"name":"acceptDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"beginDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"}],"name":"changeDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelayIncreaseWait","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"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":"pendingDefaultAdmin","outputs":[{"internalType":"address","name":"newAdmin","type":"address"},{"internalType":"uint48","name":"acceptSchedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdminDelay","outputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"},{"internalType":"uint48","name":"effectSchedule","type":"uint48"}],"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":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rollbackDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"External interface of AccessControlDefaultAdminRules declared to support ERC-165 detection.","errors":{"AccessControlBadConfirmation()":[{"details":"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."}],"AccessControlEnforcedDefaultAdminDelay(uint48)":[{"details":"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled."}],"AccessControlEnforcedDefaultAdminRules()":[{"details":"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps."}],"AccessControlInvalidDefaultAdmin(address)":[{"details":"The new default admin is not a valid default admin."}],"AccessControlUnauthorizedAccount(address,bytes32)":[{"details":"The `account` is missing a role."}]},"events":{"DefaultAdminDelayChangeCanceled()":{"details":"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass."},"DefaultAdminDelayChangeScheduled(uint48,uint48)":{"details":"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed."},"DefaultAdminTransferCanceled()":{"details":"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule."},"DefaultAdminTransferScheduled(address,uint48)":{"details":"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes."},"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"acceptDefaultAdminTransfer()":{"details":"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed."},"beginDefaultAdminTransfer(address)":{"details":"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event."},"cancelDefaultAdminTransfer()":{"details":"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event."},"changeDefaultAdminDelay(uint48)":{"details":"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event."},"defaultAdmin()":{"details":"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder."},"defaultAdminDelay()":{"details":"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}."},"defaultAdminDelayIncreaseWait()":{"details":"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds)."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"pendingDefaultAdmin()":{"details":"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced."},"pendingDefaultAdminDelay()":{"details":"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."},"rollbackDefaultAdminDelay()":{"details":"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"acceptDefaultAdminTransfer()":"cefc1429","beginDefaultAdminTransfer(address)":"634e93da","cancelDefaultAdminTransfer()":"d602b9fd","changeDefaultAdminDelay(uint48)":"649a5ec7","defaultAdmin()":"84ef8ffc","defaultAdminDelay()":"cc8463c8","defaultAdminDelayIncreaseWait()":"022d63fb","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","pendingDefaultAdmin()":"cf6eefb7","pendingDefaultAdminDelay()":"a1eda53c","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rollbackDefaultAdminDelay()":"0aa6220b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"name\":\"AccessControlEnforcedDefaultAdminDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessControlEnforcedDefaultAdminRules\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"}],\"name\":\"AccessControlInvalidDefaultAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminDelayChangeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminDelayChangeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminTransferCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminTransferScheduled\",\"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\"},{\"inputs\":[],\"name\":\"acceptDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"beginDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"}],\"name\":\"changeDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelayIncreaseWait\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"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\":\"pendingDefaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollbackDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControlDefaultAdminRules declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlEnforcedDefaultAdminDelay(uint48)\":[{\"details\":\"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\"}],\"AccessControlEnforcedDefaultAdminRules()\":[{\"details\":\"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\"}],\"AccessControlInvalidDefaultAdmin(address)\":[{\"details\":\"The new default admin is not a valid default admin.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"DefaultAdminDelayChangeCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\"},\"DefaultAdminDelayChangeScheduled(uint48,uint48)\":{\"details\":\"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed.\"},\"DefaultAdminTransferCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\"},\"DefaultAdminTransferScheduled(address,uint48)\":{\"details\":\"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"acceptDefaultAdminTransfer()\":{\"details\":\"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\"},\"beginDefaultAdminTransfer(address)\":{\"details\":\"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event.\"},\"cancelDefaultAdminTransfer()\":{\"details\":\"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event.\"},\"changeDefaultAdminDelay(uint48)\":{\"details\":\"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event.\"},\"defaultAdmin()\":{\"details\":\"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\"},\"defaultAdminDelay()\":{\"details\":\"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}.\"},\"defaultAdminDelayIncreaseWait()\":{\"details\":\"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"pendingDefaultAdmin()\":{\"details\":\"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\"},\"pendingDefaultAdminDelay()\":{\"details\":\"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"rollbackDefaultAdminDelay()\":{\"details\":\"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":\"IAccessControlDefaultAdminRules\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x5d8c755a8bfec7cb44cff075c206d642478ebc10c780494bc540cf90f3f25771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a18c2615920ab40a406d658dc7d9f0df0447eddf7c689b29720243a623fea72e\",\"dweb:/ipfs/QmXqCRrcx9A5MhBojvSEsiGhqKDnJjfVaJuF7by3YsKWwf\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC2981.sol":{"IERC2981":{"abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the NFT Royalty Standard. A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal support for royalty payments across all NFT marketplaces and ecosystem participants.","kind":"dev","methods":{"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"royaltyInfo(uint256,uint256)":"2a55205a","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the NFT Royalty Standard. A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal support for royalty payments across all NFT marketplaces and ecosystem participants.\",\"kind\":\"dev\",\"methods\":{\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC2981.sol\":\"IERC2981\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC2981.sol\":{\"keccak256\":\"0xafab0e6c71905303c47dd254168cb31efc91f0ae284cde609b0202f97f85469e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://824d05aec56eb82a2a3c28eece530dc0792d3a008b09d01444e57cf4aceb0445\",\"dweb:/ipfs/QmVvqmJ5UobuRU9Q4JMyXxBfzKs2cpjbWXMNpxX4binTX8\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC5313.sol":{"IERC5313":{"abi":[{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the Light Contract Ownership Standard. A standardized minimal interface required to identify an account that controls a contract","kind":"dev","methods":{"owner()":{"details":"Gets the address of the owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the Light Contract Ownership Standard. A standardized minimal interface required to identify an account that controls a contract\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Gets the address of the owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC5313.sol\":\"IERC5313\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"devdoc":{"details":"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.","errors":{"ERC1155InsufficientBalance(address,uint256,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC1155InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC1155InvalidArrayLength(uint256,uint256)":[{"details":"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.","params":{"idsLength":"Length of the array of token identifiers","valuesLength":"Length of the array of token amounts"}}],"ERC1155InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC1155InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC1155InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC1155MissingApprovalForAll(address,address)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","owner":"Address of the current owner of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC20Errors":{"abi":[{"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"}],"devdoc":{"details":"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"devdoc":{"details":"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf6bb0dc431a9c50e25756412ec14cfcd4dc61dd40b8dc0e1b58ec09fce6d5564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb87fef7e8ed754b8600cd5d42e4f23128059006368ffd19e4d50cc166471ee5\",\"dweb:/ipfs/Qmc1vy1cevKreGUsG7S79gyhNvDtPnNz9qG47eYVHmMKLs\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0xf46268c37522320bb2119a5a394bc5c739a95c0c574c8d08e8c643f4d06e5c76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://517e4b295f35b9947c72ad7379a6089439ece7bb6f4a2ea0a159da13046c039e\",\"dweb:/ipfs/QmZXzkSfLUbvujig3zVbpDHykpHhqLpvQtdiN3B5j4TA3u\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0xc7efbc23214ad7dced8bf2249460f4bda114d57f6a0079f84040654280f455bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f5bd44efca8c8c0d74439e7b808d1f9c4af1df78f91fef8e8bbca8104645435\",\"dweb:/ipfs/Qmb42XSd8MKsEitp42sZkSFGqDRigk6QgGXtiJyJqUZJJ6\"]},\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":1630,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":1632,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":1636,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":1640,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":1644,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":1650,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Required interface of an ERC-721 compliant contract.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC-721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for any contract that wants to support safeTransfers from ERC-721 asset contracts.","kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"title":"ERC-721 token receiver interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC-721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC-721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol":{"ERC721Enumerable":{"abi":[{"inputs":[],"name":"ERC721EnumerableForbiddenBatchMint","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"ERC721OutOfBoundsIndex","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"This implements an optional extension of {ERC721} defined in the ERC that adds enumerability of all the token ids in the contract as well as all token ids owned by each account. CAUTION: {ERC721} extensions that implement custom `balanceOf` logic, such as {ERC721Consecutive}, interfere with enumerability and should not be used together with {ERC721Enumerable}.","errors":{"ERC721EnumerableForbiddenBatchMint()":[{"details":"Batch mint is not allowed."}],"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}],"ERC721OutOfBoundsIndex(address,uint256)":[{"details":"An `owner`'s token query was out of bounds for `index`. NOTE: The owner being `address(0)` indicates a global out of bounds index."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenByIndex(uint256)":{"details":"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens."},"tokenOfOwnerByIndex(address,uint256)":{"details":"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"totalSupply()":{"details":"Returns the total amount of tokens stored by the contract."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ERC721EnumerableForbiddenBatchMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ERC721OutOfBoundsIndex\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This implements an optional extension of {ERC721} defined in the ERC that adds enumerability of all the token ids in the contract as well as all token ids owned by each account. CAUTION: {ERC721} extensions that implement custom `balanceOf` logic, such as {ERC721Consecutive}, interfere with enumerability and should not be used together with {ERC721Enumerable}.\",\"errors\":{\"ERC721EnumerableForbiddenBatchMint()\":[{\"details\":\"Batch mint is not allowed.\"}],\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721OutOfBoundsIndex(address,uint256)\":[{\"details\":\"An `owner`'s token query was out of bounds for `index`. NOTE: The owner being `address(0)` indicates a global out of bounds index.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":\"ERC721Enumerable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf6bb0dc431a9c50e25756412ec14cfcd4dc61dd40b8dc0e1b58ec09fce6d5564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb87fef7e8ed754b8600cd5d42e4f23128059006368ffd19e4d50cc166471ee5\",\"dweb:/ipfs/Qmc1vy1cevKreGUsG7S79gyhNvDtPnNz9qG47eYVHmMKLs\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0x68cc639388c16ad78d3a8e031f525e74ae05713fc7a75254f4627fc66fee1078\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b0e8219411f017a1f87c4554cb21c093bdbd59e667c5d1318bc309439f6f1f8\",\"dweb:/ipfs/Qmf5wwg7BT8GLJCUH4Qw4QQfDwjYLzUvzLmbsDafQmmnVr\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xaa3852717be1903bf8b8a66c7ce323f70ac93227769c450f2b332fdd16bd9198\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09ce2e4a5b1064a392594c0d5efeb3ccd8eacf431e55a85574cafb6bfb72ba69\",\"dweb:/ipfs/QmUbT5UomYpwwMrNMzzuNcGb4sxuMZ4jz8mMPZewX8mEPn\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0xf46268c37522320bb2119a5a394bc5c739a95c0c574c8d08e8c643f4d06e5c76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://517e4b295f35b9947c72ad7379a6089439ece7bb6f4a2ea0a159da13046c039e\",\"dweb:/ipfs/QmZXzkSfLUbvujig3zVbpDHykpHhqLpvQtdiN3B5j4TA3u\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0xc7efbc23214ad7dced8bf2249460f4bda114d57f6a0079f84040654280f455bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f5bd44efca8c8c0d74439e7b808d1f9c4af1df78f91fef8e8bbca8104645435\",\"dweb:/ipfs/Qmb42XSd8MKsEitp42sZkSFGqDRigk6QgGXtiJyJqUZJJ6\"]},\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":1630,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":1632,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":1636,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":1640,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":1644,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":1650,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":2723,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_ownedTokens","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_uint256,t_uint256))"},{"astId":2727,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_ownedTokensIndex","offset":0,"slot":"7","type":"t_mapping(t_uint256,t_uint256)"},{"astId":2730,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_allTokens","offset":0,"slot":"8","type":"t_array(t_uint256)dyn_storage"},{"astId":2734,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_allTokensIndex","offset":0,"slot":"9","type":"t_mapping(t_uint256,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)dyn_storage":{"base":"t_uint256","encoding":"dynamic_array","label":"uint256[]","numberOfBytes":"32"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_mapping(t_uint256,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => uint256))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"IERC721Enumerable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"See https://eips.ethereum.org/EIPS/eip-721","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"tokenByIndex(uint256)":{"details":"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens."},"tokenOfOwnerByIndex(address,uint256)":{"details":"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"totalSupply()":{"details":"Returns the total amount of tokens stored by the contract."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"title":"ERC-721 Non-Fungible Token Standard, optional enumeration extension","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xaa3852717be1903bf8b8a66c7ce323f70ac93227769c450f2b332fdd16bd9198\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09ce2e4a5b1064a392594c0d5efeb3ccd8eacf431e55a85574cafb6bfb72ba69\",\"dweb:/ipfs/QmUbT5UomYpwwMrNMzzuNcGb4sxuMZ4jz8mMPZewX8mEPn\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"See https://eips.ethereum.org/EIPS/eip-721","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0xf46268c37522320bb2119a5a394bc5c739a95c0c574c8d08e8c643f4d06e5c76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://517e4b295f35b9947c72ad7379a6089439ece7bb6f4a2ea0a159da13046c039e\",\"dweb:/ipfs/QmZXzkSfLUbvujig3zVbpDHykpHhqLpvQtdiN3B5j4TA3u\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol":{"ERC721Utils":{"abi":[],"devdoc":{"details":"Library that provides common ERC-721 utility functions. See https://eips.ethereum.org/EIPS/eip-721[ERC-721]. _Available since v5.1._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220966bc2cbbaf5743b0397836f0fc6bdd44da5f90ea2b42f34971515f5c9451bda64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 PUSH12 0xC2CBBAF5743B0397836F0FC6 0xBD 0xD4 0x4D 0xA5 0xF9 0xE LOG2 0xB4 0x2F CALLVALUE SWAP8 ISZERO ISZERO CREATE2 0xC9 GASLIMIT SHL 0xDA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"432:1490:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;432:1490:15;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220966bc2cbbaf5743b0397836f0fc6bdd44da5f90ea2b42f34971515f5c9451bda64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 PUSH12 0xC2CBBAF5743B0397836F0FC6 0xBD 0xD4 0x4D 0xA5 0xF9 0xE LOG2 0xB4 0x2F CALLVALUE SWAP8 ISZERO ISZERO CREATE2 0xC9 GASLIMIT SHL 0xDA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"432:1490:15:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library that provides common ERC-721 utility functions. See https://eips.ethereum.org/EIPS/eip-721[ERC-721]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":\"ERC721Utils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0xc7efbc23214ad7dced8bf2249460f4bda114d57f6a0079f84040654280f455bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f5bd44efca8c8c0d74439e7b808d1f9c4af1df78f91fef8e8bbca8104645435\",\"dweb:/ipfs/Qmb42XSd8MKsEitp42sZkSFGqDRigk6QgGXtiJyJqUZJJ6\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/common/ERC2981.sol":{"ERC2981":{"abi":[{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidDefaultRoyalty","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidDefaultRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidTokenRoyalty","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidTokenRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the fee is specified in basis points by default. IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the ERC. Marketplaces are expected to voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.","errors":{"ERC2981InvalidDefaultRoyalty(uint256,uint256)":[{"details":"The default royalty set is invalid (eg. (numerator / denominator) >= 1)."}],"ERC2981InvalidDefaultRoyaltyReceiver(address)":[{"details":"The default royalty receiver is invalid."}],"ERC2981InvalidTokenRoyalty(uint256,uint256,uint256)":[{"details":"The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1)."}],"ERC2981InvalidTokenRoyaltyReceiver(uint256,address)":[{"details":"The royalty receiver for `tokenId` is invalid."}]},"kind":"dev","methods":{"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"royaltyInfo(uint256,uint256)":"2a55205a","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"ERC2981InvalidDefaultRoyalty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC2981InvalidDefaultRoyaltyReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"ERC2981InvalidTokenRoyalty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC2981InvalidTokenRoyaltyReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the fee is specified in basis points by default. IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the ERC. Marketplaces are expected to voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.\",\"errors\":{\"ERC2981InvalidDefaultRoyalty(uint256,uint256)\":[{\"details\":\"The default royalty set is invalid (eg. (numerator / denominator) >= 1).\"}],\"ERC2981InvalidDefaultRoyaltyReceiver(address)\":[{\"details\":\"The default royalty receiver is invalid.\"}],\"ERC2981InvalidTokenRoyalty(uint256,uint256,uint256)\":[{\"details\":\"The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1).\"}],\"ERC2981InvalidTokenRoyaltyReceiver(uint256,address)\":[{\"details\":\"The royalty receiver for `tokenId` is invalid.\"}]},\"kind\":\"dev\",\"methods\":{\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/common/ERC2981.sol\":\"ERC2981\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC2981.sol\":{\"keccak256\":\"0xafab0e6c71905303c47dd254168cb31efc91f0ae284cde609b0202f97f85469e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://824d05aec56eb82a2a3c28eece530dc0792d3a008b09d01444e57cf4aceb0445\",\"dweb:/ipfs/QmVvqmJ5UobuRU9Q4JMyXxBfzKs2cpjbWXMNpxX4binTX8\"]},\"@openzeppelin/contracts/token/common/ERC2981.sol\":{\"keccak256\":\"0xa33062c6e0675a74a27b06a4ae4c6ad4d3b7219e27d9c146a4ac57295096d393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://777543d88013fdd0ee7f47ac619fb13a1993bb667675d8816fde024f73cfbf2d\",\"dweb:/ipfs/QmfDS9uL1XZ2oUe1PH8eRCRyu3Hf98cK8ksGf4Ww7kg5zv\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":3247,"contract":"@openzeppelin/contracts/token/common/ERC2981.sol:ERC2981","label":"_defaultRoyaltyInfo","offset":0,"slot":"0","type":"t_struct(RoyaltyInfo)3244_storage"},{"astId":3252,"contract":"@openzeppelin/contracts/token/common/ERC2981.sol:ERC2981","label":"_tokenRoyaltyInfo","offset":0,"slot":"1","type":"t_mapping(t_uint256,t_struct(RoyaltyInfo)3244_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_uint256,t_struct(RoyaltyInfo)3244_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct ERC2981.RoyaltyInfo)","numberOfBytes":"32","value":"t_struct(RoyaltyInfo)3244_storage"},"t_struct(RoyaltyInfo)3244_storage":{"encoding":"inplace","label":"struct ERC2981.RoyaltyInfo","members":[{"astId":3241,"contract":"@openzeppelin/contracts/token/common/ERC2981.sol:ERC2981","label":"receiver","offset":0,"slot":"0","type":"t_address"},{"astId":3243,"contract":"@openzeppelin/contracts/token/common/ERC2981.sol:ERC2981","label":"royaltyFraction","offset":20,"slot":"0","type":"t_uint96"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Bytes.sol":{"Bytes":{"abi":[],"devdoc":{"details":"Bytes operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220c67dd7fdc3183f2ccffbe8ba954eb31c5bcd56ebd252e7d4046f41097cc3af3c64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 PUSH30 0xD7FDC3183F2CCFFBE8BA954EB31C5BCD56EBD252E7D4046F41097CC3AF3C PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"198:14538:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;198:14538:17;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220c67dd7fdc3183f2ccffbe8ba954eb31c5bcd56ebd252e7d4046f41097cc3af3c64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 PUSH30 0xD7FDC3183F2CCFFBE8BA954EB31C5BCD56EBD252E7D4046F41097CC3AF3C PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"198:14538:17:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Bytes operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Bytes.sol\":\"Bytes\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Panic.sol":{"Panic":{"abi":[],"devdoc":{"details":"Helper library for emitting standardized panic codes. ```solidity contract Example { using Panic for uint256; // Use any of the declared internal constants function foo() { Panic.GENERIC.panic(); } // Alternatively function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._","kind":"dev","methods":{},"stateVariables":{"ARRAY_OUT_OF_BOUNDS":{"details":"array out of bounds access"},"ASSERT":{"details":"used by the assert() builtin"},"DIVISION_BY_ZERO":{"details":"division or modulo by zero"},"EMPTY_ARRAY_POP":{"details":"empty array pop"},"ENUM_CONVERSION_ERROR":{"details":"enum conversion error"},"GENERIC":{"details":"generic / unspecified error"},"INVALID_INTERNAL_FUNCTION":{"details":"calling invalid internal function"},"RESOURCE_ERROR":{"details":"resource error (too large allocation or too large array)"},"STORAGE_ENCODING_ERROR":{"details":"invalid encoding in storage"},"UNDER_OVERFLOW":{"details":"arithmetic underflow or overflow"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122022069ac55900f6a29e5e40067718af40945cfaad89cf3030f909da111e3e7caf64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 MOD SWAP11 0xC5 MSIZE STOP 0xF6 LOG2 SWAP15 MCOPY BLOCKHASH MOD PUSH24 0x18AF40945CFAAD89CF3030F909DA111E3E7CAF64736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"657:1315:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;657:1315:19;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122022069ac55900f6a29e5e40067718af40945cfaad89cf3030f909da111e3e7caf64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 MOD SWAP11 0xC5 MSIZE STOP 0xF6 LOG2 SWAP15 MCOPY BLOCKHASH MOD PUSH24 0x18AF40945CFAAD89CF3030F909DA111E3E7CAF64736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"657:1315:19:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example { using Panic for uint256; // Use any of the declared internal constants function foo() { Panic.GENERIC.panic(); } // Alternatively function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Pausable.sol":{"Pausable":{"abi":[{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.","errors":{"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}]},"events":{"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."}},"kind":"dev","methods":{"paused()":{"details":"Returns true if the contract is paused, and false otherwise."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"paused()":"5c975abb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":4386,"contract":"@openzeppelin/contracts/utils/Pausable.sol:Pausable","label":"_paused","offset":0,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"}],"devdoc":{"custom:stateless":"","details":"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. IMPORTANT: Deprecated. This storage-based reentrancy guard will be removed and replaced by the {ReentrancyGuardTransient} variant in v6.0.","errors":{"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"custom:stateless\":\"\",\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. IMPORTANT: Deprecated. This storage-based reentrancy guard will be removed and replaced by the {ReentrancyGuardTransient} variant in v6.0.\",\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99\",\"dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122042851c92114da71f299d79fe664afa2e562fd3083c15ae52111e85361434430d64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP DUP6 SHR SWAP3 GT 0x4D 0xA7 0x1F 0x29 SWAP14 PUSH26 0xFE664AFA2E562FD3083C15AE52111E85361434430D64736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1407:2774:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1407:2774:22;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122042851c92114da71f299d79fe664afa2e562fd3083c15ae52111e85361434430d64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP DUP6 SHR SWAP3 GT 0x4D 0xA7 0x1F 0x29 SWAP14 PUSH26 0xFE664AFA2E562FD3083C15AE52111E85361434430D64736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1407:2774:22:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"StringsInsufficientHexLength","type":"error"},{"inputs":[],"name":"StringsInvalidAddressFormat","type":"error"},{"inputs":[],"name":"StringsInvalidChar","type":"error"}],"devdoc":{"details":"String operations.","errors":{"StringsInsufficientHexLength(uint256,uint256)":[{"details":"The `value` string doesn't fit in the specified `length`."}],"StringsInvalidAddressFormat()":[{"details":"The string being parsed is not a properly formatted address."}],"StringsInvalidChar()":[{"details":"The string being parsed contains characters that are not in scope of the given base."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200a837edfa6e61bdbcebb2b67b2b1fdd0e5b329937f3bb67c3668d478cd08fe5664736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP DUP4 PUSH31 0xDFA6E61BDBCEBB2B67B2B1FDD0E5B329937F3BB67C3668D478CD08FE566473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"332:21205:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;332:21205:23;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200a837edfa6e61bdbcebb2b67b2b1fdd0e5b329937f3bb67c3668d478cd08fe5664736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP DUP4 PUSH31 0xDFA6E61BDBCEBB2B67B2B1FDD0E5B329937F3BB67C3668D478CD08FE566473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"332:21205:23:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidAddressFormat\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidChar\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}],\"StringsInvalidAddressFormat()\":[{\"details\":\"The string being parsed is not a properly formatted address.\"}],\"StringsInvalidChar()\":[{\"details\":\"The string being parsed contains characters that are not in scope of the given base.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200095ce9411f7a751e3f9528ec5bdec90e7cea7cb900fb4e4125b2e0e2122ec0e64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STOP SWAP6 0xCE SWAP5 GT 0xF7 0xA7 MLOAD 0xE3 0xF9 MSTORE DUP15 0xC5 0xBD 0xEC SWAP1 0xE7 0xCE 0xA7 0xCB SWAP1 0xF 0xB4 0xE4 SLT JUMPDEST 0x2E 0xE 0x21 0x22 0xEC 0xE PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"281:32382:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:32382:26;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200095ce9411f7a751e3f9528ec5bdec90e7cea7cb900fb4e4125b2e0e2122ec0e64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STOP SWAP6 0xCE SWAP5 GT 0xF7 0xA7 MLOAD 0xE3 0xF9 MSTORE DUP15 0xC5 0xBD 0xEC SWAP1 0xE7 0xCE 0xA7 0xCB SWAP1 0xF 0xB4 0xE4 SLT JUMPDEST 0x2E 0xE 0x21 0x22 0xEC 0xE PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"281:32382:26:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntDowncast","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"}],"devdoc":{"details":"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.","errors":{"SafeCastOverflowedIntDowncast(uint8,int256)":[{"details":"Value doesn't fit in an int of `bits` size."}],"SafeCastOverflowedIntToUint(int256)":[{"details":"An int value doesn't fit in a uint of `bits` size."}],"SafeCastOverflowedUintDowncast(uint8,uint256)":[{"details":"Value doesn't fit in a uint of `bits` size."}],"SafeCastOverflowedUintToInt(uint256)":[{"details":"A uint value doesn't fit in an int of `bits` size."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220193a94c9e4f48ade38f2470be071758de2d1c2dbc3913cea4639c62edce19eda64736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT GASPRICE SWAP5 0xC9 0xE4 DELEGATECALL DUP11 0xDE CODESIZE CALLCODE SELFBALANCE SIGNEXTEND 0xE0 PUSH18 0x758DE2D1C2DBC3913CEA4639C62EDCE19EDA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"769:34170:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;769:34170:27;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220193a94c9e4f48ade38f2470be071758de2d1c2dbc3913cea4639c62edce19eda64736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT GASPRICE SWAP5 0xC9 0xE4 DELEGATECALL DUP11 0xDE CODESIZE CALLCODE SELFBALANCE SIGNEXTEND 0xE0 PUSH18 0x758DE2D1C2DBC3913CEA4639C62EDCE19EDA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"769:34170:27:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in a uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in a uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"A uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204b83036d7498f4e22547db3b139d17c4ffcde45da093dbbced6e203959e8748464736f6c634300081a0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B DUP4 SUB PUSH14 0x7498F4E22547DB3B139D17C4FFCD 0xE4 TSTORE LOG0 SWAP4 0xDB 0xBC 0xED PUSH15 0x203959E8748464736F6C634300081A STOP CALLER ","sourceMap":"258:2354:28:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;258:2354:28;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204b83036d7498f4e22547db3b139d17c4ffcde45da093dbbced6e203959e8748464736f6c634300081a0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B DUP4 SUB PUSH14 0x7498F4E22547DB3B139D17C4FFCD 0xE4 TSTORE LOG0 SWAP4 0xDB 0xBC 0xED PUSH15 0x203959E8748464736F6C634300081A STOP CALLER ","sourceMap":"258:2354:28:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/TricksforBoosterNFT.sol":{"TricksforBoosterNFT":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"baseURI_","type":"string"},{"internalType":"string","name":"contractMetadataURI_","type":"string"},{"internalType":"address","name":"royaltyReceiver_","type":"address"},{"internalType":"uint96","name":"royaltyFeeBasisPoints_","type":"uint96"},{"internalType":"address","name":"initialAdmin_","type":"address"},{"internalType":"address","name":"initialMinter_","type":"address"},{"internalType":"uint48","name":"defaultAdminDelay_","type":"uint48"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"uint48","name":"schedule","type":"uint48"}],"name":"AccessControlEnforcedDefaultAdminDelay","type":"error"},{"inputs":[],"name":"AccessControlEnforcedDefaultAdminRules","type":"error"},{"inputs":[{"internalType":"address","name":"defaultAdmin","type":"address"}],"name":"AccessControlInvalidDefaultAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidDefaultRoyalty","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidDefaultRoyaltyReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"ERC2981InvalidTokenRoyalty","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC2981InvalidTokenRoyaltyReceiver","type":"error"},{"inputs":[],"name":"ERC721EnumerableForbiddenBatchMint","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"ERC721OutOfBoundsIndex","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"previousURI","type":"string"},{"indexed":false,"internalType":"string","name":"newURI","type":"string"}],"name":"BaseURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"previousURI","type":"string"},{"indexed":false,"internalType":"string","name":"newURI","type":"string"}],"name":"ContractURIUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"DefaultAdminDelayChangeCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint48","name":"newDelay","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"effectSchedule","type":"uint48"}],"name":"DefaultAdminDelayChangeScheduled","type":"event"},{"anonymous":false,"inputs":[],"name":"DefaultAdminTransferCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":false,"internalType":"uint48","name":"acceptSchedule","type":"uint48"}],"name":"DefaultAdminTransferScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint96","name":"feeBasisPoints","type":"uint96"}],"name":"DefaultRoyaltyUpdated","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":true,"internalType":"uint256","name":"tokenId","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":"acceptDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"beginDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"}],"name":"changeDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelayIncreaseWait","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdmin","outputs":[{"internalType":"address","name":"newAdmin","type":"address"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdminDelay","outputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rollbackDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"contractMetadataURI_","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeBasisPoints","type":"uint96"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Does not include staking logic — staking is handled by TricksforBoosterStaking.","errors":{"AccessControlBadConfirmation()":[{"details":"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."}],"AccessControlEnforcedDefaultAdminDelay(uint48)":[{"details":"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled."}],"AccessControlEnforcedDefaultAdminRules()":[{"details":"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps."}],"AccessControlInvalidDefaultAdmin(address)":[{"details":"The new default admin is not a valid default admin."}],"AccessControlUnauthorizedAccount(address,bytes32)":[{"details":"The `account` is missing a role."}],"ERC2981InvalidDefaultRoyalty(uint256,uint256)":[{"details":"The default royalty set is invalid (eg. (numerator / denominator) >= 1)."}],"ERC2981InvalidDefaultRoyaltyReceiver(address)":[{"details":"The default royalty receiver is invalid."}],"ERC2981InvalidTokenRoyalty(uint256,uint256,uint256)":[{"details":"The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1)."}],"ERC2981InvalidTokenRoyaltyReceiver(uint256,address)":[{"details":"The royalty receiver for `tokenId` is invalid."}],"ERC721EnumerableForbiddenBatchMint()":[{"details":"Batch mint is not allowed."}],"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}],"ERC721OutOfBoundsIndex(address,uint256)":[{"details":"An `owner`'s token query was out of bounds for `index`. NOTE: The owner being `address(0)` indicates a global out of bounds index."}],"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}],"SafeCastOverflowedUintDowncast(uint8,uint256)":[{"details":"Value doesn't fit in a uint of `bits` size."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"DefaultAdminDelayChangeCanceled()":{"details":"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass."},"DefaultAdminDelayChangeScheduled(uint48,uint48)":{"details":"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed."},"DefaultAdminTransferCanceled()":{"details":"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule."},"DefaultAdminTransferScheduled(address,uint48)":{"details":"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes."},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this."},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."}},"kind":"dev","methods":{"acceptDefaultAdminTransfer()":{"details":"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed."},"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"beginDefaultAdminTransfer(address)":{"details":"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event."},"cancelDefaultAdminTransfer()":{"details":"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event."},"changeDefaultAdminDelay(uint48)":{"details":"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event."},"constructor":{"params":{"baseURI_":"Base URI for token metadata (appended with tokenId)","contractMetadataURI_":"URI for OpenSea collection-level metadata","defaultAdminDelay_":"Delay in seconds for default-admin transfers","initialAdmin_":"Initial default administrator","initialMinter_":"Initial account authorized to mint","name_":"ERC-721 collection name","royaltyFeeBasisPoints_":"Royalty fee in basis points (10 000 = 100%)","royaltyReceiver_":"Address that receives royalty payments","symbol_":"ERC-721 collection symbol"}},"defaultAdmin()":{"details":"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder."},"defaultAdminDelay()":{"details":"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}."},"defaultAdminDelayIncreaseWait()":{"details":"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds)."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"owner()":{"details":"Gets the address of the owner."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"pendingDefaultAdmin()":{"details":"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced."},"pendingDefaultAdminDelay()":{"details":"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule."},"renounceRole(bytes32,address)":{"details":"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role."},"revokeRole(bytes32,address)":{"details":"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"rollbackDefaultAdminDelay()":{"details":"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers."},"safeMint(address,uint256)":{"params":{"to":"Recipient address for the minted token.","tokenId":"Token ID to mint. Must not already exist."}},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"setBaseURI(string)":{"params":{"baseURI_":"New base URI string."}},"setContractURI(string)":{"params":{"contractMetadataURI_":"New collection metadata URI."}},"setRoyaltyInfo(address,uint96)":{"params":{"feeBasisPoints":"Royalty fee in basis points (10 000 = 100%).","receiver":"Address that receives royalty payments."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenByIndex(uint256)":{"details":"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens."},"tokenOfOwnerByIndex(address,uint256)":{"details":"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"totalSupply()":{"details":"Returns the total amount of tokens stored by the contract."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"title":"TricksforBoosterNFT","version":1},"evm":{"bytecode":{"functionDebugData":{"@_1667":{"entryPoint":null,"id":1667,"parameterSlots":2,"returnSlots":0},"@_679":{"entryPoint":null,"id":679,"parameterSlots":2,"returnSlots":0},"@_9957":{"entryPoint":null,"id":9957,"parameterSlots":9,"returnSlots":0},"@_feeDenominator_3375":{"entryPoint":null,"id":3375,"parameterSlots":0,"returnSlots":1},"@_grantRole_256":{"entryPoint":610,"id":256,"parameterSlots":2,"returnSlots":1},"@_grantRole_865":{"entryPoint":337,"id":865,"parameterSlots":2,"returnSlots":1},"@_msgSender_4307":{"entryPoint":null,"id":4307,"parameterSlots":0,"returnSlots":1},"@_setDefaultRoyalty_3421":{"entryPoint":448,"id":3421,"parameterSlots":2,"returnSlots":0},"@defaultAdmin_930":{"entryPoint":null,"id":930,"parameterSlots":0,"returnSlots":1},"@hasRole_80":{"entryPoint":null,"id":80,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":938,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":801,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint96t_addresst_addresst_uint48_fromMemory":{"entryPoint":1008,"id":null,"parameterSlots":2,"returnSlots":9},"abi_decode_uint48_fromMemory":{"entryPoint":987,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint96_fromMemory":{"entryPoint":965,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":1332,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":1408,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1276,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":781,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:5832:32","nodeType":"YulBlock","src":"0:5832:32","statements":[{"nativeSrc":"6:3:32","nodeType":"YulBlock","src":"6:3:32","statements":[]},{"body":{"nativeSrc":"46:95:32","nodeType":"YulBlock","src":"46:95:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:32","nodeType":"YulLiteral","src":"63:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:32","nodeType":"YulLiteral","src":"70:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:32","nodeType":"YulLiteral","src":"75:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:32","nodeType":"YulIdentifier","src":"66:3:32"},"nativeSrc":"66:20:32","nodeType":"YulFunctionCall","src":"66:20:32"}],"functionName":{"name":"mstore","nativeSrc":"56:6:32","nodeType":"YulIdentifier","src":"56:6:32"},"nativeSrc":"56:31:32","nodeType":"YulFunctionCall","src":"56:31:32"},"nativeSrc":"56:31:32","nodeType":"YulExpressionStatement","src":"56:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:32","nodeType":"YulLiteral","src":"103:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:32","nodeType":"YulLiteral","src":"106:4:32","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:32","nodeType":"YulIdentifier","src":"96:6:32"},"nativeSrc":"96:15:32","nodeType":"YulFunctionCall","src":"96:15:32"},"nativeSrc":"96:15:32","nodeType":"YulExpressionStatement","src":"96:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:32","nodeType":"YulLiteral","src":"127:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:32","nodeType":"YulLiteral","src":"130:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:32","nodeType":"YulIdentifier","src":"120:6:32"},"nativeSrc":"120:15:32","nodeType":"YulFunctionCall","src":"120:15:32"},"nativeSrc":"120:15:32","nodeType":"YulExpressionStatement","src":"120:15:32"}]},"name":"panic_error_0x41","nativeSrc":"14:127:32","nodeType":"YulFunctionDefinition","src":"14:127:32"},{"body":{"nativeSrc":"210:659:32","nodeType":"YulBlock","src":"210:659:32","statements":[{"body":{"nativeSrc":"259:16:32","nodeType":"YulBlock","src":"259:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"268:1:32","nodeType":"YulLiteral","src":"268:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"271:1:32","nodeType":"YulLiteral","src":"271:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"261:6:32","nodeType":"YulIdentifier","src":"261:6:32"},"nativeSrc":"261:12:32","nodeType":"YulFunctionCall","src":"261:12:32"},"nativeSrc":"261:12:32","nodeType":"YulExpressionStatement","src":"261:12:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"238:6:32","nodeType":"YulIdentifier","src":"238:6:32"},{"kind":"number","nativeSrc":"246:4:32","nodeType":"YulLiteral","src":"246:4:32","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"234:3:32","nodeType":"YulIdentifier","src":"234:3:32"},"nativeSrc":"234:17:32","nodeType":"YulFunctionCall","src":"234:17:32"},{"name":"end","nativeSrc":"253:3:32","nodeType":"YulIdentifier","src":"253:3:32"}],"functionName":{"name":"slt","nativeSrc":"230:3:32","nodeType":"YulIdentifier","src":"230:3:32"},"nativeSrc":"230:27:32","nodeType":"YulFunctionCall","src":"230:27:32"}],"functionName":{"name":"iszero","nativeSrc":"223:6:32","nodeType":"YulIdentifier","src":"223:6:32"},"nativeSrc":"223:35:32","nodeType":"YulFunctionCall","src":"223:35:32"},"nativeSrc":"220:55:32","nodeType":"YulIf","src":"220:55:32"},{"nativeSrc":"284:27:32","nodeType":"YulVariableDeclaration","src":"284:27:32","value":{"arguments":[{"name":"offset","nativeSrc":"304:6:32","nodeType":"YulIdentifier","src":"304:6:32"}],"functionName":{"name":"mload","nativeSrc":"298:5:32","nodeType":"YulIdentifier","src":"298:5:32"},"nativeSrc":"298:13:32","nodeType":"YulFunctionCall","src":"298:13:32"},"variables":[{"name":"length","nativeSrc":"288:6:32","nodeType":"YulTypedName","src":"288:6:32","type":""}]},{"body":{"nativeSrc":"354:22:32","nodeType":"YulBlock","src":"354:22:32","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"356:16:32","nodeType":"YulIdentifier","src":"356:16:32"},"nativeSrc":"356:18:32","nodeType":"YulFunctionCall","src":"356:18:32"},"nativeSrc":"356:18:32","nodeType":"YulExpressionStatement","src":"356:18:32"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"326:6:32","nodeType":"YulIdentifier","src":"326:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"342:2:32","nodeType":"YulLiteral","src":"342:2:32","type":"","value":"64"},{"kind":"number","nativeSrc":"346:1:32","nodeType":"YulLiteral","src":"346:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"338:3:32","nodeType":"YulIdentifier","src":"338:3:32"},"nativeSrc":"338:10:32","nodeType":"YulFunctionCall","src":"338:10:32"},{"kind":"number","nativeSrc":"350:1:32","nodeType":"YulLiteral","src":"350:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"334:3:32","nodeType":"YulIdentifier","src":"334:3:32"},"nativeSrc":"334:18:32","nodeType":"YulFunctionCall","src":"334:18:32"}],"functionName":{"name":"gt","nativeSrc":"323:2:32","nodeType":"YulIdentifier","src":"323:2:32"},"nativeSrc":"323:30:32","nodeType":"YulFunctionCall","src":"323:30:32"},"nativeSrc":"320:56:32","nodeType":"YulIf","src":"320:56:32"},{"nativeSrc":"385:23:32","nodeType":"YulVariableDeclaration","src":"385:23:32","value":{"arguments":[{"kind":"number","nativeSrc":"405:2:32","nodeType":"YulLiteral","src":"405:2:32","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"399:5:32","nodeType":"YulIdentifier","src":"399:5:32"},"nativeSrc":"399:9:32","nodeType":"YulFunctionCall","src":"399:9:32"},"variables":[{"name":"memPtr","nativeSrc":"389:6:32","nodeType":"YulTypedName","src":"389:6:32","type":""}]},{"nativeSrc":"417:85:32","nodeType":"YulVariableDeclaration","src":"417:85:32","value":{"arguments":[{"name":"memPtr","nativeSrc":"439:6:32","nodeType":"YulIdentifier","src":"439:6:32"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"463:6:32","nodeType":"YulIdentifier","src":"463:6:32"},{"kind":"number","nativeSrc":"471:4:32","nodeType":"YulLiteral","src":"471:4:32","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"459:3:32","nodeType":"YulIdentifier","src":"459:3:32"},"nativeSrc":"459:17:32","nodeType":"YulFunctionCall","src":"459:17:32"},{"arguments":[{"kind":"number","nativeSrc":"482:2:32","nodeType":"YulLiteral","src":"482:2:32","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"478:3:32","nodeType":"YulIdentifier","src":"478:3:32"},"nativeSrc":"478:7:32","nodeType":"YulFunctionCall","src":"478:7:32"}],"functionName":{"name":"and","nativeSrc":"455:3:32","nodeType":"YulIdentifier","src":"455:3:32"},"nativeSrc":"455:31:32","nodeType":"YulFunctionCall","src":"455:31:32"},{"kind":"number","nativeSrc":"488:2:32","nodeType":"YulLiteral","src":"488:2:32","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"451:3:32","nodeType":"YulIdentifier","src":"451:3:32"},"nativeSrc":"451:40:32","nodeType":"YulFunctionCall","src":"451:40:32"},{"arguments":[{"kind":"number","nativeSrc":"497:2:32","nodeType":"YulLiteral","src":"497:2:32","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"493:3:32","nodeType":"YulIdentifier","src":"493:3:32"},"nativeSrc":"493:7:32","nodeType":"YulFunctionCall","src":"493:7:32"}],"functionName":{"name":"and","nativeSrc":"447:3:32","nodeType":"YulIdentifier","src":"447:3:32"},"nativeSrc":"447:54:32","nodeType":"YulFunctionCall","src":"447:54:32"}],"functionName":{"name":"add","nativeSrc":"435:3:32","nodeType":"YulIdentifier","src":"435:3:32"},"nativeSrc":"435:67:32","nodeType":"YulFunctionCall","src":"435:67:32"},"variables":[{"name":"newFreePtr","nativeSrc":"421:10:32","nodeType":"YulTypedName","src":"421:10:32","type":""}]},{"body":{"nativeSrc":"577:22:32","nodeType":"YulBlock","src":"577:22:32","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"579:16:32","nodeType":"YulIdentifier","src":"579:16:32"},"nativeSrc":"579:18:32","nodeType":"YulFunctionCall","src":"579:18:32"},"nativeSrc":"579:18:32","nodeType":"YulExpressionStatement","src":"579:18:32"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"520:10:32","nodeType":"YulIdentifier","src":"520:10:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"540:2:32","nodeType":"YulLiteral","src":"540:2:32","type":"","value":"64"},{"kind":"number","nativeSrc":"544:1:32","nodeType":"YulLiteral","src":"544:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"536:3:32","nodeType":"YulIdentifier","src":"536:3:32"},"nativeSrc":"536:10:32","nodeType":"YulFunctionCall","src":"536:10:32"},{"kind":"number","nativeSrc":"548:1:32","nodeType":"YulLiteral","src":"548:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"532:3:32","nodeType":"YulIdentifier","src":"532:3:32"},"nativeSrc":"532:18:32","nodeType":"YulFunctionCall","src":"532:18:32"}],"functionName":{"name":"gt","nativeSrc":"517:2:32","nodeType":"YulIdentifier","src":"517:2:32"},"nativeSrc":"517:34:32","nodeType":"YulFunctionCall","src":"517:34:32"},{"arguments":[{"name":"newFreePtr","nativeSrc":"556:10:32","nodeType":"YulIdentifier","src":"556:10:32"},{"name":"memPtr","nativeSrc":"568:6:32","nodeType":"YulIdentifier","src":"568:6:32"}],"functionName":{"name":"lt","nativeSrc":"553:2:32","nodeType":"YulIdentifier","src":"553:2:32"},"nativeSrc":"553:22:32","nodeType":"YulFunctionCall","src":"553:22:32"}],"functionName":{"name":"or","nativeSrc":"514:2:32","nodeType":"YulIdentifier","src":"514:2:32"},"nativeSrc":"514:62:32","nodeType":"YulFunctionCall","src":"514:62:32"},"nativeSrc":"511:88:32","nodeType":"YulIf","src":"511:88:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"615:2:32","nodeType":"YulLiteral","src":"615:2:32","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"619:10:32","nodeType":"YulIdentifier","src":"619:10:32"}],"functionName":{"name":"mstore","nativeSrc":"608:6:32","nodeType":"YulIdentifier","src":"608:6:32"},"nativeSrc":"608:22:32","nodeType":"YulFunctionCall","src":"608:22:32"},"nativeSrc":"608:22:32","nodeType":"YulExpressionStatement","src":"608:22:32"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"646:6:32","nodeType":"YulIdentifier","src":"646:6:32"},{"name":"length","nativeSrc":"654:6:32","nodeType":"YulIdentifier","src":"654:6:32"}],"functionName":{"name":"mstore","nativeSrc":"639:6:32","nodeType":"YulIdentifier","src":"639:6:32"},"nativeSrc":"639:22:32","nodeType":"YulFunctionCall","src":"639:22:32"},"nativeSrc":"639:22:32","nodeType":"YulExpressionStatement","src":"639:22:32"},{"body":{"nativeSrc":"713:16:32","nodeType":"YulBlock","src":"713:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"722:1:32","nodeType":"YulLiteral","src":"722:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"725:1:32","nodeType":"YulLiteral","src":"725:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"715:6:32","nodeType":"YulIdentifier","src":"715:6:32"},"nativeSrc":"715:12:32","nodeType":"YulFunctionCall","src":"715:12:32"},"nativeSrc":"715:12:32","nodeType":"YulExpressionStatement","src":"715:12:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"684:6:32","nodeType":"YulIdentifier","src":"684:6:32"},{"name":"length","nativeSrc":"692:6:32","nodeType":"YulIdentifier","src":"692:6:32"}],"functionName":{"name":"add","nativeSrc":"680:3:32","nodeType":"YulIdentifier","src":"680:3:32"},"nativeSrc":"680:19:32","nodeType":"YulFunctionCall","src":"680:19:32"},{"kind":"number","nativeSrc":"701:4:32","nodeType":"YulLiteral","src":"701:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"676:3:32","nodeType":"YulIdentifier","src":"676:3:32"},"nativeSrc":"676:30:32","nodeType":"YulFunctionCall","src":"676:30:32"},{"name":"end","nativeSrc":"708:3:32","nodeType":"YulIdentifier","src":"708:3:32"}],"functionName":{"name":"gt","nativeSrc":"673:2:32","nodeType":"YulIdentifier","src":"673:2:32"},"nativeSrc":"673:39:32","nodeType":"YulFunctionCall","src":"673:39:32"},"nativeSrc":"670:59:32","nodeType":"YulIf","src":"670:59:32"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"748:6:32","nodeType":"YulIdentifier","src":"748:6:32"},{"kind":"number","nativeSrc":"756:4:32","nodeType":"YulLiteral","src":"756:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"744:3:32","nodeType":"YulIdentifier","src":"744:3:32"},"nativeSrc":"744:17:32","nodeType":"YulFunctionCall","src":"744:17:32"},{"arguments":[{"name":"offset","nativeSrc":"767:6:32","nodeType":"YulIdentifier","src":"767:6:32"},{"kind":"number","nativeSrc":"775:4:32","nodeType":"YulLiteral","src":"775:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"763:3:32","nodeType":"YulIdentifier","src":"763:3:32"},"nativeSrc":"763:17:32","nodeType":"YulFunctionCall","src":"763:17:32"},{"name":"length","nativeSrc":"782:6:32","nodeType":"YulIdentifier","src":"782:6:32"}],"functionName":{"name":"mcopy","nativeSrc":"738:5:32","nodeType":"YulIdentifier","src":"738:5:32"},"nativeSrc":"738:51:32","nodeType":"YulFunctionCall","src":"738:51:32"},"nativeSrc":"738:51:32","nodeType":"YulExpressionStatement","src":"738:51:32"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"813:6:32","nodeType":"YulIdentifier","src":"813:6:32"},{"name":"length","nativeSrc":"821:6:32","nodeType":"YulIdentifier","src":"821:6:32"}],"functionName":{"name":"add","nativeSrc":"809:3:32","nodeType":"YulIdentifier","src":"809:3:32"},"nativeSrc":"809:19:32","nodeType":"YulFunctionCall","src":"809:19:32"},{"kind":"number","nativeSrc":"830:4:32","nodeType":"YulLiteral","src":"830:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"805:3:32","nodeType":"YulIdentifier","src":"805:3:32"},"nativeSrc":"805:30:32","nodeType":"YulFunctionCall","src":"805:30:32"},{"kind":"number","nativeSrc":"837:1:32","nodeType":"YulLiteral","src":"837:1:32","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"798:6:32","nodeType":"YulIdentifier","src":"798:6:32"},"nativeSrc":"798:41:32","nodeType":"YulFunctionCall","src":"798:41:32"},"nativeSrc":"798:41:32","nodeType":"YulExpressionStatement","src":"798:41:32"},{"nativeSrc":"848:15:32","nodeType":"YulAssignment","src":"848:15:32","value":{"name":"memPtr","nativeSrc":"857:6:32","nodeType":"YulIdentifier","src":"857:6:32"},"variableNames":[{"name":"array","nativeSrc":"848:5:32","nodeType":"YulIdentifier","src":"848:5:32"}]}]},"name":"abi_decode_string_fromMemory","nativeSrc":"146:723:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"184:6:32","nodeType":"YulTypedName","src":"184:6:32","type":""},{"name":"end","nativeSrc":"192:3:32","nodeType":"YulTypedName","src":"192:3:32","type":""}],"returnVariables":[{"name":"array","nativeSrc":"200:5:32","nodeType":"YulTypedName","src":"200:5:32","type":""}],"src":"146:723:32"},{"body":{"nativeSrc":"934:117:32","nodeType":"YulBlock","src":"934:117:32","statements":[{"nativeSrc":"944:22:32","nodeType":"YulAssignment","src":"944:22:32","value":{"arguments":[{"name":"offset","nativeSrc":"959:6:32","nodeType":"YulIdentifier","src":"959:6:32"}],"functionName":{"name":"mload","nativeSrc":"953:5:32","nodeType":"YulIdentifier","src":"953:5:32"},"nativeSrc":"953:13:32","nodeType":"YulFunctionCall","src":"953:13:32"},"variableNames":[{"name":"value","nativeSrc":"944:5:32","nodeType":"YulIdentifier","src":"944:5:32"}]},{"body":{"nativeSrc":"1029:16:32","nodeType":"YulBlock","src":"1029:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1038:1:32","nodeType":"YulLiteral","src":"1038:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1041:1:32","nodeType":"YulLiteral","src":"1041:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1031:6:32","nodeType":"YulIdentifier","src":"1031:6:32"},"nativeSrc":"1031:12:32","nodeType":"YulFunctionCall","src":"1031:12:32"},"nativeSrc":"1031:12:32","nodeType":"YulExpressionStatement","src":"1031:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"988:5:32","nodeType":"YulIdentifier","src":"988:5:32"},{"arguments":[{"name":"value","nativeSrc":"999:5:32","nodeType":"YulIdentifier","src":"999:5:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1014:3:32","nodeType":"YulLiteral","src":"1014:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"1019:1:32","nodeType":"YulLiteral","src":"1019:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1010:3:32","nodeType":"YulIdentifier","src":"1010:3:32"},"nativeSrc":"1010:11:32","nodeType":"YulFunctionCall","src":"1010:11:32"},{"kind":"number","nativeSrc":"1023:1:32","nodeType":"YulLiteral","src":"1023:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1006:3:32","nodeType":"YulIdentifier","src":"1006:3:32"},"nativeSrc":"1006:19:32","nodeType":"YulFunctionCall","src":"1006:19:32"}],"functionName":{"name":"and","nativeSrc":"995:3:32","nodeType":"YulIdentifier","src":"995:3:32"},"nativeSrc":"995:31:32","nodeType":"YulFunctionCall","src":"995:31:32"}],"functionName":{"name":"eq","nativeSrc":"985:2:32","nodeType":"YulIdentifier","src":"985:2:32"},"nativeSrc":"985:42:32","nodeType":"YulFunctionCall","src":"985:42:32"}],"functionName":{"name":"iszero","nativeSrc":"978:6:32","nodeType":"YulIdentifier","src":"978:6:32"},"nativeSrc":"978:50:32","nodeType":"YulFunctionCall","src":"978:50:32"},"nativeSrc":"975:70:32","nodeType":"YulIf","src":"975:70:32"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"874:177:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"913:6:32","nodeType":"YulTypedName","src":"913:6:32","type":""}],"returnVariables":[{"name":"value","nativeSrc":"924:5:32","nodeType":"YulTypedName","src":"924:5:32","type":""}],"src":"874:177:32"},{"body":{"nativeSrc":"1115:116:32","nodeType":"YulBlock","src":"1115:116:32","statements":[{"nativeSrc":"1125:22:32","nodeType":"YulAssignment","src":"1125:22:32","value":{"arguments":[{"name":"offset","nativeSrc":"1140:6:32","nodeType":"YulIdentifier","src":"1140:6:32"}],"functionName":{"name":"mload","nativeSrc":"1134:5:32","nodeType":"YulIdentifier","src":"1134:5:32"},"nativeSrc":"1134:13:32","nodeType":"YulFunctionCall","src":"1134:13:32"},"variableNames":[{"name":"value","nativeSrc":"1125:5:32","nodeType":"YulIdentifier","src":"1125:5:32"}]},{"body":{"nativeSrc":"1209:16:32","nodeType":"YulBlock","src":"1209:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1218:1:32","nodeType":"YulLiteral","src":"1218:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1221:1:32","nodeType":"YulLiteral","src":"1221:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1211:6:32","nodeType":"YulIdentifier","src":"1211:6:32"},"nativeSrc":"1211:12:32","nodeType":"YulFunctionCall","src":"1211:12:32"},"nativeSrc":"1211:12:32","nodeType":"YulExpressionStatement","src":"1211:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1169:5:32","nodeType":"YulIdentifier","src":"1169:5:32"},{"arguments":[{"name":"value","nativeSrc":"1180:5:32","nodeType":"YulIdentifier","src":"1180:5:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1195:2:32","nodeType":"YulLiteral","src":"1195:2:32","type":"","value":"96"},{"kind":"number","nativeSrc":"1199:1:32","nodeType":"YulLiteral","src":"1199:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1191:3:32","nodeType":"YulIdentifier","src":"1191:3:32"},"nativeSrc":"1191:10:32","nodeType":"YulFunctionCall","src":"1191:10:32"},{"kind":"number","nativeSrc":"1203:1:32","nodeType":"YulLiteral","src":"1203:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1187:3:32","nodeType":"YulIdentifier","src":"1187:3:32"},"nativeSrc":"1187:18:32","nodeType":"YulFunctionCall","src":"1187:18:32"}],"functionName":{"name":"and","nativeSrc":"1176:3:32","nodeType":"YulIdentifier","src":"1176:3:32"},"nativeSrc":"1176:30:32","nodeType":"YulFunctionCall","src":"1176:30:32"}],"functionName":{"name":"eq","nativeSrc":"1166:2:32","nodeType":"YulIdentifier","src":"1166:2:32"},"nativeSrc":"1166:41:32","nodeType":"YulFunctionCall","src":"1166:41:32"}],"functionName":{"name":"iszero","nativeSrc":"1159:6:32","nodeType":"YulIdentifier","src":"1159:6:32"},"nativeSrc":"1159:49:32","nodeType":"YulFunctionCall","src":"1159:49:32"},"nativeSrc":"1156:69:32","nodeType":"YulIf","src":"1156:69:32"}]},"name":"abi_decode_uint96_fromMemory","nativeSrc":"1056:175:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1094:6:32","nodeType":"YulTypedName","src":"1094:6:32","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1105:5:32","nodeType":"YulTypedName","src":"1105:5:32","type":""}],"src":"1056:175:32"},{"body":{"nativeSrc":"1295:112:32","nodeType":"YulBlock","src":"1295:112:32","statements":[{"nativeSrc":"1305:22:32","nodeType":"YulAssignment","src":"1305:22:32","value":{"arguments":[{"name":"offset","nativeSrc":"1320:6:32","nodeType":"YulIdentifier","src":"1320:6:32"}],"functionName":{"name":"mload","nativeSrc":"1314:5:32","nodeType":"YulIdentifier","src":"1314:5:32"},"nativeSrc":"1314:13:32","nodeType":"YulFunctionCall","src":"1314:13:32"},"variableNames":[{"name":"value","nativeSrc":"1305:5:32","nodeType":"YulIdentifier","src":"1305:5:32"}]},{"body":{"nativeSrc":"1385:16:32","nodeType":"YulBlock","src":"1385:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1394:1:32","nodeType":"YulLiteral","src":"1394:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1397:1:32","nodeType":"YulLiteral","src":"1397:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1387:6:32","nodeType":"YulIdentifier","src":"1387:6:32"},"nativeSrc":"1387:12:32","nodeType":"YulFunctionCall","src":"1387:12:32"},"nativeSrc":"1387:12:32","nodeType":"YulExpressionStatement","src":"1387:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1349:5:32","nodeType":"YulIdentifier","src":"1349:5:32"},{"arguments":[{"name":"value","nativeSrc":"1360:5:32","nodeType":"YulIdentifier","src":"1360:5:32"},{"kind":"number","nativeSrc":"1367:14:32","nodeType":"YulLiteral","src":"1367:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1356:3:32","nodeType":"YulIdentifier","src":"1356:3:32"},"nativeSrc":"1356:26:32","nodeType":"YulFunctionCall","src":"1356:26:32"}],"functionName":{"name":"eq","nativeSrc":"1346:2:32","nodeType":"YulIdentifier","src":"1346:2:32"},"nativeSrc":"1346:37:32","nodeType":"YulFunctionCall","src":"1346:37:32"}],"functionName":{"name":"iszero","nativeSrc":"1339:6:32","nodeType":"YulIdentifier","src":"1339:6:32"},"nativeSrc":"1339:45:32","nodeType":"YulFunctionCall","src":"1339:45:32"},"nativeSrc":"1336:65:32","nodeType":"YulIf","src":"1336:65:32"}]},"name":"abi_decode_uint48_fromMemory","nativeSrc":"1236:171:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1274:6:32","nodeType":"YulTypedName","src":"1274:6:32","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1285:5:32","nodeType":"YulTypedName","src":"1285:5:32","type":""}],"src":"1236:171:32"},{"body":{"nativeSrc":"1667:1169:32","nodeType":"YulBlock","src":"1667:1169:32","statements":[{"body":{"nativeSrc":"1714:16:32","nodeType":"YulBlock","src":"1714:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1723:1:32","nodeType":"YulLiteral","src":"1723:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1726:1:32","nodeType":"YulLiteral","src":"1726:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1716:6:32","nodeType":"YulIdentifier","src":"1716:6:32"},"nativeSrc":"1716:12:32","nodeType":"YulFunctionCall","src":"1716:12:32"},"nativeSrc":"1716:12:32","nodeType":"YulExpressionStatement","src":"1716:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1688:7:32","nodeType":"YulIdentifier","src":"1688:7:32"},{"name":"headStart","nativeSrc":"1697:9:32","nodeType":"YulIdentifier","src":"1697:9:32"}],"functionName":{"name":"sub","nativeSrc":"1684:3:32","nodeType":"YulIdentifier","src":"1684:3:32"},"nativeSrc":"1684:23:32","nodeType":"YulFunctionCall","src":"1684:23:32"},{"kind":"number","nativeSrc":"1709:3:32","nodeType":"YulLiteral","src":"1709:3:32","type":"","value":"288"}],"functionName":{"name":"slt","nativeSrc":"1680:3:32","nodeType":"YulIdentifier","src":"1680:3:32"},"nativeSrc":"1680:33:32","nodeType":"YulFunctionCall","src":"1680:33:32"},"nativeSrc":"1677:53:32","nodeType":"YulIf","src":"1677:53:32"},{"nativeSrc":"1739:30:32","nodeType":"YulVariableDeclaration","src":"1739:30:32","value":{"arguments":[{"name":"headStart","nativeSrc":"1759:9:32","nodeType":"YulIdentifier","src":"1759:9:32"}],"functionName":{"name":"mload","nativeSrc":"1753:5:32","nodeType":"YulIdentifier","src":"1753:5:32"},"nativeSrc":"1753:16:32","nodeType":"YulFunctionCall","src":"1753:16:32"},"variables":[{"name":"offset","nativeSrc":"1743:6:32","nodeType":"YulTypedName","src":"1743:6:32","type":""}]},{"body":{"nativeSrc":"1812:16:32","nodeType":"YulBlock","src":"1812:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1821:1:32","nodeType":"YulLiteral","src":"1821:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1824:1:32","nodeType":"YulLiteral","src":"1824:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1814:6:32","nodeType":"YulIdentifier","src":"1814:6:32"},"nativeSrc":"1814:12:32","nodeType":"YulFunctionCall","src":"1814:12:32"},"nativeSrc":"1814:12:32","nodeType":"YulExpressionStatement","src":"1814:12:32"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1784:6:32","nodeType":"YulIdentifier","src":"1784:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1800:2:32","nodeType":"YulLiteral","src":"1800:2:32","type":"","value":"64"},{"kind":"number","nativeSrc":"1804:1:32","nodeType":"YulLiteral","src":"1804:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1796:3:32","nodeType":"YulIdentifier","src":"1796:3:32"},"nativeSrc":"1796:10:32","nodeType":"YulFunctionCall","src":"1796:10:32"},{"kind":"number","nativeSrc":"1808:1:32","nodeType":"YulLiteral","src":"1808:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1792:3:32","nodeType":"YulIdentifier","src":"1792:3:32"},"nativeSrc":"1792:18:32","nodeType":"YulFunctionCall","src":"1792:18:32"}],"functionName":{"name":"gt","nativeSrc":"1781:2:32","nodeType":"YulIdentifier","src":"1781:2:32"},"nativeSrc":"1781:30:32","nodeType":"YulFunctionCall","src":"1781:30:32"},"nativeSrc":"1778:50:32","nodeType":"YulIf","src":"1778:50:32"},{"nativeSrc":"1837:71:32","nodeType":"YulAssignment","src":"1837:71:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1880:9:32","nodeType":"YulIdentifier","src":"1880:9:32"},{"name":"offset","nativeSrc":"1891:6:32","nodeType":"YulIdentifier","src":"1891:6:32"}],"functionName":{"name":"add","nativeSrc":"1876:3:32","nodeType":"YulIdentifier","src":"1876:3:32"},"nativeSrc":"1876:22:32","nodeType":"YulFunctionCall","src":"1876:22:32"},{"name":"dataEnd","nativeSrc":"1900:7:32","nodeType":"YulIdentifier","src":"1900:7:32"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1847:28:32","nodeType":"YulIdentifier","src":"1847:28:32"},"nativeSrc":"1847:61:32","nodeType":"YulFunctionCall","src":"1847:61:32"},"variableNames":[{"name":"value0","nativeSrc":"1837:6:32","nodeType":"YulIdentifier","src":"1837:6:32"}]},{"nativeSrc":"1917:41:32","nodeType":"YulVariableDeclaration","src":"1917:41:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1943:9:32","nodeType":"YulIdentifier","src":"1943:9:32"},{"kind":"number","nativeSrc":"1954:2:32","nodeType":"YulLiteral","src":"1954:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1939:3:32","nodeType":"YulIdentifier","src":"1939:3:32"},"nativeSrc":"1939:18:32","nodeType":"YulFunctionCall","src":"1939:18:32"}],"functionName":{"name":"mload","nativeSrc":"1933:5:32","nodeType":"YulIdentifier","src":"1933:5:32"},"nativeSrc":"1933:25:32","nodeType":"YulFunctionCall","src":"1933:25:32"},"variables":[{"name":"offset_1","nativeSrc":"1921:8:32","nodeType":"YulTypedName","src":"1921:8:32","type":""}]},{"body":{"nativeSrc":"2003:16:32","nodeType":"YulBlock","src":"2003:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2012:1:32","nodeType":"YulLiteral","src":"2012:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"2015:1:32","nodeType":"YulLiteral","src":"2015:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2005:6:32","nodeType":"YulIdentifier","src":"2005:6:32"},"nativeSrc":"2005:12:32","nodeType":"YulFunctionCall","src":"2005:12:32"},"nativeSrc":"2005:12:32","nodeType":"YulExpressionStatement","src":"2005:12:32"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"1973:8:32","nodeType":"YulIdentifier","src":"1973:8:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1991:2:32","nodeType":"YulLiteral","src":"1991:2:32","type":"","value":"64"},{"kind":"number","nativeSrc":"1995:1:32","nodeType":"YulLiteral","src":"1995:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1987:3:32","nodeType":"YulIdentifier","src":"1987:3:32"},"nativeSrc":"1987:10:32","nodeType":"YulFunctionCall","src":"1987:10:32"},{"kind":"number","nativeSrc":"1999:1:32","nodeType":"YulLiteral","src":"1999:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1983:3:32","nodeType":"YulIdentifier","src":"1983:3:32"},"nativeSrc":"1983:18:32","nodeType":"YulFunctionCall","src":"1983:18:32"}],"functionName":{"name":"gt","nativeSrc":"1970:2:32","nodeType":"YulIdentifier","src":"1970:2:32"},"nativeSrc":"1970:32:32","nodeType":"YulFunctionCall","src":"1970:32:32"},"nativeSrc":"1967:52:32","nodeType":"YulIf","src":"1967:52:32"},{"nativeSrc":"2028:73:32","nodeType":"YulAssignment","src":"2028:73:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2071:9:32","nodeType":"YulIdentifier","src":"2071:9:32"},{"name":"offset_1","nativeSrc":"2082:8:32","nodeType":"YulIdentifier","src":"2082:8:32"}],"functionName":{"name":"add","nativeSrc":"2067:3:32","nodeType":"YulIdentifier","src":"2067:3:32"},"nativeSrc":"2067:24:32","nodeType":"YulFunctionCall","src":"2067:24:32"},{"name":"dataEnd","nativeSrc":"2093:7:32","nodeType":"YulIdentifier","src":"2093:7:32"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"2038:28:32","nodeType":"YulIdentifier","src":"2038:28:32"},"nativeSrc":"2038:63:32","nodeType":"YulFunctionCall","src":"2038:63:32"},"variableNames":[{"name":"value1","nativeSrc":"2028:6:32","nodeType":"YulIdentifier","src":"2028:6:32"}]},{"nativeSrc":"2110:41:32","nodeType":"YulVariableDeclaration","src":"2110:41:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2136:9:32","nodeType":"YulIdentifier","src":"2136:9:32"},{"kind":"number","nativeSrc":"2147:2:32","nodeType":"YulLiteral","src":"2147:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2132:3:32","nodeType":"YulIdentifier","src":"2132:3:32"},"nativeSrc":"2132:18:32","nodeType":"YulFunctionCall","src":"2132:18:32"}],"functionName":{"name":"mload","nativeSrc":"2126:5:32","nodeType":"YulIdentifier","src":"2126:5:32"},"nativeSrc":"2126:25:32","nodeType":"YulFunctionCall","src":"2126:25:32"},"variables":[{"name":"offset_2","nativeSrc":"2114:8:32","nodeType":"YulTypedName","src":"2114:8:32","type":""}]},{"body":{"nativeSrc":"2196:16:32","nodeType":"YulBlock","src":"2196:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2205:1:32","nodeType":"YulLiteral","src":"2205:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"2208:1:32","nodeType":"YulLiteral","src":"2208:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2198:6:32","nodeType":"YulIdentifier","src":"2198:6:32"},"nativeSrc":"2198:12:32","nodeType":"YulFunctionCall","src":"2198:12:32"},"nativeSrc":"2198:12:32","nodeType":"YulExpressionStatement","src":"2198:12:32"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"2166:8:32","nodeType":"YulIdentifier","src":"2166:8:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2184:2:32","nodeType":"YulLiteral","src":"2184:2:32","type":"","value":"64"},{"kind":"number","nativeSrc":"2188:1:32","nodeType":"YulLiteral","src":"2188:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2180:3:32","nodeType":"YulIdentifier","src":"2180:3:32"},"nativeSrc":"2180:10:32","nodeType":"YulFunctionCall","src":"2180:10:32"},{"kind":"number","nativeSrc":"2192:1:32","nodeType":"YulLiteral","src":"2192:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2176:3:32","nodeType":"YulIdentifier","src":"2176:3:32"},"nativeSrc":"2176:18:32","nodeType":"YulFunctionCall","src":"2176:18:32"}],"functionName":{"name":"gt","nativeSrc":"2163:2:32","nodeType":"YulIdentifier","src":"2163:2:32"},"nativeSrc":"2163:32:32","nodeType":"YulFunctionCall","src":"2163:32:32"},"nativeSrc":"2160:52:32","nodeType":"YulIf","src":"2160:52:32"},{"nativeSrc":"2221:73:32","nodeType":"YulAssignment","src":"2221:73:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2264:9:32","nodeType":"YulIdentifier","src":"2264:9:32"},{"name":"offset_2","nativeSrc":"2275:8:32","nodeType":"YulIdentifier","src":"2275:8:32"}],"functionName":{"name":"add","nativeSrc":"2260:3:32","nodeType":"YulIdentifier","src":"2260:3:32"},"nativeSrc":"2260:24:32","nodeType":"YulFunctionCall","src":"2260:24:32"},{"name":"dataEnd","nativeSrc":"2286:7:32","nodeType":"YulIdentifier","src":"2286:7:32"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"2231:28:32","nodeType":"YulIdentifier","src":"2231:28:32"},"nativeSrc":"2231:63:32","nodeType":"YulFunctionCall","src":"2231:63:32"},"variableNames":[{"name":"value2","nativeSrc":"2221:6:32","nodeType":"YulIdentifier","src":"2221:6:32"}]},{"nativeSrc":"2303:41:32","nodeType":"YulVariableDeclaration","src":"2303:41:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2329:9:32","nodeType":"YulIdentifier","src":"2329:9:32"},{"kind":"number","nativeSrc":"2340:2:32","nodeType":"YulLiteral","src":"2340:2:32","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2325:3:32","nodeType":"YulIdentifier","src":"2325:3:32"},"nativeSrc":"2325:18:32","nodeType":"YulFunctionCall","src":"2325:18:32"}],"functionName":{"name":"mload","nativeSrc":"2319:5:32","nodeType":"YulIdentifier","src":"2319:5:32"},"nativeSrc":"2319:25:32","nodeType":"YulFunctionCall","src":"2319:25:32"},"variables":[{"name":"offset_3","nativeSrc":"2307:8:32","nodeType":"YulTypedName","src":"2307:8:32","type":""}]},{"body":{"nativeSrc":"2389:16:32","nodeType":"YulBlock","src":"2389:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2398:1:32","nodeType":"YulLiteral","src":"2398:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"2401:1:32","nodeType":"YulLiteral","src":"2401:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2391:6:32","nodeType":"YulIdentifier","src":"2391:6:32"},"nativeSrc":"2391:12:32","nodeType":"YulFunctionCall","src":"2391:12:32"},"nativeSrc":"2391:12:32","nodeType":"YulExpressionStatement","src":"2391:12:32"}]},"condition":{"arguments":[{"name":"offset_3","nativeSrc":"2359:8:32","nodeType":"YulIdentifier","src":"2359:8:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2377:2:32","nodeType":"YulLiteral","src":"2377:2:32","type":"","value":"64"},{"kind":"number","nativeSrc":"2381:1:32","nodeType":"YulLiteral","src":"2381:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2373:3:32","nodeType":"YulIdentifier","src":"2373:3:32"},"nativeSrc":"2373:10:32","nodeType":"YulFunctionCall","src":"2373:10:32"},{"kind":"number","nativeSrc":"2385:1:32","nodeType":"YulLiteral","src":"2385:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2369:3:32","nodeType":"YulIdentifier","src":"2369:3:32"},"nativeSrc":"2369:18:32","nodeType":"YulFunctionCall","src":"2369:18:32"}],"functionName":{"name":"gt","nativeSrc":"2356:2:32","nodeType":"YulIdentifier","src":"2356:2:32"},"nativeSrc":"2356:32:32","nodeType":"YulFunctionCall","src":"2356:32:32"},"nativeSrc":"2353:52:32","nodeType":"YulIf","src":"2353:52:32"},{"nativeSrc":"2414:73:32","nodeType":"YulAssignment","src":"2414:73:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2457:9:32","nodeType":"YulIdentifier","src":"2457:9:32"},{"name":"offset_3","nativeSrc":"2468:8:32","nodeType":"YulIdentifier","src":"2468:8:32"}],"functionName":{"name":"add","nativeSrc":"2453:3:32","nodeType":"YulIdentifier","src":"2453:3:32"},"nativeSrc":"2453:24:32","nodeType":"YulFunctionCall","src":"2453:24:32"},{"name":"dataEnd","nativeSrc":"2479:7:32","nodeType":"YulIdentifier","src":"2479:7:32"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"2424:28:32","nodeType":"YulIdentifier","src":"2424:28:32"},"nativeSrc":"2424:63:32","nodeType":"YulFunctionCall","src":"2424:63:32"},"variableNames":[{"name":"value3","nativeSrc":"2414:6:32","nodeType":"YulIdentifier","src":"2414:6:32"}]},{"nativeSrc":"2496:60:32","nodeType":"YulAssignment","src":"2496:60:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2540:9:32","nodeType":"YulIdentifier","src":"2540:9:32"},{"kind":"number","nativeSrc":"2551:3:32","nodeType":"YulLiteral","src":"2551:3:32","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"2536:3:32","nodeType":"YulIdentifier","src":"2536:3:32"},"nativeSrc":"2536:19:32","nodeType":"YulFunctionCall","src":"2536:19:32"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"2506:29:32","nodeType":"YulIdentifier","src":"2506:29:32"},"nativeSrc":"2506:50:32","nodeType":"YulFunctionCall","src":"2506:50:32"},"variableNames":[{"name":"value4","nativeSrc":"2496:6:32","nodeType":"YulIdentifier","src":"2496:6:32"}]},{"nativeSrc":"2565:59:32","nodeType":"YulAssignment","src":"2565:59:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2608:9:32","nodeType":"YulIdentifier","src":"2608:9:32"},{"kind":"number","nativeSrc":"2619:3:32","nodeType":"YulLiteral","src":"2619:3:32","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"2604:3:32","nodeType":"YulIdentifier","src":"2604:3:32"},"nativeSrc":"2604:19:32","nodeType":"YulFunctionCall","src":"2604:19:32"}],"functionName":{"name":"abi_decode_uint96_fromMemory","nativeSrc":"2575:28:32","nodeType":"YulIdentifier","src":"2575:28:32"},"nativeSrc":"2575:49:32","nodeType":"YulFunctionCall","src":"2575:49:32"},"variableNames":[{"name":"value5","nativeSrc":"2565:6:32","nodeType":"YulIdentifier","src":"2565:6:32"}]},{"nativeSrc":"2633:60:32","nodeType":"YulAssignment","src":"2633:60:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2677:9:32","nodeType":"YulIdentifier","src":"2677:9:32"},{"kind":"number","nativeSrc":"2688:3:32","nodeType":"YulLiteral","src":"2688:3:32","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"2673:3:32","nodeType":"YulIdentifier","src":"2673:3:32"},"nativeSrc":"2673:19:32","nodeType":"YulFunctionCall","src":"2673:19:32"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"2643:29:32","nodeType":"YulIdentifier","src":"2643:29:32"},"nativeSrc":"2643:50:32","nodeType":"YulFunctionCall","src":"2643:50:32"},"variableNames":[{"name":"value6","nativeSrc":"2633:6:32","nodeType":"YulIdentifier","src":"2633:6:32"}]},{"nativeSrc":"2702:60:32","nodeType":"YulAssignment","src":"2702:60:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2746:9:32","nodeType":"YulIdentifier","src":"2746:9:32"},{"kind":"number","nativeSrc":"2757:3:32","nodeType":"YulLiteral","src":"2757:3:32","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"2742:3:32","nodeType":"YulIdentifier","src":"2742:3:32"},"nativeSrc":"2742:19:32","nodeType":"YulFunctionCall","src":"2742:19:32"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"2712:29:32","nodeType":"YulIdentifier","src":"2712:29:32"},"nativeSrc":"2712:50:32","nodeType":"YulFunctionCall","src":"2712:50:32"},"variableNames":[{"name":"value7","nativeSrc":"2702:6:32","nodeType":"YulIdentifier","src":"2702:6:32"}]},{"nativeSrc":"2771:59:32","nodeType":"YulAssignment","src":"2771:59:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2814:9:32","nodeType":"YulIdentifier","src":"2814:9:32"},{"kind":"number","nativeSrc":"2825:3:32","nodeType":"YulLiteral","src":"2825:3:32","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"2810:3:32","nodeType":"YulIdentifier","src":"2810:3:32"},"nativeSrc":"2810:19:32","nodeType":"YulFunctionCall","src":"2810:19:32"}],"functionName":{"name":"abi_decode_uint48_fromMemory","nativeSrc":"2781:28:32","nodeType":"YulIdentifier","src":"2781:28:32"},"nativeSrc":"2781:49:32","nodeType":"YulFunctionCall","src":"2781:49:32"},"variableNames":[{"name":"value8","nativeSrc":"2771:6:32","nodeType":"YulIdentifier","src":"2771:6:32"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint96t_addresst_addresst_uint48_fromMemory","nativeSrc":"1412:1424:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1569:9:32","nodeType":"YulTypedName","src":"1569:9:32","type":""},{"name":"dataEnd","nativeSrc":"1580:7:32","nodeType":"YulTypedName","src":"1580:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1592:6:32","nodeType":"YulTypedName","src":"1592:6:32","type":""},{"name":"value1","nativeSrc":"1600:6:32","nodeType":"YulTypedName","src":"1600:6:32","type":""},{"name":"value2","nativeSrc":"1608:6:32","nodeType":"YulTypedName","src":"1608:6:32","type":""},{"name":"value3","nativeSrc":"1616:6:32","nodeType":"YulTypedName","src":"1616:6:32","type":""},{"name":"value4","nativeSrc":"1624:6:32","nodeType":"YulTypedName","src":"1624:6:32","type":""},{"name":"value5","nativeSrc":"1632:6:32","nodeType":"YulTypedName","src":"1632:6:32","type":""},{"name":"value6","nativeSrc":"1640:6:32","nodeType":"YulTypedName","src":"1640:6:32","type":""},{"name":"value7","nativeSrc":"1648:6:32","nodeType":"YulTypedName","src":"1648:6:32","type":""},{"name":"value8","nativeSrc":"1656:6:32","nodeType":"YulTypedName","src":"1656:6:32","type":""}],"src":"1412:1424:32"},{"body":{"nativeSrc":"2896:325:32","nodeType":"YulBlock","src":"2896:325:32","statements":[{"nativeSrc":"2906:22:32","nodeType":"YulAssignment","src":"2906:22:32","value":{"arguments":[{"kind":"number","nativeSrc":"2920:1:32","nodeType":"YulLiteral","src":"2920:1:32","type":"","value":"1"},{"name":"data","nativeSrc":"2923:4:32","nodeType":"YulIdentifier","src":"2923:4:32"}],"functionName":{"name":"shr","nativeSrc":"2916:3:32","nodeType":"YulIdentifier","src":"2916:3:32"},"nativeSrc":"2916:12:32","nodeType":"YulFunctionCall","src":"2916:12:32"},"variableNames":[{"name":"length","nativeSrc":"2906:6:32","nodeType":"YulIdentifier","src":"2906:6:32"}]},{"nativeSrc":"2937:38:32","nodeType":"YulVariableDeclaration","src":"2937:38:32","value":{"arguments":[{"name":"data","nativeSrc":"2967:4:32","nodeType":"YulIdentifier","src":"2967:4:32"},{"kind":"number","nativeSrc":"2973:1:32","nodeType":"YulLiteral","src":"2973:1:32","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"2963:3:32","nodeType":"YulIdentifier","src":"2963:3:32"},"nativeSrc":"2963:12:32","nodeType":"YulFunctionCall","src":"2963:12:32"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"2941:18:32","nodeType":"YulTypedName","src":"2941:18:32","type":""}]},{"body":{"nativeSrc":"3014:31:32","nodeType":"YulBlock","src":"3014:31:32","statements":[{"nativeSrc":"3016:27:32","nodeType":"YulAssignment","src":"3016:27:32","value":{"arguments":[{"name":"length","nativeSrc":"3030:6:32","nodeType":"YulIdentifier","src":"3030:6:32"},{"kind":"number","nativeSrc":"3038:4:32","nodeType":"YulLiteral","src":"3038:4:32","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"3026:3:32","nodeType":"YulIdentifier","src":"3026:3:32"},"nativeSrc":"3026:17:32","nodeType":"YulFunctionCall","src":"3026:17:32"},"variableNames":[{"name":"length","nativeSrc":"3016:6:32","nodeType":"YulIdentifier","src":"3016:6:32"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"2994:18:32","nodeType":"YulIdentifier","src":"2994:18:32"}],"functionName":{"name":"iszero","nativeSrc":"2987:6:32","nodeType":"YulIdentifier","src":"2987:6:32"},"nativeSrc":"2987:26:32","nodeType":"YulFunctionCall","src":"2987:26:32"},"nativeSrc":"2984:61:32","nodeType":"YulIf","src":"2984:61:32"},{"body":{"nativeSrc":"3104:111:32","nodeType":"YulBlock","src":"3104:111:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3125:1:32","nodeType":"YulLiteral","src":"3125:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3132:3:32","nodeType":"YulLiteral","src":"3132:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"3137:10:32","nodeType":"YulLiteral","src":"3137:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3128:3:32","nodeType":"YulIdentifier","src":"3128:3:32"},"nativeSrc":"3128:20:32","nodeType":"YulFunctionCall","src":"3128:20:32"}],"functionName":{"name":"mstore","nativeSrc":"3118:6:32","nodeType":"YulIdentifier","src":"3118:6:32"},"nativeSrc":"3118:31:32","nodeType":"YulFunctionCall","src":"3118:31:32"},"nativeSrc":"3118:31:32","nodeType":"YulExpressionStatement","src":"3118:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3169:1:32","nodeType":"YulLiteral","src":"3169:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"3172:4:32","nodeType":"YulLiteral","src":"3172:4:32","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"3162:6:32","nodeType":"YulIdentifier","src":"3162:6:32"},"nativeSrc":"3162:15:32","nodeType":"YulFunctionCall","src":"3162:15:32"},"nativeSrc":"3162:15:32","nodeType":"YulExpressionStatement","src":"3162:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3197:1:32","nodeType":"YulLiteral","src":"3197:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"3200:4:32","nodeType":"YulLiteral","src":"3200:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3190:6:32","nodeType":"YulIdentifier","src":"3190:6:32"},"nativeSrc":"3190:15:32","nodeType":"YulFunctionCall","src":"3190:15:32"},"nativeSrc":"3190:15:32","nodeType":"YulExpressionStatement","src":"3190:15:32"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"3060:18:32","nodeType":"YulIdentifier","src":"3060:18:32"},{"arguments":[{"name":"length","nativeSrc":"3083:6:32","nodeType":"YulIdentifier","src":"3083:6:32"},{"kind":"number","nativeSrc":"3091:2:32","nodeType":"YulLiteral","src":"3091:2:32","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"3080:2:32","nodeType":"YulIdentifier","src":"3080:2:32"},"nativeSrc":"3080:14:32","nodeType":"YulFunctionCall","src":"3080:14:32"}],"functionName":{"name":"eq","nativeSrc":"3057:2:32","nodeType":"YulIdentifier","src":"3057:2:32"},"nativeSrc":"3057:38:32","nodeType":"YulFunctionCall","src":"3057:38:32"},"nativeSrc":"3054:161:32","nodeType":"YulIf","src":"3054:161:32"}]},"name":"extract_byte_array_length","nativeSrc":"2841:380:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"2876:4:32","nodeType":"YulTypedName","src":"2876:4:32","type":""}],"returnVariables":[{"name":"length","nativeSrc":"2885:6:32","nodeType":"YulTypedName","src":"2885:6:32","type":""}],"src":"2841:380:32"},{"body":{"nativeSrc":"3282:65:32","nodeType":"YulBlock","src":"3282:65:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3299:1:32","nodeType":"YulLiteral","src":"3299:1:32","type":"","value":"0"},{"name":"ptr","nativeSrc":"3302:3:32","nodeType":"YulIdentifier","src":"3302:3:32"}],"functionName":{"name":"mstore","nativeSrc":"3292:6:32","nodeType":"YulIdentifier","src":"3292:6:32"},"nativeSrc":"3292:14:32","nodeType":"YulFunctionCall","src":"3292:14:32"},"nativeSrc":"3292:14:32","nodeType":"YulExpressionStatement","src":"3292:14:32"},{"nativeSrc":"3315:26:32","nodeType":"YulAssignment","src":"3315:26:32","value":{"arguments":[{"kind":"number","nativeSrc":"3333:1:32","nodeType":"YulLiteral","src":"3333:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"3336:4:32","nodeType":"YulLiteral","src":"3336:4:32","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"3323:9:32","nodeType":"YulIdentifier","src":"3323:9:32"},"nativeSrc":"3323:18:32","nodeType":"YulFunctionCall","src":"3323:18:32"},"variableNames":[{"name":"data","nativeSrc":"3315:4:32","nodeType":"YulIdentifier","src":"3315:4:32"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"3226:121:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"3265:3:32","nodeType":"YulTypedName","src":"3265:3:32","type":""}],"returnVariables":[{"name":"data","nativeSrc":"3273:4:32","nodeType":"YulTypedName","src":"3273:4:32","type":""}],"src":"3226:121:32"},{"body":{"nativeSrc":"3433:437:32","nodeType":"YulBlock","src":"3433:437:32","statements":[{"body":{"nativeSrc":"3466:398:32","nodeType":"YulBlock","src":"3466:398:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3487:1:32","nodeType":"YulLiteral","src":"3487:1:32","type":"","value":"0"},{"name":"array","nativeSrc":"3490:5:32","nodeType":"YulIdentifier","src":"3490:5:32"}],"functionName":{"name":"mstore","nativeSrc":"3480:6:32","nodeType":"YulIdentifier","src":"3480:6:32"},"nativeSrc":"3480:16:32","nodeType":"YulFunctionCall","src":"3480:16:32"},"nativeSrc":"3480:16:32","nodeType":"YulExpressionStatement","src":"3480:16:32"},{"nativeSrc":"3509:30:32","nodeType":"YulVariableDeclaration","src":"3509:30:32","value":{"arguments":[{"kind":"number","nativeSrc":"3531:1:32","nodeType":"YulLiteral","src":"3531:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"3534:4:32","nodeType":"YulLiteral","src":"3534:4:32","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"3521:9:32","nodeType":"YulIdentifier","src":"3521:9:32"},"nativeSrc":"3521:18:32","nodeType":"YulFunctionCall","src":"3521:18:32"},"variables":[{"name":"data","nativeSrc":"3513:4:32","nodeType":"YulTypedName","src":"3513:4:32","type":""}]},{"nativeSrc":"3552:57:32","nodeType":"YulVariableDeclaration","src":"3552:57:32","value":{"arguments":[{"name":"data","nativeSrc":"3575:4:32","nodeType":"YulIdentifier","src":"3575:4:32"},{"arguments":[{"kind":"number","nativeSrc":"3585:1:32","nodeType":"YulLiteral","src":"3585:1:32","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"3592:10:32","nodeType":"YulIdentifier","src":"3592:10:32"},{"kind":"number","nativeSrc":"3604:2:32","nodeType":"YulLiteral","src":"3604:2:32","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3588:3:32","nodeType":"YulIdentifier","src":"3588:3:32"},"nativeSrc":"3588:19:32","nodeType":"YulFunctionCall","src":"3588:19:32"}],"functionName":{"name":"shr","nativeSrc":"3581:3:32","nodeType":"YulIdentifier","src":"3581:3:32"},"nativeSrc":"3581:27:32","nodeType":"YulFunctionCall","src":"3581:27:32"}],"functionName":{"name":"add","nativeSrc":"3571:3:32","nodeType":"YulIdentifier","src":"3571:3:32"},"nativeSrc":"3571:38:32","nodeType":"YulFunctionCall","src":"3571:38:32"},"variables":[{"name":"deleteStart","nativeSrc":"3556:11:32","nodeType":"YulTypedName","src":"3556:11:32","type":""}]},{"body":{"nativeSrc":"3646:23:32","nodeType":"YulBlock","src":"3646:23:32","statements":[{"nativeSrc":"3648:19:32","nodeType":"YulAssignment","src":"3648:19:32","value":{"name":"data","nativeSrc":"3663:4:32","nodeType":"YulIdentifier","src":"3663:4:32"},"variableNames":[{"name":"deleteStart","nativeSrc":"3648:11:32","nodeType":"YulIdentifier","src":"3648:11:32"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"3628:10:32","nodeType":"YulIdentifier","src":"3628:10:32"},{"kind":"number","nativeSrc":"3640:4:32","nodeType":"YulLiteral","src":"3640:4:32","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"3625:2:32","nodeType":"YulIdentifier","src":"3625:2:32"},"nativeSrc":"3625:20:32","nodeType":"YulFunctionCall","src":"3625:20:32"},"nativeSrc":"3622:47:32","nodeType":"YulIf","src":"3622:47:32"},{"nativeSrc":"3682:41:32","nodeType":"YulVariableDeclaration","src":"3682:41:32","value":{"arguments":[{"name":"data","nativeSrc":"3696:4:32","nodeType":"YulIdentifier","src":"3696:4:32"},{"arguments":[{"kind":"number","nativeSrc":"3706:1:32","nodeType":"YulLiteral","src":"3706:1:32","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"3713:3:32","nodeType":"YulIdentifier","src":"3713:3:32"},{"kind":"number","nativeSrc":"3718:2:32","nodeType":"YulLiteral","src":"3718:2:32","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3709:3:32","nodeType":"YulIdentifier","src":"3709:3:32"},"nativeSrc":"3709:12:32","nodeType":"YulFunctionCall","src":"3709:12:32"}],"functionName":{"name":"shr","nativeSrc":"3702:3:32","nodeType":"YulIdentifier","src":"3702:3:32"},"nativeSrc":"3702:20:32","nodeType":"YulFunctionCall","src":"3702:20:32"}],"functionName":{"name":"add","nativeSrc":"3692:3:32","nodeType":"YulIdentifier","src":"3692:3:32"},"nativeSrc":"3692:31:32","nodeType":"YulFunctionCall","src":"3692:31:32"},"variables":[{"name":"_1","nativeSrc":"3686:2:32","nodeType":"YulTypedName","src":"3686:2:32","type":""}]},{"nativeSrc":"3736:24:32","nodeType":"YulVariableDeclaration","src":"3736:24:32","value":{"name":"deleteStart","nativeSrc":"3749:11:32","nodeType":"YulIdentifier","src":"3749:11:32"},"variables":[{"name":"start","nativeSrc":"3740:5:32","nodeType":"YulTypedName","src":"3740:5:32","type":""}]},{"body":{"nativeSrc":"3834:20:32","nodeType":"YulBlock","src":"3834:20:32","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"3843:5:32","nodeType":"YulIdentifier","src":"3843:5:32"},{"kind":"number","nativeSrc":"3850:1:32","nodeType":"YulLiteral","src":"3850:1:32","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"3836:6:32","nodeType":"YulIdentifier","src":"3836:6:32"},"nativeSrc":"3836:16:32","nodeType":"YulFunctionCall","src":"3836:16:32"},"nativeSrc":"3836:16:32","nodeType":"YulExpressionStatement","src":"3836:16:32"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"3784:5:32","nodeType":"YulIdentifier","src":"3784:5:32"},{"name":"_1","nativeSrc":"3791:2:32","nodeType":"YulIdentifier","src":"3791:2:32"}],"functionName":{"name":"lt","nativeSrc":"3781:2:32","nodeType":"YulIdentifier","src":"3781:2:32"},"nativeSrc":"3781:13:32","nodeType":"YulFunctionCall","src":"3781:13:32"},"nativeSrc":"3773:81:32","nodeType":"YulForLoop","post":{"nativeSrc":"3795:26:32","nodeType":"YulBlock","src":"3795:26:32","statements":[{"nativeSrc":"3797:22:32","nodeType":"YulAssignment","src":"3797:22:32","value":{"arguments":[{"name":"start","nativeSrc":"3810:5:32","nodeType":"YulIdentifier","src":"3810:5:32"},{"kind":"number","nativeSrc":"3817:1:32","nodeType":"YulLiteral","src":"3817:1:32","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3806:3:32","nodeType":"YulIdentifier","src":"3806:3:32"},"nativeSrc":"3806:13:32","nodeType":"YulFunctionCall","src":"3806:13:32"},"variableNames":[{"name":"start","nativeSrc":"3797:5:32","nodeType":"YulIdentifier","src":"3797:5:32"}]}]},"pre":{"nativeSrc":"3777:3:32","nodeType":"YulBlock","src":"3777:3:32","statements":[]},"src":"3773:81:32"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"3449:3:32","nodeType":"YulIdentifier","src":"3449:3:32"},{"kind":"number","nativeSrc":"3454:2:32","nodeType":"YulLiteral","src":"3454:2:32","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"3446:2:32","nodeType":"YulIdentifier","src":"3446:2:32"},"nativeSrc":"3446:11:32","nodeType":"YulFunctionCall","src":"3446:11:32"},"nativeSrc":"3443:421:32","nodeType":"YulIf","src":"3443:421:32"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"3352:518:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"3405:5:32","nodeType":"YulTypedName","src":"3405:5:32","type":""},{"name":"len","nativeSrc":"3412:3:32","nodeType":"YulTypedName","src":"3412:3:32","type":""},{"name":"startIndex","nativeSrc":"3417:10:32","nodeType":"YulTypedName","src":"3417:10:32","type":""}],"src":"3352:518:32"},{"body":{"nativeSrc":"3960:81:32","nodeType":"YulBlock","src":"3960:81:32","statements":[{"nativeSrc":"3970:65:32","nodeType":"YulAssignment","src":"3970:65:32","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"3985:4:32","nodeType":"YulIdentifier","src":"3985:4:32"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4003:1:32","nodeType":"YulLiteral","src":"4003:1:32","type":"","value":"3"},{"name":"len","nativeSrc":"4006:3:32","nodeType":"YulIdentifier","src":"4006:3:32"}],"functionName":{"name":"shl","nativeSrc":"3999:3:32","nodeType":"YulIdentifier","src":"3999:3:32"},"nativeSrc":"3999:11:32","nodeType":"YulFunctionCall","src":"3999:11:32"},{"arguments":[{"kind":"number","nativeSrc":"4016:1:32","nodeType":"YulLiteral","src":"4016:1:32","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4012:3:32","nodeType":"YulIdentifier","src":"4012:3:32"},"nativeSrc":"4012:6:32","nodeType":"YulFunctionCall","src":"4012:6:32"}],"functionName":{"name":"shr","nativeSrc":"3995:3:32","nodeType":"YulIdentifier","src":"3995:3:32"},"nativeSrc":"3995:24:32","nodeType":"YulFunctionCall","src":"3995:24:32"}],"functionName":{"name":"not","nativeSrc":"3991:3:32","nodeType":"YulIdentifier","src":"3991:3:32"},"nativeSrc":"3991:29:32","nodeType":"YulFunctionCall","src":"3991:29:32"}],"functionName":{"name":"and","nativeSrc":"3981:3:32","nodeType":"YulIdentifier","src":"3981:3:32"},"nativeSrc":"3981:40:32","nodeType":"YulFunctionCall","src":"3981:40:32"},{"arguments":[{"kind":"number","nativeSrc":"4027:1:32","nodeType":"YulLiteral","src":"4027:1:32","type":"","value":"1"},{"name":"len","nativeSrc":"4030:3:32","nodeType":"YulIdentifier","src":"4030:3:32"}],"functionName":{"name":"shl","nativeSrc":"4023:3:32","nodeType":"YulIdentifier","src":"4023:3:32"},"nativeSrc":"4023:11:32","nodeType":"YulFunctionCall","src":"4023:11:32"}],"functionName":{"name":"or","nativeSrc":"3978:2:32","nodeType":"YulIdentifier","src":"3978:2:32"},"nativeSrc":"3978:57:32","nodeType":"YulFunctionCall","src":"3978:57:32"},"variableNames":[{"name":"used","nativeSrc":"3970:4:32","nodeType":"YulIdentifier","src":"3970:4:32"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"3875:166:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"3937:4:32","nodeType":"YulTypedName","src":"3937:4:32","type":""},{"name":"len","nativeSrc":"3943:3:32","nodeType":"YulTypedName","src":"3943:3:32","type":""}],"returnVariables":[{"name":"used","nativeSrc":"3951:4:32","nodeType":"YulTypedName","src":"3951:4:32","type":""}],"src":"3875:166:32"},{"body":{"nativeSrc":"4142:1203:32","nodeType":"YulBlock","src":"4142:1203:32","statements":[{"nativeSrc":"4152:24:32","nodeType":"YulVariableDeclaration","src":"4152:24:32","value":{"arguments":[{"name":"src","nativeSrc":"4172:3:32","nodeType":"YulIdentifier","src":"4172:3:32"}],"functionName":{"name":"mload","nativeSrc":"4166:5:32","nodeType":"YulIdentifier","src":"4166:5:32"},"nativeSrc":"4166:10:32","nodeType":"YulFunctionCall","src":"4166:10:32"},"variables":[{"name":"newLen","nativeSrc":"4156:6:32","nodeType":"YulTypedName","src":"4156:6:32","type":""}]},{"body":{"nativeSrc":"4219:22:32","nodeType":"YulBlock","src":"4219:22:32","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"4221:16:32","nodeType":"YulIdentifier","src":"4221:16:32"},"nativeSrc":"4221:18:32","nodeType":"YulFunctionCall","src":"4221:18:32"},"nativeSrc":"4221:18:32","nodeType":"YulExpressionStatement","src":"4221:18:32"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"4191:6:32","nodeType":"YulIdentifier","src":"4191:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4207:2:32","nodeType":"YulLiteral","src":"4207:2:32","type":"","value":"64"},{"kind":"number","nativeSrc":"4211:1:32","nodeType":"YulLiteral","src":"4211:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4203:3:32","nodeType":"YulIdentifier","src":"4203:3:32"},"nativeSrc":"4203:10:32","nodeType":"YulFunctionCall","src":"4203:10:32"},{"kind":"number","nativeSrc":"4215:1:32","nodeType":"YulLiteral","src":"4215:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4199:3:32","nodeType":"YulIdentifier","src":"4199:3:32"},"nativeSrc":"4199:18:32","nodeType":"YulFunctionCall","src":"4199:18:32"}],"functionName":{"name":"gt","nativeSrc":"4188:2:32","nodeType":"YulIdentifier","src":"4188:2:32"},"nativeSrc":"4188:30:32","nodeType":"YulFunctionCall","src":"4188:30:32"},"nativeSrc":"4185:56:32","nodeType":"YulIf","src":"4185:56:32"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"4294:4:32","nodeType":"YulIdentifier","src":"4294:4:32"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"4332:4:32","nodeType":"YulIdentifier","src":"4332:4:32"}],"functionName":{"name":"sload","nativeSrc":"4326:5:32","nodeType":"YulIdentifier","src":"4326:5:32"},"nativeSrc":"4326:11:32","nodeType":"YulFunctionCall","src":"4326:11:32"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"4300:25:32","nodeType":"YulIdentifier","src":"4300:25:32"},"nativeSrc":"4300:38:32","nodeType":"YulFunctionCall","src":"4300:38:32"},{"name":"newLen","nativeSrc":"4340:6:32","nodeType":"YulIdentifier","src":"4340:6:32"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"4250:43:32","nodeType":"YulIdentifier","src":"4250:43:32"},"nativeSrc":"4250:97:32","nodeType":"YulFunctionCall","src":"4250:97:32"},"nativeSrc":"4250:97:32","nodeType":"YulExpressionStatement","src":"4250:97:32"},{"nativeSrc":"4356:18:32","nodeType":"YulVariableDeclaration","src":"4356:18:32","value":{"kind":"number","nativeSrc":"4373:1:32","nodeType":"YulLiteral","src":"4373:1:32","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"4360:9:32","nodeType":"YulTypedName","src":"4360:9:32","type":""}]},{"nativeSrc":"4383:17:32","nodeType":"YulAssignment","src":"4383:17:32","value":{"kind":"number","nativeSrc":"4396:4:32","nodeType":"YulLiteral","src":"4396:4:32","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"4383:9:32","nodeType":"YulIdentifier","src":"4383:9:32"}]},{"cases":[{"body":{"nativeSrc":"4446:642:32","nodeType":"YulBlock","src":"4446:642:32","statements":[{"nativeSrc":"4460:35:32","nodeType":"YulVariableDeclaration","src":"4460:35:32","value":{"arguments":[{"name":"newLen","nativeSrc":"4479:6:32","nodeType":"YulIdentifier","src":"4479:6:32"},{"arguments":[{"kind":"number","nativeSrc":"4491:2:32","nodeType":"YulLiteral","src":"4491:2:32","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"4487:3:32","nodeType":"YulIdentifier","src":"4487:3:32"},"nativeSrc":"4487:7:32","nodeType":"YulFunctionCall","src":"4487:7:32"}],"functionName":{"name":"and","nativeSrc":"4475:3:32","nodeType":"YulIdentifier","src":"4475:3:32"},"nativeSrc":"4475:20:32","nodeType":"YulFunctionCall","src":"4475:20:32"},"variables":[{"name":"loopEnd","nativeSrc":"4464:7:32","nodeType":"YulTypedName","src":"4464:7:32","type":""}]},{"nativeSrc":"4508:49:32","nodeType":"YulVariableDeclaration","src":"4508:49:32","value":{"arguments":[{"name":"slot","nativeSrc":"4552:4:32","nodeType":"YulIdentifier","src":"4552:4:32"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"4522:29:32","nodeType":"YulIdentifier","src":"4522:29:32"},"nativeSrc":"4522:35:32","nodeType":"YulFunctionCall","src":"4522:35:32"},"variables":[{"name":"dstPtr","nativeSrc":"4512:6:32","nodeType":"YulTypedName","src":"4512:6:32","type":""}]},{"nativeSrc":"4570:10:32","nodeType":"YulVariableDeclaration","src":"4570:10:32","value":{"kind":"number","nativeSrc":"4579:1:32","nodeType":"YulLiteral","src":"4579:1:32","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"4574:1:32","nodeType":"YulTypedName","src":"4574:1:32","type":""}]},{"body":{"nativeSrc":"4650:165:32","nodeType":"YulBlock","src":"4650:165:32","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"4675:6:32","nodeType":"YulIdentifier","src":"4675:6:32"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"4693:3:32","nodeType":"YulIdentifier","src":"4693:3:32"},{"name":"srcOffset","nativeSrc":"4698:9:32","nodeType":"YulIdentifier","src":"4698:9:32"}],"functionName":{"name":"add","nativeSrc":"4689:3:32","nodeType":"YulIdentifier","src":"4689:3:32"},"nativeSrc":"4689:19:32","nodeType":"YulFunctionCall","src":"4689:19:32"}],"functionName":{"name":"mload","nativeSrc":"4683:5:32","nodeType":"YulIdentifier","src":"4683:5:32"},"nativeSrc":"4683:26:32","nodeType":"YulFunctionCall","src":"4683:26:32"}],"functionName":{"name":"sstore","nativeSrc":"4668:6:32","nodeType":"YulIdentifier","src":"4668:6:32"},"nativeSrc":"4668:42:32","nodeType":"YulFunctionCall","src":"4668:42:32"},"nativeSrc":"4668:42:32","nodeType":"YulExpressionStatement","src":"4668:42:32"},{"nativeSrc":"4727:24:32","nodeType":"YulAssignment","src":"4727:24:32","value":{"arguments":[{"name":"dstPtr","nativeSrc":"4741:6:32","nodeType":"YulIdentifier","src":"4741:6:32"},{"kind":"number","nativeSrc":"4749:1:32","nodeType":"YulLiteral","src":"4749:1:32","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"4737:3:32","nodeType":"YulIdentifier","src":"4737:3:32"},"nativeSrc":"4737:14:32","nodeType":"YulFunctionCall","src":"4737:14:32"},"variableNames":[{"name":"dstPtr","nativeSrc":"4727:6:32","nodeType":"YulIdentifier","src":"4727:6:32"}]},{"nativeSrc":"4768:33:32","nodeType":"YulAssignment","src":"4768:33:32","value":{"arguments":[{"name":"srcOffset","nativeSrc":"4785:9:32","nodeType":"YulIdentifier","src":"4785:9:32"},{"kind":"number","nativeSrc":"4796:4:32","nodeType":"YulLiteral","src":"4796:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4781:3:32","nodeType":"YulIdentifier","src":"4781:3:32"},"nativeSrc":"4781:20:32","nodeType":"YulFunctionCall","src":"4781:20:32"},"variableNames":[{"name":"srcOffset","nativeSrc":"4768:9:32","nodeType":"YulIdentifier","src":"4768:9:32"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"4604:1:32","nodeType":"YulIdentifier","src":"4604:1:32"},{"name":"loopEnd","nativeSrc":"4607:7:32","nodeType":"YulIdentifier","src":"4607:7:32"}],"functionName":{"name":"lt","nativeSrc":"4601:2:32","nodeType":"YulIdentifier","src":"4601:2:32"},"nativeSrc":"4601:14:32","nodeType":"YulFunctionCall","src":"4601:14:32"},"nativeSrc":"4593:222:32","nodeType":"YulForLoop","post":{"nativeSrc":"4616:21:32","nodeType":"YulBlock","src":"4616:21:32","statements":[{"nativeSrc":"4618:17:32","nodeType":"YulAssignment","src":"4618:17:32","value":{"arguments":[{"name":"i","nativeSrc":"4627:1:32","nodeType":"YulIdentifier","src":"4627:1:32"},{"kind":"number","nativeSrc":"4630:4:32","nodeType":"YulLiteral","src":"4630:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4623:3:32","nodeType":"YulIdentifier","src":"4623:3:32"},"nativeSrc":"4623:12:32","nodeType":"YulFunctionCall","src":"4623:12:32"},"variableNames":[{"name":"i","nativeSrc":"4618:1:32","nodeType":"YulIdentifier","src":"4618:1:32"}]}]},"pre":{"nativeSrc":"4597:3:32","nodeType":"YulBlock","src":"4597:3:32","statements":[]},"src":"4593:222:32"},{"body":{"nativeSrc":"4863:166:32","nodeType":"YulBlock","src":"4863:166:32","statements":[{"nativeSrc":"4881:43:32","nodeType":"YulVariableDeclaration","src":"4881:43:32","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"4908:3:32","nodeType":"YulIdentifier","src":"4908:3:32"},{"name":"srcOffset","nativeSrc":"4913:9:32","nodeType":"YulIdentifier","src":"4913:9:32"}],"functionName":{"name":"add","nativeSrc":"4904:3:32","nodeType":"YulIdentifier","src":"4904:3:32"},"nativeSrc":"4904:19:32","nodeType":"YulFunctionCall","src":"4904:19:32"}],"functionName":{"name":"mload","nativeSrc":"4898:5:32","nodeType":"YulIdentifier","src":"4898:5:32"},"nativeSrc":"4898:26:32","nodeType":"YulFunctionCall","src":"4898:26:32"},"variables":[{"name":"lastValue","nativeSrc":"4885:9:32","nodeType":"YulTypedName","src":"4885:9:32","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"4948:6:32","nodeType":"YulIdentifier","src":"4948:6:32"},{"arguments":[{"name":"lastValue","nativeSrc":"4960:9:32","nodeType":"YulIdentifier","src":"4960:9:32"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4987:1:32","nodeType":"YulLiteral","src":"4987:1:32","type":"","value":"3"},{"name":"newLen","nativeSrc":"4990:6:32","nodeType":"YulIdentifier","src":"4990:6:32"}],"functionName":{"name":"shl","nativeSrc":"4983:3:32","nodeType":"YulIdentifier","src":"4983:3:32"},"nativeSrc":"4983:14:32","nodeType":"YulFunctionCall","src":"4983:14:32"},{"kind":"number","nativeSrc":"4999:3:32","nodeType":"YulLiteral","src":"4999:3:32","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"4979:3:32","nodeType":"YulIdentifier","src":"4979:3:32"},"nativeSrc":"4979:24:32","nodeType":"YulFunctionCall","src":"4979:24:32"},{"arguments":[{"kind":"number","nativeSrc":"5009:1:32","nodeType":"YulLiteral","src":"5009:1:32","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"5005:3:32","nodeType":"YulIdentifier","src":"5005:3:32"},"nativeSrc":"5005:6:32","nodeType":"YulFunctionCall","src":"5005:6:32"}],"functionName":{"name":"shr","nativeSrc":"4975:3:32","nodeType":"YulIdentifier","src":"4975:3:32"},"nativeSrc":"4975:37:32","nodeType":"YulFunctionCall","src":"4975:37:32"}],"functionName":{"name":"not","nativeSrc":"4971:3:32","nodeType":"YulIdentifier","src":"4971:3:32"},"nativeSrc":"4971:42:32","nodeType":"YulFunctionCall","src":"4971:42:32"}],"functionName":{"name":"and","nativeSrc":"4956:3:32","nodeType":"YulIdentifier","src":"4956:3:32"},"nativeSrc":"4956:58:32","nodeType":"YulFunctionCall","src":"4956:58:32"}],"functionName":{"name":"sstore","nativeSrc":"4941:6:32","nodeType":"YulIdentifier","src":"4941:6:32"},"nativeSrc":"4941:74:32","nodeType":"YulFunctionCall","src":"4941:74:32"},"nativeSrc":"4941:74:32","nodeType":"YulExpressionStatement","src":"4941:74:32"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"4834:7:32","nodeType":"YulIdentifier","src":"4834:7:32"},{"name":"newLen","nativeSrc":"4843:6:32","nodeType":"YulIdentifier","src":"4843:6:32"}],"functionName":{"name":"lt","nativeSrc":"4831:2:32","nodeType":"YulIdentifier","src":"4831:2:32"},"nativeSrc":"4831:19:32","nodeType":"YulFunctionCall","src":"4831:19:32"},"nativeSrc":"4828:201:32","nodeType":"YulIf","src":"4828:201:32"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"5049:4:32","nodeType":"YulIdentifier","src":"5049:4:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5063:1:32","nodeType":"YulLiteral","src":"5063:1:32","type":"","value":"1"},{"name":"newLen","nativeSrc":"5066:6:32","nodeType":"YulIdentifier","src":"5066:6:32"}],"functionName":{"name":"shl","nativeSrc":"5059:3:32","nodeType":"YulIdentifier","src":"5059:3:32"},"nativeSrc":"5059:14:32","nodeType":"YulFunctionCall","src":"5059:14:32"},{"kind":"number","nativeSrc":"5075:1:32","nodeType":"YulLiteral","src":"5075:1:32","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"5055:3:32","nodeType":"YulIdentifier","src":"5055:3:32"},"nativeSrc":"5055:22:32","nodeType":"YulFunctionCall","src":"5055:22:32"}],"functionName":{"name":"sstore","nativeSrc":"5042:6:32","nodeType":"YulIdentifier","src":"5042:6:32"},"nativeSrc":"5042:36:32","nodeType":"YulFunctionCall","src":"5042:36:32"},"nativeSrc":"5042:36:32","nodeType":"YulExpressionStatement","src":"5042:36:32"}]},"nativeSrc":"4439:649:32","nodeType":"YulCase","src":"4439:649:32","value":{"kind":"number","nativeSrc":"4444:1:32","nodeType":"YulLiteral","src":"4444:1:32","type":"","value":"1"}},{"body":{"nativeSrc":"5105:234:32","nodeType":"YulBlock","src":"5105:234:32","statements":[{"nativeSrc":"5119:14:32","nodeType":"YulVariableDeclaration","src":"5119:14:32","value":{"kind":"number","nativeSrc":"5132:1:32","nodeType":"YulLiteral","src":"5132:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5123:5:32","nodeType":"YulTypedName","src":"5123:5:32","type":""}]},{"body":{"nativeSrc":"5168:67:32","nodeType":"YulBlock","src":"5168:67:32","statements":[{"nativeSrc":"5186:35:32","nodeType":"YulAssignment","src":"5186:35:32","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5205:3:32","nodeType":"YulIdentifier","src":"5205:3:32"},{"name":"srcOffset","nativeSrc":"5210:9:32","nodeType":"YulIdentifier","src":"5210:9:32"}],"functionName":{"name":"add","nativeSrc":"5201:3:32","nodeType":"YulIdentifier","src":"5201:3:32"},"nativeSrc":"5201:19:32","nodeType":"YulFunctionCall","src":"5201:19:32"}],"functionName":{"name":"mload","nativeSrc":"5195:5:32","nodeType":"YulIdentifier","src":"5195:5:32"},"nativeSrc":"5195:26:32","nodeType":"YulFunctionCall","src":"5195:26:32"},"variableNames":[{"name":"value","nativeSrc":"5186:5:32","nodeType":"YulIdentifier","src":"5186:5:32"}]}]},"condition":{"name":"newLen","nativeSrc":"5149:6:32","nodeType":"YulIdentifier","src":"5149:6:32"},"nativeSrc":"5146:89:32","nodeType":"YulIf","src":"5146:89:32"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"5255:4:32","nodeType":"YulIdentifier","src":"5255:4:32"},{"arguments":[{"name":"value","nativeSrc":"5314:5:32","nodeType":"YulIdentifier","src":"5314:5:32"},{"name":"newLen","nativeSrc":"5321:6:32","nodeType":"YulIdentifier","src":"5321:6:32"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"5261:52:32","nodeType":"YulIdentifier","src":"5261:52:32"},"nativeSrc":"5261:67:32","nodeType":"YulFunctionCall","src":"5261:67:32"}],"functionName":{"name":"sstore","nativeSrc":"5248:6:32","nodeType":"YulIdentifier","src":"5248:6:32"},"nativeSrc":"5248:81:32","nodeType":"YulFunctionCall","src":"5248:81:32"},"nativeSrc":"5248:81:32","nodeType":"YulExpressionStatement","src":"5248:81:32"}]},"nativeSrc":"5097:242:32","nodeType":"YulCase","src":"5097:242:32","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"4419:6:32","nodeType":"YulIdentifier","src":"4419:6:32"},{"kind":"number","nativeSrc":"4427:2:32","nodeType":"YulLiteral","src":"4427:2:32","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"4416:2:32","nodeType":"YulIdentifier","src":"4416:2:32"},"nativeSrc":"4416:14:32","nodeType":"YulFunctionCall","src":"4416:14:32"},"nativeSrc":"4409:930:32","nodeType":"YulSwitch","src":"4409:930:32"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"4046:1299:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"4127:4:32","nodeType":"YulTypedName","src":"4127:4:32","type":""},{"name":"src","nativeSrc":"4133:3:32","nodeType":"YulTypedName","src":"4133:3:32","type":""}],"src":"4046:1299:32"},{"body":{"nativeSrc":"5451:102:32","nodeType":"YulBlock","src":"5451:102:32","statements":[{"nativeSrc":"5461:26:32","nodeType":"YulAssignment","src":"5461:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"5473:9:32","nodeType":"YulIdentifier","src":"5473:9:32"},{"kind":"number","nativeSrc":"5484:2:32","nodeType":"YulLiteral","src":"5484:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5469:3:32","nodeType":"YulIdentifier","src":"5469:3:32"},"nativeSrc":"5469:18:32","nodeType":"YulFunctionCall","src":"5469:18:32"},"variableNames":[{"name":"tail","nativeSrc":"5461:4:32","nodeType":"YulIdentifier","src":"5461:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5503:9:32","nodeType":"YulIdentifier","src":"5503:9:32"},{"arguments":[{"name":"value0","nativeSrc":"5518:6:32","nodeType":"YulIdentifier","src":"5518:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5534:3:32","nodeType":"YulLiteral","src":"5534:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"5539:1:32","nodeType":"YulLiteral","src":"5539:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5530:3:32","nodeType":"YulIdentifier","src":"5530:3:32"},"nativeSrc":"5530:11:32","nodeType":"YulFunctionCall","src":"5530:11:32"},{"kind":"number","nativeSrc":"5543:1:32","nodeType":"YulLiteral","src":"5543:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5526:3:32","nodeType":"YulIdentifier","src":"5526:3:32"},"nativeSrc":"5526:19:32","nodeType":"YulFunctionCall","src":"5526:19:32"}],"functionName":{"name":"and","nativeSrc":"5514:3:32","nodeType":"YulIdentifier","src":"5514:3:32"},"nativeSrc":"5514:32:32","nodeType":"YulFunctionCall","src":"5514:32:32"}],"functionName":{"name":"mstore","nativeSrc":"5496:6:32","nodeType":"YulIdentifier","src":"5496:6:32"},"nativeSrc":"5496:51:32","nodeType":"YulFunctionCall","src":"5496:51:32"},"nativeSrc":"5496:51:32","nodeType":"YulExpressionStatement","src":"5496:51:32"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"5350:203:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5420:9:32","nodeType":"YulTypedName","src":"5420:9:32","type":""},{"name":"value0","nativeSrc":"5431:6:32","nodeType":"YulTypedName","src":"5431:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5442:4:32","nodeType":"YulTypedName","src":"5442:4:32","type":""}],"src":"5350:203:32"},{"body":{"nativeSrc":"5686:144:32","nodeType":"YulBlock","src":"5686:144:32","statements":[{"nativeSrc":"5696:26:32","nodeType":"YulAssignment","src":"5696:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"5708:9:32","nodeType":"YulIdentifier","src":"5708:9:32"},{"kind":"number","nativeSrc":"5719:2:32","nodeType":"YulLiteral","src":"5719:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5704:3:32","nodeType":"YulIdentifier","src":"5704:3:32"},"nativeSrc":"5704:18:32","nodeType":"YulFunctionCall","src":"5704:18:32"},"variableNames":[{"name":"tail","nativeSrc":"5696:4:32","nodeType":"YulIdentifier","src":"5696:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5738:9:32","nodeType":"YulIdentifier","src":"5738:9:32"},{"arguments":[{"name":"value0","nativeSrc":"5753:6:32","nodeType":"YulIdentifier","src":"5753:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5769:2:32","nodeType":"YulLiteral","src":"5769:2:32","type":"","value":"96"},{"kind":"number","nativeSrc":"5773:1:32","nodeType":"YulLiteral","src":"5773:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5765:3:32","nodeType":"YulIdentifier","src":"5765:3:32"},"nativeSrc":"5765:10:32","nodeType":"YulFunctionCall","src":"5765:10:32"},{"kind":"number","nativeSrc":"5777:1:32","nodeType":"YulLiteral","src":"5777:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5761:3:32","nodeType":"YulIdentifier","src":"5761:3:32"},"nativeSrc":"5761:18:32","nodeType":"YulFunctionCall","src":"5761:18:32"}],"functionName":{"name":"and","nativeSrc":"5749:3:32","nodeType":"YulIdentifier","src":"5749:3:32"},"nativeSrc":"5749:31:32","nodeType":"YulFunctionCall","src":"5749:31:32"}],"functionName":{"name":"mstore","nativeSrc":"5731:6:32","nodeType":"YulIdentifier","src":"5731:6:32"},"nativeSrc":"5731:50:32","nodeType":"YulFunctionCall","src":"5731:50:32"},"nativeSrc":"5731:50:32","nodeType":"YulExpressionStatement","src":"5731:50:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5801:9:32","nodeType":"YulIdentifier","src":"5801:9:32"},{"kind":"number","nativeSrc":"5812:2:32","nodeType":"YulLiteral","src":"5812:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5797:3:32","nodeType":"YulIdentifier","src":"5797:3:32"},"nativeSrc":"5797:18:32","nodeType":"YulFunctionCall","src":"5797:18:32"},{"name":"value1","nativeSrc":"5817:6:32","nodeType":"YulIdentifier","src":"5817:6:32"}],"functionName":{"name":"mstore","nativeSrc":"5790:6:32","nodeType":"YulIdentifier","src":"5790:6:32"},"nativeSrc":"5790:34:32","nodeType":"YulFunctionCall","src":"5790:34:32"},"nativeSrc":"5790:34:32","nodeType":"YulExpressionStatement","src":"5790:34:32"}]},"name":"abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"5558:272:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5647:9:32","nodeType":"YulTypedName","src":"5647:9:32","type":""},{"name":"value1","nativeSrc":"5658:6:32","nodeType":"YulTypedName","src":"5658:6:32","type":""},{"name":"value0","nativeSrc":"5666:6:32","nodeType":"YulTypedName","src":"5666:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5677:4:32","nodeType":"YulTypedName","src":"5677:4:32","type":""}],"src":"5558:272:32"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := mload(offset)\n if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, length)\n if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n mcopy(add(memPtr, 0x20), add(offset, 0x20), length)\n mstore(add(add(memPtr, length), 0x20), 0)\n array := memPtr\n }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_uint96_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(96, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_uint48_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, 0xffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint96t_addresst_addresst_uint48_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8\n {\n if slt(sub(dataEnd, headStart), 288) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n let offset_2 := mload(add(headStart, 64))\n if gt(offset_2, sub(shl(64, 1), 1)) { revert(0, 0) }\n value2 := abi_decode_string_fromMemory(add(headStart, offset_2), dataEnd)\n let offset_3 := mload(add(headStart, 96))\n if gt(offset_3, sub(shl(64, 1), 1)) { revert(0, 0) }\n value3 := abi_decode_string_fromMemory(add(headStart, offset_3), dataEnd)\n value4 := abi_decode_address_fromMemory(add(headStart, 128))\n value5 := abi_decode_uint96_fromMemory(add(headStart, 160))\n value6 := abi_decode_address_fromMemory(add(headStart, 192))\n value7 := abi_decode_address_fromMemory(add(headStart, 224))\n value8 := abi_decode_uint48_fromMemory(add(headStart, 256))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _1 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _1) { start := add(start, 1) }\n { sstore(start, 0) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 0x20)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(96, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n}","id":32,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561000f575f80fd5b50604051612d02380380612d0283398101604081905261002e916103f0565b80838a8a5f61003d8382610580565b50600161004a8282610580565b5050506001600160a01b03811661007b57604051636116401160e11b81525f60048201526024015b60405180910390fd5b600d80546001600160d01b0316600160d01b65ffffffffffff8516021790556100a45f82610151565b5050506001600160a01b03851615806100c457506001600160a01b038316155b806100d657506001600160a01b038216155b156100f45760405163d92e233d60e01b815260040160405180910390fd5b60106101008882610580565b50601161010d8782610580565b5061011885856101c0565b6101427f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683610151565b5050505050505050505061063a565b5f826101ad575f61016a600e546001600160a01b031690565b6001600160a01b03161461019157604051631fe1e13d60e11b815260040160405180910390fd5b600e80546001600160a01b0319166001600160a01b0384161790555b6101b78383610262565b90505b92915050565b6127106001600160601b0382168110156101ff57604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610072565b6001600160a01b03831661022857604051635b6cc80560e11b81525f6004820152602401610072565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b5f828152600c602090815260408083206001600160a01b038516845290915281205460ff16610306575f838152600c602090815260408083206001600160a01b03861684529091529020805460ff191660011790556102be3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101ba565b505f6101ba565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610330575f80fd5b81516001600160401b038111156103495761034961030d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103775761037761030d565b60405281815283820160200185101561038e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146103c0575f80fd5b919050565b80516001600160601b03811681146103c0575f80fd5b805165ffffffffffff811681146103c0575f80fd5b5f805f805f805f805f6101208a8c031215610409575f80fd5b89516001600160401b0381111561041e575f80fd5b61042a8c828d01610321565b60208c0151909a5090506001600160401b03811115610447575f80fd5b6104538c828d01610321565b60408c015190995090506001600160401b03811115610470575f80fd5b61047c8c828d01610321565b60608c015190985090506001600160401b03811115610499575f80fd5b6104a58c828d01610321565b9650506104b460808b016103aa565b94506104c260a08b016103c5565b93506104d060c08b016103aa565b92506104de60e08b016103aa565b91506104ed6101008b016103db565b90509295985092959850929598565b600181811c9082168061051057607f821691505b60208210810361052e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561057b57805f5260205f20601f840160051c810160208510156105595750805b601f840160051c820191505b81811015610578575f8155600101610565565b50505b505050565b81516001600160401b038111156105995761059961030d565b6105ad816105a784546104fc565b84610534565b6020601f8211600181146105df575f83156105c85750848201515b5f19600385901b1c1916600184901b178455610578565b5f84815260208120601f198516915b8281101561060e57878501518255602094850194600190920191016105ee565b508482101561062b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6126bb806106475f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c80636c0360eb1161014b578063a22cb465116100bf578063cf6eefb711610084578063cf6eefb71461054e578063d53913931461057c578063d547741f146105a3578063d602b9fd146105b6578063e8a3d485146105be578063e985e9c5146105c6575f80fd5b8063a22cb46514610505578063b88d4fde14610518578063c87b56dd1461052b578063cc8463c81461053e578063cefc142914610546575f80fd5b806391d148541161011057806391d1485414610496578063938e3d7b146104a957806395d89b41146104bc578063a1448194146104c4578063a1eda53c146104d7578063a217fddf146104fe575f80fd5b80636c0360eb1461045a57806370a08231146104625780638456cb591461047557806384ef8ffc1461047d5780638da5cb5b1461048e575f80fd5b80632f2ff15d116101e25780634f6ccce7116101a75780634f6ccce7146103f057806355f804b3146104035780635c975abb14610416578063634e93da146104215780636352211e14610434578063649a5ec714610447575f80fd5b80632f2ff15d1461039c5780632f745c59146103af57806336568abe146103c25780633f4ba83a146103d557806342842e0e146103dd575f80fd5b8063095ea7b311610233578063095ea7b3146103085780630aa6220b1461031b57806318160ddd1461032357806323b872dd14610335578063248a9ca3146103485780632a55205a1461036a575f80fd5b806301ffc9a71461026f578063022d63fb1461029757806302fa7c47146102b357806306fdde03146102c8578063081812fc146102dd575b5f80fd5b61028261027d36600461205c565b6105d9565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff909116815260200161028e565b6102c66102c1366004612092565b6105e9565b005b6102d0610670565b60405161028e9190612100565b6102f06102eb366004612112565b6106ff565b6040516001600160a01b03909116815260200161028e565b6102c6610316366004612129565b610726565b6102c6610735565b6008545b60405190815260200161028e565b6102c6610343366004612151565b61074a565b610327610356366004612112565b5f908152600c602052604090206001015490565b61037d61037836600461218b565b6107d8565b604080516001600160a01b03909316835260208301919091520161028e565b6102c66103aa3660046121ab565b61085b565b6103276103bd366004612129565b610883565b6102c66103d03660046121ab565b6108e6565b6102c661098c565b6102c66103eb366004612151565b61099e565b6103276103fe366004612112565b6109bd565b6102c66104113660046121d5565b610a12565b600f5460ff16610282565b6102c661042f366004612243565b610afb565b6102f0610442366004612112565b610b0e565b6102c661045536600461225c565b610b18565b6102d0610b2b565b610327610470366004612243565b610b3a565b6102c6610b7f565b600e546001600160a01b03166102f0565b6102f0610b91565b6102826104a43660046121ab565b610ba9565b6102c66104b73660046121d5565b610bd3565b6102d0610cae565b6102c66104d2366004612129565b610cbd565b6104df610cf9565b6040805165ffffffffffff93841681529290911660208301520161028e565b6103275f81565b6102c6610513366004612281565b610d4b565b6102c66105263660046122c3565b610d56565b6102d0610539366004612112565b610d6e565b61029c610dd3565b6102c6610e31565b610556610e70565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161028e565b6103277f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102c66105b13660046121ab565b610e91565b6102c6610eb9565b6102d0610ecb565b6102826105d43660046123a0565b610eda565b5f6105e382610f07565b92915050565b5f6105f381610f2b565b6001600160a01b03831661061a5760405163d92e233d60e01b815260040160405180910390fd5b6106248383610f35565b6040516001600160601b03831681526001600160a01b038416907fe12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf49060200160405180910390a2505050565b60605f805461067e906123c8565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa906123c8565b80156106f55780601f106106cc576101008083540402835291602001916106f5565b820191905f5260205f20905b8154815290600101906020018083116106d857829003601f168201915b5050505050905090565b5f61070982610fd7565b505f828152600460205260409020546001600160a01b03166105e3565b61073182823361100f565b5050565b5f61073f81610f2b565b61074761101c565b50565b6001600160a01b03821661077857604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610784838333611028565b9050836001600160a01b0316816001600160a01b0316146107d2576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161076f565b50505050565b5f828152600b6020526040812080548291906001600160a01b03811690600160a01b90046001600160601b03168161082b575050600a546001600160a01b03811690600160a01b90046001600160601b03165b5f6127106108426001600160601b03841689612414565b61084c919061242b565b92989297509195505050505050565b8161087957604051631fe1e13d60e11b815260040160405180910390fd5b610731828261103c565b5f61088d83610b3a565b82106108be5760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161076f565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b811580156109015750600e546001600160a01b038281169116145b15610982575f80610910610e70565b90925090506001600160a01b038216151580610932575065ffffffffffff8116155b8061094557504265ffffffffffff821610155b1561096d576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161076f565b5050600d805465ffffffffffff60a01b191690555b6107318282611060565b5f61099681610f2b565b610747611093565b6109b883838360405180602001604052805f815250610d56565b505050565b5f6109c760085490565b82106109ef5760405163295f44f760e21b81525f60048201526024810183905260440161076f565b60088281548110610a0257610a0261244a565b905f5260205f2001549050919050565b5f610a1c81610f2b565b5f60108054610a2a906123c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a56906123c8565b8015610aa15780601f10610a7857610100808354040283529160200191610aa1565b820191905f5260205f20905b815481529060010190602001808311610a8457829003601f168201915b50505050509050838360109182610ab99291906124a2565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1818585604051610aed9392919061255c565b60405180910390a150505050565b5f610b0581610f2b565b610731826110e5565b5f6105e382610fd7565b5f610b2281610f2b565b61073182611157565b60606010805461067e906123c8565b5f6001600160a01b038216610b64576040516322718ad960e21b81525f600482015260240161076f565b506001600160a01b03165f9081526003602052604090205490565b5f610b8981610f2b565b6107476111c6565b5f610ba4600e546001600160a01b031690565b905090565b5f918252600c602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610bdd81610f2b565b5f60118054610beb906123c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610c17906123c8565b8015610c625780601f10610c3957610100808354040283529160200191610c62565b820191905f5260205f20905b815481529060010190602001808311610c4557829003601f168201915b50505050509050838360119182610c7a9291906124a2565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16818585604051610aed9392919061255c565b60606001805461067e906123c8565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610ce781610f2b565b610cef611203565b6109b88383611227565b600e545f90600160d01b900465ffffffffffff168015158015610d2457504265ffffffffffff821610155b610d2f575f80610d43565b600e54600160a01b900465ffffffffffff16815b915091509091565b610731338383611240565b610d6184848461074a565b6107d23385858585611307565b6060610d7982610fd7565b505f610d83610b2b565b90505f815111610da15760405180602001604052805f815250610dcc565b80610dab8461142f565b604051602001610dbc9291906125b7565b6040516020818303038152906040525b9392505050565b600e545f90600160d01b900465ffffffffffff168015158015610dfd57504265ffffffffffff8216105b610e1857600d54600160d01b900465ffffffffffff16610e2b565b600e54600160a01b900465ffffffffffff165b91505090565b5f610e3a610e70565b509050336001600160a01b03821614610e6857604051636116401160e11b815233600482015260240161076f565b6107476114bf565b600d546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610eaf57604051631fe1e13d60e11b815260040160405180910390fd5b6107318282611555565b5f610ec381610f2b565b610747611579565b60606011805461067e906123c8565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166318a4c3c360e11b14806105e357506105e382611583565b61074781336115a7565b6127106001600160601b038216811015610f7457604051636f483d0960e01b81526001600160601b03831660048201526024810182905260440161076f565b6001600160a01b038316610f9d57604051635b6cc80560e11b81525f600482015260240161076f565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b5f818152600260205260408120546001600160a01b0316806105e357604051637e27328960e01b81526004810184905260240161076f565b6109b883838360016115e0565b6110265f806116e4565b565b5f6110348484846117a3565b949350505050565b5f828152600c602052604090206001015461105681610f2b565b6107d2838361186e565b6001600160a01b03811633146110895760405163334bd91960e11b815260040160405180910390fd5b6109b882826118d4565b61109b611910565b600f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f6110ee610dd3565b6110f742611933565b61110191906125cb565b905061110d8282611969565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f611161826119e6565b61116a42611933565b61117491906125cb565b905061118082826116e4565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6111ce611203565b600f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110c83390565b600f5460ff16156110265760405163d93c066560e01b815260040160405180910390fd5b610731828260405180602001604052805f815250611a2d565b6001600160a01b0383166112695760405163a9fbf51f60e01b81525f600482015260240161076f565b6001600160a01b03821661129b57604051630b61174360e31b81526001600160a01b038316600482015260240161076f565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561142857604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906113499088908890879087906004016125e9565b6020604051808303815f875af1925050508015611383575060408051601f3d908101601f1916820190925261138091810190612625565b60015b6113ea573d8080156113b0576040519150601f19603f3d011682016040523d82523d5f602084013e6113b5565b606091505b5080515f036113e257604051633250574960e11b81526001600160a01b038516600482015260240161076f565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461142657604051633250574960e11b81526001600160a01b038516600482015260240161076f565b505b5050505050565b60605f61143b83611a44565b60010190505f8167ffffffffffffffff81111561145a5761145a6122af565b6040519080825280601f01601f191660200182016040528015611484576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461148e57509392505050565b5f806114c9610e70565b915091506114de8165ffffffffffff16151590565b15806114f257504265ffffffffffff821610155b1561151a576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161076f565b6115355f611530600e546001600160a01b031690565b6118d4565b506115405f8361186e565b5050600d80546001600160d01b031916905550565b5f828152600c602052604090206001015461156f81610f2b565b6107d283836118d4565b6110265f80611969565b5f6001600160e01b03198216637965db0b60e01b14806105e357506105e382611b1b565b6115b18282610ba9565b6107315760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161076f565b80806115f457506001600160a01b03821615155b156116b5575f61160384610fd7565b90506001600160a01b0383161580159061162f5750826001600160a01b0316816001600160a01b031614155b801561164257506116408184610eda565b155b1561166b5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161076f565b81156116b35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600e54600160d01b900465ffffffffffff168015611766574265ffffffffffff8216101561173d57600e54600d80546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611766565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600e80546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b5f806117b0858585611b3f565b90506001600160a01b03811661180c5761180784600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61182f565b846001600160a01b0316816001600160a01b03161461182f5761182f8185611c31565b6001600160a01b03851661184b5761184684611cae565b611034565b846001600160a01b0316816001600160a01b031614611034576110348585611d55565b5f826118ca575f611887600e546001600160a01b031690565b6001600160a01b0316146118ae57604051631fe1e13d60e11b815260040160405180910390fd5b600e80546001600160a01b0319166001600160a01b0384161790555b610dcc8383611da3565b5f821580156118f05750600e546001600160a01b038381169116145b1561190657600e80546001600160a01b03191690555b610dcc8383611e34565b600f5460ff1661102657604051638dfc202b60e01b815260040160405180910390fd5b5f65ffffffffffff821115611965576040516306dfcc6560e41b8152603060048201526024810183905260440161076f565b5090565b5f611972610e70565b600d805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b0388161717905591506119b490508165ffffffffffff16151590565b156109b8576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a1505050565b5f806119f0610dd3565b90508065ffffffffffff168365ffffffffffff1611611a1857611a138382612640565b610dcc565b610dcc65ffffffffffff841662069780611e9f565b611a378383611eae565b6109b8335f858585611307565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611a825772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611aae576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611acc57662386f26fc10000830492506010015b6305f5e1008310611ae4576305f5e100830492506008015b6127108310611af857612710830492506004015b60648310611b0a576064830492506002015b600a83106105e35760010192915050565b5f6001600160e01b0319821663152a902d60e11b14806105e357506105e382611f0f565b5f828152600260205260408120546001600160a01b0390811690831615611b6b57611b6b818486611f33565b6001600160a01b03811615611ba557611b865f855f806115e0565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611bd3576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f611c3b83610b3a565b5f838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314611c90575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f90611cbf9060019061265e565b5f8381526009602052604081205460088054939450909284908110611ce657611ce661244a565b905f5260205f20015490508060088381548110611d0557611d0561244a565b5f918252602080832090910192909255828152600990915260408082208490558582528120556008805480611d3c57611d3c612671565b600190038181905f5260205f20015f9055905550505050565b5f6001611d6184610b3a565b611d6b919061265e565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b5f611dae8383610ba9565b611e2d575f838152600c602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611de53390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e3565b505f6105e3565b5f611e3f8383610ba9565b15611e2d575f838152600c602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e3565b5f828218828410028218610dcc565b6001600160a01b038216611ed757604051633250574960e11b81525f600482015260240161076f565b5f611ee383835f611028565b90506001600160a01b038116156109b8576040516339e3563760e11b81525f600482015260240161076f565b5f6001600160e01b0319821663780e9d6360e01b14806105e357506105e382611f97565b611f3e838383611fe6565b6109b8576001600160a01b038316611f6c57604051637e27328960e01b81526004810182905260240161076f565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161076f565b5f6001600160e01b031982166380ac58cd60e01b1480611fc757506001600160e01b03198216635b5e139f60e01b145b806105e357506301ffc9a760e01b6001600160e01b03198316146105e3565b5f6001600160a01b038316158015906110345750826001600160a01b0316846001600160a01b0316148061201f575061201f8484610eda565b806110345750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610747575f80fd5b5f6020828403121561206c575f80fd5b8135610dcc81612047565b80356001600160a01b038116811461208d575f80fd5b919050565b5f80604083850312156120a3575f80fd5b6120ac83612077565b915060208301356001600160601b03811681146120c7575f80fd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dcc60208301846120d2565b5f60208284031215612122575f80fd5b5035919050565b5f806040838503121561213a575f80fd5b61214383612077565b946020939093013593505050565b5f805f60608486031215612163575f80fd5b61216c84612077565b925061217a60208501612077565b929592945050506040919091013590565b5f806040838503121561219c575f80fd5b50508035926020909101359150565b5f80604083850312156121bc575f80fd5b823591506121cc60208401612077565b90509250929050565b5f80602083850312156121e6575f80fd5b823567ffffffffffffffff8111156121fc575f80fd5b8301601f8101851361220c575f80fd5b803567ffffffffffffffff811115612222575f80fd5b856020828401011115612233575f80fd5b6020919091019590945092505050565b5f60208284031215612253575f80fd5b610dcc82612077565b5f6020828403121561226c575f80fd5b813565ffffffffffff81168114610dcc575f80fd5b5f8060408385031215612292575f80fd5b61229b83612077565b9150602083013580151581146120c7575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f80608085870312156122d6575f80fd5b6122df85612077565b93506122ed60208601612077565b925060408501359150606085013567ffffffffffffffff81111561230f575f80fd5b8501601f8101871361231f575f80fd5b803567ffffffffffffffff811115612339576123396122af565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612368576123686122af565b60405281815282820160200189101561237f575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f80604083850312156123b1575f80fd5b6123ba83612077565b91506121cc60208401612077565b600181811c908216806123dc57607f821691505b6020821081036123fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105e3576105e3612400565b5f8261244557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b601f8211156109b857805f5260205f20601f840160051c810160208510156124835750805b601f840160051c820191505b81811015611428575f815560010161248f565b67ffffffffffffffff8311156124ba576124ba6122af565b6124ce836124c883546123c8565b8361245e565b5f601f8411600181146124ff575f85156124e85750838201355b5f19600387901b1c1916600186901b178355611428565b5f83815260208120601f198716915b8281101561252e578685013582556020948501946001909201910161250e565b508682101561254a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f61256e60408301866120d2565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f6110346125c583866125a0565b846125a0565b65ffffffffffff81811683821601908111156105e3576105e3612400565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061261b908301846120d2565b9695505050505050565b5f60208284031215612635575f80fd5b8151610dcc81612047565b65ffffffffffff82811682821603908111156105e3576105e3612400565b818103818111156105e3576105e3612400565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212204dfc414c3f7c881c72a70636389dd9e0c274b6ba5a9f6fa5fea06c294e82584a64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2D02 CODESIZE SUB DUP1 PUSH2 0x2D02 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x3F0 JUMP JUMPDEST DUP1 DUP4 DUP11 DUP11 PUSH0 PUSH2 0x3D DUP4 DUP3 PUSH2 0x580 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x4A DUP3 DUP3 PUSH2 0x580 JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x7B JUMPI PUSH1 0x40 MLOAD PUSH4 0x61164011 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH1 0x1 PUSH1 0xD0 SHL PUSH6 0xFFFFFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0xA4 PUSH0 DUP3 PUSH2 0x151 JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO DUP1 PUSH2 0xC4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO JUMPDEST DUP1 PUSH2 0xD6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO JUMPDEST ISZERO PUSH2 0xF4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x10 PUSH2 0x100 DUP9 DUP3 PUSH2 0x580 JUMP JUMPDEST POP PUSH1 0x11 PUSH2 0x10D DUP8 DUP3 PUSH2 0x580 JUMP JUMPDEST POP PUSH2 0x118 DUP6 DUP6 PUSH2 0x1C0 JUMP JUMPDEST PUSH2 0x142 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP4 PUSH2 0x151 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP PUSH2 0x63A JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1AD JUMPI PUSH0 PUSH2 0x16A PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1B7 DUP4 DUP4 PUSH2 0x262 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND DUP2 LT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x40 MLOAD PUSH4 0x6F483D09 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x72 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x228 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B6CC805 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x72 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 MUL OR PUSH1 0xA SSTORE JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x306 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x2BE CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x1BA JUMP JUMPDEST POP PUSH0 PUSH2 0x1BA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x330 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x349 JUMPI PUSH2 0x349 PUSH2 0x30D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x377 JUMPI PUSH2 0x377 PUSH2 0x30D JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x38E JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3C0 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3C0 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3C0 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x409 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x41E JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x42A DUP13 DUP3 DUP14 ADD PUSH2 0x321 JUMP JUMPDEST PUSH1 0x20 DUP13 ADD MLOAD SWAP1 SWAP11 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x447 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x453 DUP13 DUP3 DUP14 ADD PUSH2 0x321 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP1 SWAP10 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x470 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x47C DUP13 DUP3 DUP14 ADD PUSH2 0x321 JUMP JUMPDEST PUSH1 0x60 DUP13 ADD MLOAD SWAP1 SWAP9 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x499 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x4A5 DUP13 DUP3 DUP14 ADD PUSH2 0x321 JUMP JUMPDEST SWAP7 POP POP PUSH2 0x4B4 PUSH1 0x80 DUP12 ADD PUSH2 0x3AA JUMP JUMPDEST SWAP5 POP PUSH2 0x4C2 PUSH1 0xA0 DUP12 ADD PUSH2 0x3C5 JUMP JUMPDEST SWAP4 POP PUSH2 0x4D0 PUSH1 0xC0 DUP12 ADD PUSH2 0x3AA JUMP JUMPDEST SWAP3 POP PUSH2 0x4DE PUSH1 0xE0 DUP12 ADD PUSH2 0x3AA JUMP JUMPDEST SWAP2 POP PUSH2 0x4ED PUSH2 0x100 DUP12 ADD PUSH2 0x3DB JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x510 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x52E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x57B JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x559 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x578 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x565 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x599 JUMPI PUSH2 0x599 PUSH2 0x30D JUMP JUMPDEST PUSH2 0x5AD DUP2 PUSH2 0x5A7 DUP5 SLOAD PUSH2 0x4FC JUMP JUMPDEST DUP5 PUSH2 0x534 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x5DF JUMPI PUSH0 DUP4 ISZERO PUSH2 0x5C8 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x578 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x60E JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x5EE JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x62B JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x26BB DUP1 PUSH2 0x647 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x26B JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C0360EB GT PUSH2 0x14B JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0xBF JUMPI DUP1 PUSH4 0xCF6EEFB7 GT PUSH2 0x84 JUMPI DUP1 PUSH4 0xCF6EEFB7 EQ PUSH2 0x54E JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5A3 JUMPI DUP1 PUSH4 0xD602B9FD EQ PUSH2 0x5B6 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x5BE JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x5C6 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x518 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0xCC8463C8 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xCEFC1429 EQ PUSH2 0x546 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x110 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x938E3D7B EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4BC JUMPI DUP1 PUSH4 0xA1448194 EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0xA1EDA53C EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x4FE JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x45A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x84EF8FFC EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x48E JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x55F804B3 EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x634E93DA EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0x649A5EC7 EQ PUSH2 0x447 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x3DD JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x233 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0xAA6220B EQ PUSH2 0x31B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x36A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x22D63FB EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x2FA7C47 EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2DD JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x282 PUSH2 0x27D CALLDATASIZE PUSH1 0x4 PUSH2 0x205C JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x69780 JUMPDEST PUSH1 0x40 MLOAD PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x2C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2092 JUMP JUMPDEST PUSH2 0x5E9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D0 PUSH2 0x670 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x2EB CALLDATASIZE PUSH1 0x4 PUSH2 0x2112 JUMP JUMPDEST PUSH2 0x6FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x2129 JUMP JUMPDEST PUSH2 0x726 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x735 JUMP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x343 CALLDATASIZE PUSH1 0x4 PUSH2 0x2151 JUMP JUMPDEST PUSH2 0x74A JUMP JUMPDEST PUSH2 0x327 PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x2112 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x37D PUSH2 0x378 CALLDATASIZE PUSH1 0x4 PUSH2 0x218B JUMP JUMPDEST PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x3AA CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0x85B JUMP JUMPDEST PUSH2 0x327 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2129 JUMP JUMPDEST PUSH2 0x883 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x3D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x98C JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x3EB CALLDATASIZE PUSH1 0x4 PUSH2 0x2151 JUMP JUMPDEST PUSH2 0x99E JUMP JUMPDEST PUSH2 0x327 PUSH2 0x3FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2112 JUMP JUMPDEST PUSH2 0x9BD JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x411 CALLDATASIZE PUSH1 0x4 PUSH2 0x21D5 JUMP JUMPDEST PUSH2 0xA12 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND PUSH2 0x282 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x42F CALLDATASIZE PUSH1 0x4 PUSH2 0x2243 JUMP JUMPDEST PUSH2 0xAFB JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x442 CALLDATASIZE PUSH1 0x4 PUSH2 0x2112 JUMP JUMPDEST PUSH2 0xB0E JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x455 CALLDATASIZE PUSH1 0x4 PUSH2 0x225C JUMP JUMPDEST PUSH2 0xB18 JUMP JUMPDEST PUSH2 0x2D0 PUSH2 0xB2B JUMP JUMPDEST PUSH2 0x327 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x2243 JUMP JUMPDEST PUSH2 0xB3A JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2F0 JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0xB91 JUMP JUMPDEST PUSH2 0x282 PUSH2 0x4A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x4B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x21D5 JUMP JUMPDEST PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x2D0 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x4D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2129 JUMP JUMPDEST PUSH2 0xCBD JUMP JUMPDEST PUSH2 0x4DF PUSH2 0xCF9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x327 PUSH0 DUP2 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x513 CALLDATASIZE PUSH1 0x4 PUSH2 0x2281 JUMP JUMPDEST PUSH2 0xD4B JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x526 CALLDATASIZE PUSH1 0x4 PUSH2 0x22C3 JUMP JUMPDEST PUSH2 0xD56 JUMP JUMPDEST PUSH2 0x2D0 PUSH2 0x539 CALLDATASIZE PUSH1 0x4 PUSH2 0x2112 JUMP JUMPDEST PUSH2 0xD6E JUMP JUMPDEST PUSH2 0x29C PUSH2 0xDD3 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x556 PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x327 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x5B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0xE91 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0xEB9 JUMP JUMPDEST PUSH2 0x2D0 PUSH2 0xECB JUMP JUMPDEST PUSH2 0x282 PUSH2 0x5D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x23A0 JUMP JUMPDEST PUSH2 0xEDA JUMP JUMPDEST PUSH0 PUSH2 0x5E3 DUP3 PUSH2 0xF07 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5F3 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x61A JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x624 DUP4 DUP4 PUSH2 0xF35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xE12D7D5BDB8218A22277DCA8F854DD4573A1CEA3D3E4808DC567DF9EB1C14BF4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 SLOAD PUSH2 0x67E SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6AA SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6F5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6CC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6F5 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6D8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x709 DUP3 PUSH2 0xFD7 JUMP JUMPDEST POP PUSH0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5E3 JUMP JUMPDEST PUSH2 0x731 DUP3 DUP3 CALLER PUSH2 0x100F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x73F DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x747 PUSH2 0x101C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x778 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x784 DUP4 DUP4 CALLER PUSH2 0x1028 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x76F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x82B JUMPI POP POP PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST PUSH0 PUSH2 0x2710 PUSH2 0x842 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND DUP10 PUSH2 0x2414 JUMP JUMPDEST PUSH2 0x84C SWAP2 SWAP1 PUSH2 0x242B JUMP JUMPDEST SWAP3 SWAP9 SWAP3 SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x879 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH2 0x103C JUMP JUMPDEST PUSH0 PUSH2 0x88D DUP4 PUSH2 0xB3A JUMP JUMPDEST DUP3 LT PUSH2 0x8BE JUMPI PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x901 JUMPI POP PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x982 JUMPI PUSH0 DUP1 PUSH2 0x910 PUSH2 0xE70 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x932 JUMPI POP PUSH6 0xFFFFFFFFFFFF DUP2 AND ISZERO JUMPDEST DUP1 PUSH2 0x945 JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH4 0x19CA5EBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST POP POP PUSH1 0xD DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH2 0x1060 JUMP JUMPDEST PUSH0 PUSH2 0x996 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x747 PUSH2 0x1093 JUMP JUMPDEST PUSH2 0x9B8 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0xD56 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9C7 PUSH1 0x8 SLOAD SWAP1 JUMP JUMPDEST DUP3 LT PUSH2 0x9EF JUMPI PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST PUSH1 0x8 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xA02 JUMPI PUSH2 0xA02 PUSH2 0x244A JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xA1C DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH0 PUSH1 0x10 DUP1 SLOAD PUSH2 0xA2A SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA56 SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAA1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA78 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAA1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA84 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 DUP4 PUSH1 0x10 SWAP2 DUP3 PUSH2 0xAB9 SWAP3 SWAP2 SWAP1 PUSH2 0x24A2 JUMP JUMPDEST POP PUSH32 0x309B29DED109B9E28FB9885757B3E0096EB75C51D23AA4635D68BCD569F6ADC1 DUP2 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xAED SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x255C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xB05 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x731 DUP3 PUSH2 0x10E5 JUMP JUMPDEST PUSH0 PUSH2 0x5E3 DUP3 PUSH2 0xFD7 JUMP JUMPDEST PUSH0 PUSH2 0xB22 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x731 DUP3 PUSH2 0x1157 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x10 DUP1 SLOAD PUSH2 0x67E SWAP1 PUSH2 0x23C8 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB64 JUMPI PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xB89 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x747 PUSH2 0x11C6 JUMP JUMPDEST PUSH0 PUSH2 0xBA4 PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xBDD DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH0 PUSH1 0x11 DUP1 SLOAD PUSH2 0xBEB SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xC17 SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC62 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC39 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC62 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC45 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 DUP4 PUSH1 0x11 SWAP2 DUP3 PUSH2 0xC7A SWAP3 SWAP2 SWAP1 PUSH2 0x24A2 JUMP JUMPDEST POP PUSH32 0xC9C7C3FE08B88B4DF9D4D47EF47D2C43D55C025A0BA88CA442580ED9E7348A16 DUP2 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xAED SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x255C JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x67E SWAP1 PUSH2 0x23C8 JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0xCE7 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0xCEF PUSH2 0x1203 JUMP JUMPDEST PUSH2 0x9B8 DUP4 DUP4 PUSH2 0x1227 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 ISZERO PUSH2 0xD24 JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST PUSH2 0xD2F JUMPI PUSH0 DUP1 PUSH2 0xD43 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP2 JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x731 CALLER DUP4 DUP4 PUSH2 0x1240 JUMP JUMPDEST PUSH2 0xD61 DUP5 DUP5 DUP5 PUSH2 0x74A JUMP JUMPDEST PUSH2 0x7D2 CALLER DUP6 DUP6 DUP6 DUP6 PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD79 DUP3 PUSH2 0xFD7 JUMP JUMPDEST POP PUSH0 PUSH2 0xD83 PUSH2 0xB2B JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 MLOAD GT PUSH2 0xDA1 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0xDCC JUMP JUMPDEST DUP1 PUSH2 0xDAB DUP5 PUSH2 0x142F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xDBC SWAP3 SWAP2 SWAP1 PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 ISZERO PUSH2 0xDFD JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT JUMPDEST PUSH2 0xE18 JUMPI PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND PUSH2 0xE2B JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xE3A PUSH2 0xE70 JUMP JUMPDEST POP SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0xE68 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61164011 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH2 0x747 PUSH2 0x14BF JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH6 0xFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0xEAF JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH2 0x1555 JUMP JUMPDEST PUSH0 PUSH2 0xEC3 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x747 PUSH2 0x1579 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x11 DUP1 SLOAD PUSH2 0x67E SWAP1 PUSH2 0x23C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x18A4C3C3 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x5E3 JUMPI POP PUSH2 0x5E3 DUP3 PUSH2 0x1583 JUMP JUMPDEST PUSH2 0x747 DUP2 CALLER PUSH2 0x15A7 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND DUP2 LT ISZERO PUSH2 0xF74 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6F483D09 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xF9D JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B6CC805 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 MUL OR PUSH1 0xA SSTORE JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x5E3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH2 0x9B8 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x15E0 JUMP JUMPDEST PUSH2 0x1026 PUSH0 DUP1 PUSH2 0x16E4 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x1034 DUP5 DUP5 DUP5 PUSH2 0x17A3 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x1056 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x7D2 DUP4 DUP4 PUSH2 0x186E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x1089 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9B8 DUP3 DUP3 PUSH2 0x18D4 JUMP JUMPDEST PUSH2 0x109B PUSH2 0x1910 JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH0 PUSH2 0x10EE PUSH2 0xDD3 JUMP JUMPDEST PUSH2 0x10F7 TIMESTAMP PUSH2 0x1933 JUMP JUMPDEST PUSH2 0x1101 SWAP2 SWAP1 PUSH2 0x25CB JUMP JUMPDEST SWAP1 POP PUSH2 0x110D DUP3 DUP3 PUSH2 0x1969 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x3377DC44241E779DD06AFAB5B788A35CA5F3B778836E2990BDB26A2A4B2E5ED6 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1161 DUP3 PUSH2 0x19E6 JUMP JUMPDEST PUSH2 0x116A TIMESTAMP PUSH2 0x1933 JUMP JUMPDEST PUSH2 0x1174 SWAP2 SWAP1 PUSH2 0x25CB JUMP JUMPDEST SWAP1 POP PUSH2 0x1180 DUP3 DUP3 PUSH2 0x16E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xF1038C18CF84A56E432FDBFAF746924B7EA511DFE03A6506A0CEBA4888788D9B SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x11CE PUSH2 0x1203 JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x10C8 CALLER SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1026 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1269 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x129B JUMPI PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x1428 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1349 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x25E9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1383 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1380 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2625 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x13EA JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x13B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x13B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH0 SUB PUSH2 0x13E2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0x1426 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x143B DUP4 PUSH2 0x1A44 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x145A JUMPI PUSH2 0x145A PUSH2 0x22AF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1484 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0x148E JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x14C9 PUSH2 0xE70 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x14DE DUP2 PUSH6 0xFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO DUP1 PUSH2 0x14F2 JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x151A JUMPI PUSH1 0x40 MLOAD PUSH4 0x19CA5EBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH2 0x1535 PUSH0 PUSH2 0x1530 PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x18D4 JUMP JUMPDEST POP PUSH2 0x1540 PUSH0 DUP4 PUSH2 0x186E JUMP JUMPDEST POP POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x156F DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x7D2 DUP4 DUP4 PUSH2 0x18D4 JUMP JUMPDEST PUSH2 0x1026 PUSH0 DUP1 PUSH2 0x1969 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x5E3 JUMPI POP PUSH2 0x5E3 DUP3 PUSH2 0x1B1B JUMP JUMPDEST PUSH2 0x15B1 DUP3 DUP3 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x731 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST DUP1 DUP1 PUSH2 0x15F4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x16B5 JUMPI PUSH0 PUSH2 0x1603 DUP5 PUSH2 0xFD7 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x162F JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1642 JUMPI POP PUSH2 0x1640 DUP2 DUP5 PUSH2 0xEDA JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x166B JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST DUP2 ISZERO PUSH2 0x16B3 JUMPI DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0x1766 JUMPI TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO PUSH2 0x173D JUMPI PUSH1 0xE SLOAD PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV PUSH6 0xFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xD0 SHL MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1766 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2B1FA2EDAFE6F7B9E97C1A9E0C3660E645BEB2DCAA2D45BDBF9BEAF5472E1EC5 SWAP1 PUSH0 SWAP1 LOG1 JUMPDEST POP PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH6 0xFFFFFFFFFFFF SWAP5 DUP6 AND MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND OR PUSH1 0x1 PUSH1 0xD0 SHL SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x17B0 DUP6 DUP6 DUP6 PUSH2 0x1B3F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180C JUMPI PUSH2 0x1807 DUP5 PUSH1 0x8 DUP1 SLOAD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xF3F7A9FE364FAAB93B216DA50A3214154F22A0A2B415B23A84C8169E8B636EE3 ADD SSTORE JUMP JUMPDEST PUSH2 0x182F JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x182F JUMPI PUSH2 0x182F DUP2 DUP6 PUSH2 0x1C31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x184B JUMPI PUSH2 0x1846 DUP5 PUSH2 0x1CAE JUMP JUMPDEST PUSH2 0x1034 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1034 JUMPI PUSH2 0x1034 DUP6 DUP6 PUSH2 0x1D55 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x18CA JUMPI PUSH0 PUSH2 0x1887 PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18AE JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0xDCC DUP4 DUP4 PUSH2 0x1DA3 JUMP JUMPDEST PUSH0 DUP3 ISZERO DUP1 ISZERO PUSH2 0x18F0 JUMPI POP PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x1906 JUMPI PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMPDEST PUSH2 0xDCC DUP4 DUP4 PUSH2 0x1E34 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND PUSH2 0x1026 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1965 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x30 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1972 PUSH2 0xE70 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF DUP7 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND OR OR SWAP1 SSTORE SWAP2 POP PUSH2 0x19B4 SWAP1 POP DUP2 PUSH6 0xFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8886EBFC4259ABDBC16601DD8FB5678E54878F47B3C34836CFC51154A9605109 SWAP1 PUSH0 SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x19F0 PUSH2 0xDD3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH6 0xFFFFFFFFFFFF AND DUP4 PUSH6 0xFFFFFFFFFFFF AND GT PUSH2 0x1A18 JUMPI PUSH2 0x1A13 DUP4 DUP3 PUSH2 0x2640 JUMP JUMPDEST PUSH2 0xDCC JUMP JUMPDEST PUSH2 0xDCC PUSH6 0xFFFFFFFFFFFF DUP5 AND PUSH3 0x69780 PUSH2 0x1E9F JUMP JUMPDEST PUSH2 0x1A37 DUP4 DUP4 PUSH2 0x1EAE JUMP JUMPDEST PUSH2 0x9B8 CALLER PUSH0 DUP6 DUP6 DUP6 PUSH2 0x1307 JUMP JUMPDEST PUSH0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0x1A82 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1AAE JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1ACC JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1AE4 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x1AF8 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1B0A JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x5E3 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x152A902D PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x5E3 JUMPI POP PUSH2 0x5E3 DUP3 PUSH2 0x1F0F JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND ISZERO PUSH2 0x1B6B JUMPI PUSH2 0x1B6B DUP2 DUP5 DUP7 PUSH2 0x1F33 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x1BA5 JUMPI PUSH2 0x1B86 PUSH0 DUP6 PUSH0 DUP1 PUSH2 0x15E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x1BD3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP8 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1C3B DUP4 PUSH2 0xB3A JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE PUSH1 0x6 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 DUP4 EQ PUSH2 0x1C90 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP6 DUP5 MSTORE DUP2 DUP5 KECCAK256 DUP2 SWAP1 SSTORE DUP4 MSTORE PUSH1 0x7 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST PUSH0 SWAP4 DUP5 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 DUP7 SWAP1 SSTORE SWAP4 DUP6 MSTORE MSTORE POP DUP2 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH0 SWAP1 PUSH2 0x1CBF SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x265E JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x8 DUP1 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 DUP5 SWAP1 DUP2 LT PUSH2 0x1CE6 JUMPI PUSH2 0x1CE6 PUSH2 0x244A JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 PUSH1 0x8 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1D05 JUMPI PUSH2 0x1D05 PUSH2 0x244A JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE DUP6 DUP3 MSTORE DUP2 KECCAK256 SSTORE PUSH1 0x8 DUP1 SLOAD DUP1 PUSH2 0x1D3C JUMPI PUSH2 0x1D3C PUSH2 0x2671 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0x1D61 DUP5 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0x1D6B SWAP2 SWAP1 PUSH2 0x265E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x7 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x1DAE DUP4 DUP4 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x1E2D JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x1DE5 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH0 PUSH2 0x5E3 JUMP JUMPDEST PUSH0 PUSH2 0x1E3F DUP4 DUP4 PUSH2 0xBA9 JUMP JUMPDEST ISZERO PUSH2 0x1E2D JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP7 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x5E3 JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xDCC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1ED7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH0 PUSH2 0x1EE3 DUP4 DUP4 PUSH0 PUSH2 0x1028 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x780E9D63 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x5E3 JUMPI POP PUSH2 0x5E3 DUP3 PUSH2 0x1F97 JUMP JUMPDEST PUSH2 0x1F3E DUP4 DUP4 DUP4 PUSH2 0x1FE6 JUMP JUMPDEST PUSH2 0x9B8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1F6C JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x1FC7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x5E3 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x5E3 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1034 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x201F JUMPI POP PUSH2 0x201F DUP5 DUP5 PUSH2 0xEDA JUMP JUMPDEST DUP1 PUSH2 0x1034 JUMPI POP POP PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x747 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x206C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDCC DUP2 PUSH2 0x2047 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x208D JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20A3 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x20AC DUP4 PUSH2 0x2077 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x20C7 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xDCC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x20D2 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2122 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x213A JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x2143 DUP4 PUSH2 0x2077 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2163 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x216C DUP5 PUSH2 0x2077 JUMP JUMPDEST SWAP3 POP PUSH2 0x217A PUSH1 0x20 DUP6 ADD PUSH2 0x2077 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x219C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21BC JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x21CC PUSH1 0x20 DUP5 ADD PUSH2 0x2077 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21E6 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x21FC JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x220C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2222 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x2233 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2253 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xDCC DUP3 PUSH2 0x2077 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x226C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDCC JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2292 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x229B DUP4 PUSH2 0x2077 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x20C7 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x22D6 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x22DF DUP6 PUSH2 0x2077 JUMP JUMPDEST SWAP4 POP PUSH2 0x22ED PUSH1 0x20 DUP7 ADD PUSH2 0x2077 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x230F JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x231F JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2339 JUMPI PUSH2 0x2339 PUSH2 0x22AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2368 JUMPI PUSH2 0x2368 PUSH2 0x22AF JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP10 LT ISZERO PUSH2 0x237F JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23B1 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x23BA DUP4 PUSH2 0x2077 JUMP JUMPDEST SWAP2 POP PUSH2 0x21CC PUSH1 0x20 DUP5 ADD PUSH2 0x2077 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x23DC JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x23FA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x5E3 JUMPI PUSH2 0x5E3 PUSH2 0x2400 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x2445 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x9B8 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2483 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1428 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x248F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x24BA JUMPI PUSH2 0x24BA PUSH2 0x22AF JUMP JUMPDEST PUSH2 0x24CE DUP4 PUSH2 0x24C8 DUP4 SLOAD PUSH2 0x23C8 JUMP JUMPDEST DUP4 PUSH2 0x245E JUMP JUMPDEST PUSH0 PUSH1 0x1F DUP5 GT PUSH1 0x1 DUP2 EQ PUSH2 0x24FF JUMPI PUSH0 DUP6 ISZERO PUSH2 0x24E8 JUMPI POP DUP4 DUP3 ADD CALLDATALOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP7 SWAP1 SHL OR DUP4 SSTORE PUSH2 0x1428 JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP8 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x252E JUMPI DUP7 DUP6 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x250E JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x254A JUMPI PUSH0 NOT PUSH1 0xF8 DUP9 PUSH1 0x3 SHL AND SHR NOT DUP5 DUP8 ADD CALLDATALOAD AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP6 PUSH1 0x1 SHL ADD DUP4 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x256E PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x20D2 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE DUP4 DUP2 MSTORE DUP4 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP7 ADD AND DUP3 ADD ADD SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 PUSH1 0x20 DUP5 ADD DUP6 MCOPY PUSH0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1034 PUSH2 0x25C5 DUP4 DUP7 PUSH2 0x25A0 JUMP JUMPDEST DUP5 PUSH2 0x25A0 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x5E3 JUMPI PUSH2 0x5E3 PUSH2 0x2400 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x261B SWAP1 DUP4 ADD DUP5 PUSH2 0x20D2 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2635 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xDCC DUP2 PUSH2 0x2047 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x5E3 JUMPI PUSH2 0x5E3 PUSH2 0x2400 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x5E3 JUMPI PUSH2 0x5E3 PUSH2 0x2400 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4D 0xFC COINBASE 0x4C EXTCODEHASH PUSH29 0x881C72A70636389DD9E0C274B6BA5A9F6FA5FEA06C294E82584A64736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"768:7315:29:-:0;;;2991:780;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3370:18;3390:13;3323:5;3330:7;1446:5:9;:13;3323:5:29;1446::9;:13;:::i;:::-;-1:-1:-1;1469:7:9;:17;1479:7;1469;:17;:::i;:::-;-1:-1:-1;;;;;;;;2540:33:4;;2536:115;;2596:44;;-1:-1:-1;;;2596:44:4;;2637:1;2596:44;;;5496:51:32;5469:18;;2596:44:4;;;;;;;;2536:115;2660:13;:28;;-1:-1:-1;;;;;2660:28:4;-1:-1:-1;;;2660:28:4;;;;;;;2698:51;-1:-1:-1;2729:19:4;2698:10;:51::i;:::-;-1:-1:-1;;;;;;;;3419:30:29;::::2;::::0;;:61:::2;;-1:-1:-1::0;;;;;;3453:27:29;::::2;::::0;3419:61:::2;:93;;;-1:-1:-1::0;;;;;;3484:28:29;::::2;::::0;3419:93:::2;3415:144;;;3535:13;;-1:-1:-1::0;;;3535:13:29::2;;;;;;;;;;;3415:144;3568:13;:24;3584:8:::0;3568:13;:24:::2;:::i;:::-;-1:-1:-1::0;3602:20:29::2;:43;3625:20:::0;3602;:43:::2;:::i;:::-;-1:-1:-1::0;3655:60:29::2;3674:16:::0;3692:22;3655:18:::2;:60::i;:::-;3725:39;1182:24;3749:14:::0;3725:10:::2;:39::i;:::-;;2991:780:::0;;;;;;;;;768:7315;;5611:370:4;5697:4;5717;5713:214;;5789:1;5763:14;6846:20;;-1:-1:-1;;;;;6846:20:4;;6767:106;5763:14;-1:-1:-1;;;;;5763:28:4;;5759:114;;5818:40;;-1:-1:-1;;;5818:40:4;;;;;;;;;;;5759:114;5886:20;:30;;-1:-1:-1;;;;;;5886:30:4;-1:-1:-1;;;;;5886:30:4;;;;;5713:214;5943:31;5960:4;5966:7;5943:16;:31::i;:::-;5936:38;;5611:370;;;;;:::o;3618:507:16:-;3345:5;-1:-1:-1;;;;;3765:26:16;;;-1:-1:-1;3761:173:16;;;3868:55;;-1:-1:-1;;;3868:55:16;;-1:-1:-1;;;;;5749:31:32;;3868:55:16;;;5731:50:32;5797:18;;;5790:34;;;5704:18;;3868:55:16;5558:272:32;3761:173:16;-1:-1:-1;;;;;3947:22:16;;3943:108;;3992:48;;-1:-1:-1;;;3992:48:16;;4037:1;3992:48;;;5496:51:32;5469:18;;3992:48:16;5350:203:32;3943:108:16;-1:-1:-1;4083:35:16;;;;;;;;;-1:-1:-1;;;;;4083:35:16;;;;;;-1:-1:-1;;;;;4083:35:16;;;;;;;;;;-1:-1:-1;;;4061:57:16;;;;:19;:57;3618:507::o;6145:316:0:-;6222:4;2920:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;2920:29:0;;;;;;;;;;;;6238:217;;6281:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6281:29:0;;;;;;;;;:36;;-1:-1:-1;;6281:36:0;6313:4;6281:36;;;6363:12;735:10:18;;656:96;6363:12:0;-1:-1:-1;;;;;6336:40:0;6354:7;-1:-1:-1;;;;;6336:40:0;6348:4;6336:40;;;;;;;;;;-1:-1:-1;6397:4:0;6390:11;;6238:217;-1:-1:-1;6439:5:0;6432:12;;14:127:32;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:32;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:32;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:32;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:32;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:32:o;874:177::-;953:13;;-1:-1:-1;;;;;995:31:32;;985:42;;975:70;;1041:1;1038;1031:12;975:70;874:177;;;:::o;1056:175::-;1134:13;;-1:-1:-1;;;;;1176:30:32;;1166:41;;1156:69;;1221:1;1218;1211:12;1236:171;1314:13;;1367:14;1356:26;;1346:37;;1336:65;;1397:1;1394;1387:12;1412:1424;1592:6;1600;1608;1616;1624;1632;1640;1648;1656;1709:3;1697:9;1688:7;1684:23;1680:33;1677:53;;;1726:1;1723;1716:12;1677:53;1753:16;;-1:-1:-1;;;;;1781:30:32;;1778:50;;;1824:1;1821;1814:12;1778:50;1847:61;1900:7;1891:6;1880:9;1876:22;1847:61;:::i;:::-;1954:2;1939:18;;1933:25;1837:71;;-1:-1:-1;1933:25:32;-1:-1:-1;;;;;;1970:32:32;;1967:52;;;2015:1;2012;2005:12;1967:52;2038:63;2093:7;2082:8;2071:9;2067:24;2038:63;:::i;:::-;2147:2;2132:18;;2126:25;2028:73;;-1:-1:-1;2126:25:32;-1:-1:-1;;;;;;2163:32:32;;2160:52;;;2208:1;2205;2198:12;2160:52;2231:63;2286:7;2275:8;2264:9;2260:24;2231:63;:::i;:::-;2340:2;2325:18;;2319:25;2221:73;;-1:-1:-1;2319:25:32;-1:-1:-1;;;;;;2356:32:32;;2353:52;;;2401:1;2398;2391:12;2353:52;2424:63;2479:7;2468:8;2457:9;2453:24;2424:63;:::i;:::-;2414:73;;;2506:50;2551:3;2540:9;2536:19;2506:50;:::i;:::-;2496:60;;2575:49;2619:3;2608:9;2604:19;2575:49;:::i;:::-;2565:59;;2643:50;2688:3;2677:9;2673:19;2643:50;:::i;:::-;2633:60;;2712:50;2757:3;2746:9;2742:19;2712:50;:::i;:::-;2702:60;;2781:49;2825:3;2814:9;2810:19;2781:49;:::i;:::-;2771:59;;1412:1424;;;;;;;;;;;:::o;2841:380::-;2920:1;2916:12;;;;2963;;;2984:61;;3038:4;3030:6;3026:17;3016:27;;2984:61;3091:2;3083:6;3080:14;3060:18;3057:38;3054:161;;3137:10;3132:3;3128:20;3125:1;3118:31;3172:4;3169:1;3162:15;3200:4;3197:1;3190:15;3054:161;;2841:380;;;:::o;3352:518::-;3454:2;3449:3;3446:11;3443:421;;;3490:5;3487:1;3480:16;3534:4;3531:1;3521:18;3604:2;3592:10;3588:19;3585:1;3581:27;3575:4;3571:38;3640:4;3628:10;3625:20;3622:47;;;-1:-1:-1;3663:4:32;3622:47;3718:2;3713:3;3709:12;3706:1;3702:20;3696:4;3692:31;3682:41;;3773:81;3791:2;3784:5;3781:13;3773:81;;;3850:1;3836:16;;3817:1;3806:13;3773:81;;;3777:3;;3443:421;3352:518;;;:::o;4046:1299::-;4166:10;;-1:-1:-1;;;;;4188:30:32;;4185:56;;;4221:18;;:::i;:::-;4250:97;4340:6;4300:38;4332:4;4326:11;4300:38;:::i;:::-;4294:4;4250:97;:::i;:::-;4396:4;4427:2;4416:14;;4444:1;4439:649;;;;5132:1;5149:6;5146:89;;;-1:-1:-1;5201:19:32;;;5195:26;5146:89;-1:-1:-1;;4003:1:32;3999:11;;;3995:24;3991:29;3981:40;4027:1;4023:11;;;3978:57;5248:81;;4409:930;;4439:649;3299:1;3292:14;;;3336:4;3323:18;;-1:-1:-1;;4475:20:32;;;4593:222;4607:7;4604:1;4601:14;4593:222;;;4689:19;;;4683:26;4668:42;;4796:4;4781:20;;;;4749:1;4737:14;;;;4623:12;4593:222;;;4597:3;4843:6;4834:7;4831:19;4828:201;;;4904:19;;;4898:26;-1:-1:-1;;4987:1:32;4983:14;;;4999:3;4979:24;4975:37;4971:42;4956:58;4941:74;;4828:201;-1:-1:-1;;;;5075:1:32;5059:14;;;5055:22;5042:36;;-1:-1:-1;4046:1299:32:o;5558:272::-;768:7315:29;;;;;;"},"deployedBytecode":{"functionDebugData":{"@DEFAULT_ADMIN_ROLE_29":{"entryPoint":null,"id":29,"parameterSlots":0,"returnSlots":0},"@MINTER_ROLE_9858":{"entryPoint":null,"id":9858,"parameterSlots":0,"returnSlots":0},"@_acceptDefaultAdminTransfer_1139":{"entryPoint":5311,"id":1139,"parameterSlots":0,"returnSlots":0},"@_addTokenToAllTokensEnumeration_2954":{"entryPoint":null,"id":2954,"parameterSlots":1,"returnSlots":0},"@_addTokenToOwnerEnumeration_2934":{"entryPoint":7509,"id":2934,"parameterSlots":2,"returnSlots":0},"@_approve_2421":{"entryPoint":4111,"id":2421,"parameterSlots":3,"returnSlots":0},"@_approve_2487":{"entryPoint":5600,"id":2487,"parameterSlots":4,"returnSlots":0},"@_baseURI_10104":{"entryPoint":null,"id":10104,"parameterSlots":0,"returnSlots":1},"@_beginDefaultAdminTransfer_1047":{"entryPoint":4325,"id":1047,"parameterSlots":1,"returnSlots":0},"@_cancelDefaultAdminTransfer_1071":{"entryPoint":5497,"id":1071,"parameterSlots":0,"returnSlots":0},"@_changeDefaultAdminDelay_1182":{"entryPoint":4439,"id":1182,"parameterSlots":1,"returnSlots":0},"@_checkAuthorized_2061":{"entryPoint":7987,"id":2061,"parameterSlots":3,"returnSlots":0},"@_checkRole_114":{"entryPoint":5543,"id":114,"parameterSlots":2,"returnSlots":0},"@_checkRole_93":{"entryPoint":3883,"id":93,"parameterSlots":1,"returnSlots":0},"@_delayChangeWait_1234":{"entryPoint":6630,"id":1234,"parameterSlots":1,"returnSlots":1},"@_feeDenominator_3375":{"entryPoint":null,"id":3375,"parameterSlots":0,"returnSlots":1},"@_getApproved_1988":{"entryPoint":null,"id":1988,"parameterSlots":1,"returnSlots":1},"@_grantRole_256":{"entryPoint":7587,"id":256,"parameterSlots":2,"returnSlots":1},"@_grantRole_865":{"entryPoint":6254,"id":865,"parameterSlots":2,"returnSlots":1},"@_hasSchedulePassed_1330":{"entryPoint":null,"id":1330,"parameterSlots":1,"returnSlots":1},"@_isAuthorized_2024":{"entryPoint":8166,"id":2024,"parameterSlots":3,"returnSlots":1},"@_isScheduleSet_1316":{"entryPoint":null,"id":1316,"parameterSlots":1,"returnSlots":1},"@_mint_2217":{"entryPoint":7854,"id":2217,"parameterSlots":2,"returnSlots":0},"@_msgSender_4307":{"entryPoint":null,"id":4307,"parameterSlots":0,"returnSlots":1},"@_ownerOf_1975":{"entryPoint":null,"id":1975,"parameterSlots":1,"returnSlots":1},"@_pause_4468":{"entryPoint":4550,"id":4468,"parameterSlots":0,"returnSlots":0},"@_removeTokenFromAllTokensEnumeration_3064":{"entryPoint":7342,"id":3064,"parameterSlots":1,"returnSlots":0},"@_removeTokenFromOwnerEnumeration_3016":{"entryPoint":7217,"id":3016,"parameterSlots":2,"returnSlots":0},"@_requireNotPaused_4439":{"entryPoint":4611,"id":4439,"parameterSlots":0,"returnSlots":0},"@_requireOwned_2568":{"entryPoint":4055,"id":2568,"parameterSlots":1,"returnSlots":1},"@_requirePaused_4452":{"entryPoint":6416,"id":4452,"parameterSlots":0,"returnSlots":0},"@_revokeRole_294":{"entryPoint":7732,"id":294,"parameterSlots":2,"returnSlots":1},"@_revokeRole_896":{"entryPoint":6356,"id":896,"parameterSlots":2,"returnSlots":1},"@_rollbackDefaultAdminDelay_1203":{"entryPoint":4124,"id":1203,"parameterSlots":0,"returnSlots":0},"@_safeMint_2232":{"entryPoint":4647,"id":2232,"parameterSlots":2,"returnSlots":0},"@_safeMint_2262":{"entryPoint":6701,"id":2262,"parameterSlots":3,"returnSlots":0},"@_setApprovalForAll_2539":{"entryPoint":4672,"id":2539,"parameterSlots":3,"returnSlots":0},"@_setDefaultRoyalty_3421":{"entryPoint":3893,"id":3421,"parameterSlots":2,"returnSlots":0},"@_setPendingDefaultAdmin_1264":{"entryPoint":6505,"id":1264,"parameterSlots":2,"returnSlots":0},"@_setPendingDelay_1303":{"entryPoint":5860,"id":1303,"parameterSlots":2,"returnSlots":0},"@_unpause_4484":{"entryPoint":4243,"id":4484,"parameterSlots":0,"returnSlots":0},"@_update_10127":{"entryPoint":4136,"id":10127,"parameterSlots":3,"returnSlots":1},"@_update_2167":{"entryPoint":6975,"id":2167,"parameterSlots":3,"returnSlots":1},"@_update_2903":{"entryPoint":6051,"id":2903,"parameterSlots":3,"returnSlots":1},"@acceptDefaultAdminTransfer_1095":{"entryPoint":3633,"id":1095,"parameterSlots":0,"returnSlots":0},"@approve_1818":{"entryPoint":1830,"id":1818,"parameterSlots":2,"returnSlots":0},"@balanceOf_1726":{"entryPoint":2874,"id":1726,"parameterSlots":1,"returnSlots":1},"@baseURI_10094":{"entryPoint":2859,"id":10094,"parameterSlots":0,"returnSlots":1},"@beginDefaultAdminTransfer_1019":{"entryPoint":2811,"id":1019,"parameterSlots":1,"returnSlots":0},"@cancelDefaultAdminTransfer_1058":{"entryPoint":3769,"id":1058,"parameterSlots":0,"returnSlots":0},"@changeDefaultAdminDelay_1153":{"entryPoint":2840,"id":1153,"parameterSlots":1,"returnSlots":0},"@checkOnERC721Received_3226":{"entryPoint":4871,"id":3226,"parameterSlots":5,"returnSlots":0},"@contractURI_10085":{"entryPoint":3787,"id":10085,"parameterSlots":0,"returnSlots":1},"@defaultAdminDelayIncreaseWait_1005":{"entryPoint":null,"id":1005,"parameterSlots":0,"returnSlots":1},"@defaultAdminDelay_966":{"entryPoint":3539,"id":966,"parameterSlots":0,"returnSlots":1},"@defaultAdmin_930":{"entryPoint":null,"id":930,"parameterSlots":0,"returnSlots":1},"@getApproved_1835":{"entryPoint":1791,"id":1835,"parameterSlots":1,"returnSlots":1},"@getRoleAdmin_128":{"entryPoint":null,"id":128,"parameterSlots":1,"returnSlots":1},"@grantRole_147":{"entryPoint":4156,"id":147,"parameterSlots":2,"returnSlots":0},"@grantRole_738":{"entryPoint":2139,"id":738,"parameterSlots":2,"returnSlots":0},"@hasRole_80":{"entryPoint":2985,"id":80,"parameterSlots":2,"returnSlots":1},"@isApprovedForAll_1868":{"entryPoint":3802,"id":1868,"parameterSlots":2,"returnSlots":1},"@log10_7736":{"entryPoint":6724,"id":7736,"parameterSlots":1,"returnSlots":1},"@min_6595":{"entryPoint":7839,"id":6595,"parameterSlots":2,"returnSlots":1},"@name_1748":{"entryPoint":1648,"id":1748,"parameterSlots":0,"returnSlots":1},"@ownerOf_1739":{"entryPoint":2830,"id":1739,"parameterSlots":1,"returnSlots":1},"@owner_711":{"entryPoint":2961,"id":711,"parameterSlots":0,"returnSlots":1},"@pause_10065":{"entryPoint":2943,"id":10065,"parameterSlots":0,"returnSlots":0},"@paused_4427":{"entryPoint":null,"id":4427,"parameterSlots":0,"returnSlots":1},"@pendingDefaultAdminDelay_996":{"entryPoint":3321,"id":996,"parameterSlots":0,"returnSlots":2},"@pendingDefaultAdmin_943":{"entryPoint":3696,"id":943,"parameterSlots":0,"returnSlots":2},"@renounceRole_189":{"entryPoint":4192,"id":189,"parameterSlots":2,"returnSlots":0},"@renounceRole_826":{"entryPoint":2278,"id":826,"parameterSlots":2,"returnSlots":0},"@revokeRole_166":{"entryPoint":5461,"id":166,"parameterSlots":2,"returnSlots":0},"@revokeRole_765":{"entryPoint":3729,"id":765,"parameterSlots":2,"returnSlots":0},"@rollbackDefaultAdminDelay_1193":{"entryPoint":1845,"id":1193,"parameterSlots":0,"returnSlots":0},"@royaltyInfo_3366":{"entryPoint":2008,"id":3366,"parameterSlots":2,"returnSlots":2},"@safeMint_9976":{"entryPoint":3261,"id":9976,"parameterSlots":2,"returnSlots":0},"@safeTransferFrom_1932":{"entryPoint":2462,"id":1932,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_1962":{"entryPoint":3414,"id":1962,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_1851":{"entryPoint":3403,"id":1851,"parameterSlots":2,"returnSlots":0},"@setBaseURI_9999":{"entryPoint":2578,"id":9999,"parameterSlots":2,"returnSlots":0},"@setContractURI_10022":{"entryPoint":3027,"id":10022,"parameterSlots":2,"returnSlots":0},"@setRoyaltyInfo_10054":{"entryPoint":1513,"id":10054,"parameterSlots":2,"returnSlots":0},"@supportsInterface_10165":{"entryPoint":1497,"id":10165,"parameterSlots":1,"returnSlots":1},"@supportsInterface_1698":{"entryPoint":8087,"id":1698,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2768":{"entryPoint":7951,"id":2768,"parameterSlots":1,"returnSlots":1},"@supportsInterface_3304":{"entryPoint":6939,"id":3304,"parameterSlots":1,"returnSlots":1},"@supportsInterface_62":{"entryPoint":5507,"id":62,"parameterSlots":1,"returnSlots":1},"@supportsInterface_6255":{"entryPoint":null,"id":6255,"parameterSlots":1,"returnSlots":1},"@supportsInterface_701":{"entryPoint":3847,"id":701,"parameterSlots":1,"returnSlots":1},"@symbol_1757":{"entryPoint":3246,"id":1757,"parameterSlots":0,"returnSlots":1},"@ternary_6557":{"entryPoint":null,"id":6557,"parameterSlots":3,"returnSlots":1},"@toString_4815":{"entryPoint":5167,"id":4815,"parameterSlots":1,"returnSlots":1},"@toUint48_8680":{"entryPoint":6451,"id":8680,"parameterSlots":1,"returnSlots":1},"@toUint_9689":{"entryPoint":null,"id":9689,"parameterSlots":1,"returnSlots":1},"@tokenByIndex_2834":{"entryPoint":2493,"id":2834,"parameterSlots":1,"returnSlots":1},"@tokenOfOwnerByIndex_2797":{"entryPoint":2179,"id":2797,"parameterSlots":2,"returnSlots":1},"@tokenURI_1793":{"entryPoint":3438,"id":1793,"parameterSlots":1,"returnSlots":1},"@totalSupply_2807":{"entryPoint":null,"id":2807,"parameterSlots":0,"returnSlots":1},"@transferFrom_1914":{"entryPoint":1866,"id":1914,"parameterSlots":3,"returnSlots":0},"@unpause_10076":{"entryPoint":2444,"id":10076,"parameterSlots":0,"returnSlots":0},"abi_decode_address":{"entryPoint":8311,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":8771,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":9120,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":8529,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":8899,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":8833,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":8489,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint96":{"entryPoint":8338,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":8619,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":8284,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":9765,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_calldata_ptr":{"entryPoint":8661,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":8466,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_uint256":{"entryPoint":8587,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint48":{"entryPoint":8796,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":9632,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":8402,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":9655,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":9705,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint48__to_t_address_t_uint48__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8448,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9564,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint48__to_t_uint48__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint48_t_uint48__to_t_uint48_t_uint48__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint96__to_t_uint96__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint48":{"entryPoint":9675,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":9259,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":9236,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":9822,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint48":{"entryPoint":9792,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":9310,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage":{"entryPoint":9378,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":9160,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":9216,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":9841,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":9290,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":8879,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":8263,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:15214:32","nodeType":"YulBlock","src":"0:15214:32","statements":[{"nativeSrc":"6:3:32","nodeType":"YulBlock","src":"6:3:32","statements":[]},{"body":{"nativeSrc":"58:87:32","nodeType":"YulBlock","src":"58:87:32","statements":[{"body":{"nativeSrc":"123:16:32","nodeType":"YulBlock","src":"123:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:32","nodeType":"YulLiteral","src":"132:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:32","nodeType":"YulLiteral","src":"135:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:32","nodeType":"YulIdentifier","src":"125:6:32"},"nativeSrc":"125:12:32","nodeType":"YulFunctionCall","src":"125:12:32"},"nativeSrc":"125:12:32","nodeType":"YulExpressionStatement","src":"125:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"81:5:32","nodeType":"YulIdentifier","src":"81:5:32"},{"arguments":[{"name":"value","nativeSrc":"92:5:32","nodeType":"YulIdentifier","src":"92:5:32"},{"arguments":[{"kind":"number","nativeSrc":"103:3:32","nodeType":"YulLiteral","src":"103:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"108:10:32","nodeType":"YulLiteral","src":"108:10:32","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"99:3:32","nodeType":"YulIdentifier","src":"99:3:32"},"nativeSrc":"99:20:32","nodeType":"YulFunctionCall","src":"99:20:32"}],"functionName":{"name":"and","nativeSrc":"88:3:32","nodeType":"YulIdentifier","src":"88:3:32"},"nativeSrc":"88:32:32","nodeType":"YulFunctionCall","src":"88:32:32"}],"functionName":{"name":"eq","nativeSrc":"78:2:32","nodeType":"YulIdentifier","src":"78:2:32"},"nativeSrc":"78:43:32","nodeType":"YulFunctionCall","src":"78:43:32"}],"functionName":{"name":"iszero","nativeSrc":"71:6:32","nodeType":"YulIdentifier","src":"71:6:32"},"nativeSrc":"71:51:32","nodeType":"YulFunctionCall","src":"71:51:32"},"nativeSrc":"68:71:32","nodeType":"YulIf","src":"68:71:32"}]},"name":"validator_revert_bytes4","nativeSrc":"14:131:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"47:5:32","nodeType":"YulTypedName","src":"47:5:32","type":""}],"src":"14:131:32"},{"body":{"nativeSrc":"219:176:32","nodeType":"YulBlock","src":"219:176:32","statements":[{"body":{"nativeSrc":"265:16:32","nodeType":"YulBlock","src":"265:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"274:1:32","nodeType":"YulLiteral","src":"274:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"277:1:32","nodeType":"YulLiteral","src":"277:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"267:6:32","nodeType":"YulIdentifier","src":"267:6:32"},"nativeSrc":"267:12:32","nodeType":"YulFunctionCall","src":"267:12:32"},"nativeSrc":"267:12:32","nodeType":"YulExpressionStatement","src":"267:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"240:7:32","nodeType":"YulIdentifier","src":"240:7:32"},{"name":"headStart","nativeSrc":"249:9:32","nodeType":"YulIdentifier","src":"249:9:32"}],"functionName":{"name":"sub","nativeSrc":"236:3:32","nodeType":"YulIdentifier","src":"236:3:32"},"nativeSrc":"236:23:32","nodeType":"YulFunctionCall","src":"236:23:32"},{"kind":"number","nativeSrc":"261:2:32","nodeType":"YulLiteral","src":"261:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"232:3:32","nodeType":"YulIdentifier","src":"232:3:32"},"nativeSrc":"232:32:32","nodeType":"YulFunctionCall","src":"232:32:32"},"nativeSrc":"229:52:32","nodeType":"YulIf","src":"229:52:32"},{"nativeSrc":"290:36:32","nodeType":"YulVariableDeclaration","src":"290:36:32","value":{"arguments":[{"name":"headStart","nativeSrc":"316:9:32","nodeType":"YulIdentifier","src":"316:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"303:12:32","nodeType":"YulIdentifier","src":"303:12:32"},"nativeSrc":"303:23:32","nodeType":"YulFunctionCall","src":"303:23:32"},"variables":[{"name":"value","nativeSrc":"294:5:32","nodeType":"YulTypedName","src":"294:5:32","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"359:5:32","nodeType":"YulIdentifier","src":"359:5:32"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"335:23:32","nodeType":"YulIdentifier","src":"335:23:32"},"nativeSrc":"335:30:32","nodeType":"YulFunctionCall","src":"335:30:32"},"nativeSrc":"335:30:32","nodeType":"YulExpressionStatement","src":"335:30:32"},{"nativeSrc":"374:15:32","nodeType":"YulAssignment","src":"374:15:32","value":{"name":"value","nativeSrc":"384:5:32","nodeType":"YulIdentifier","src":"384:5:32"},"variableNames":[{"name":"value0","nativeSrc":"374:6:32","nodeType":"YulIdentifier","src":"374:6:32"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"150:245:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"185:9:32","nodeType":"YulTypedName","src":"185:9:32","type":""},{"name":"dataEnd","nativeSrc":"196:7:32","nodeType":"YulTypedName","src":"196:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"208:6:32","nodeType":"YulTypedName","src":"208:6:32","type":""}],"src":"150:245:32"},{"body":{"nativeSrc":"495:92:32","nodeType":"YulBlock","src":"495:92:32","statements":[{"nativeSrc":"505:26:32","nodeType":"YulAssignment","src":"505:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"517:9:32","nodeType":"YulIdentifier","src":"517:9:32"},{"kind":"number","nativeSrc":"528:2:32","nodeType":"YulLiteral","src":"528:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"513:3:32","nodeType":"YulIdentifier","src":"513:3:32"},"nativeSrc":"513:18:32","nodeType":"YulFunctionCall","src":"513:18:32"},"variableNames":[{"name":"tail","nativeSrc":"505:4:32","nodeType":"YulIdentifier","src":"505:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"547:9:32","nodeType":"YulIdentifier","src":"547:9:32"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"572:6:32","nodeType":"YulIdentifier","src":"572:6:32"}],"functionName":{"name":"iszero","nativeSrc":"565:6:32","nodeType":"YulIdentifier","src":"565:6:32"},"nativeSrc":"565:14:32","nodeType":"YulFunctionCall","src":"565:14:32"}],"functionName":{"name":"iszero","nativeSrc":"558:6:32","nodeType":"YulIdentifier","src":"558:6:32"},"nativeSrc":"558:22:32","nodeType":"YulFunctionCall","src":"558:22:32"}],"functionName":{"name":"mstore","nativeSrc":"540:6:32","nodeType":"YulIdentifier","src":"540:6:32"},"nativeSrc":"540:41:32","nodeType":"YulFunctionCall","src":"540:41:32"},"nativeSrc":"540:41:32","nodeType":"YulExpressionStatement","src":"540:41:32"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"400:187:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"464:9:32","nodeType":"YulTypedName","src":"464:9:32","type":""},{"name":"value0","nativeSrc":"475:6:32","nodeType":"YulTypedName","src":"475:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"486:4:32","nodeType":"YulTypedName","src":"486:4:32","type":""}],"src":"400:187:32"},{"body":{"nativeSrc":"691:97:32","nodeType":"YulBlock","src":"691:97:32","statements":[{"nativeSrc":"701:26:32","nodeType":"YulAssignment","src":"701:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"713:9:32","nodeType":"YulIdentifier","src":"713:9:32"},{"kind":"number","nativeSrc":"724:2:32","nodeType":"YulLiteral","src":"724:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"709:3:32","nodeType":"YulIdentifier","src":"709:3:32"},"nativeSrc":"709:18:32","nodeType":"YulFunctionCall","src":"709:18:32"},"variableNames":[{"name":"tail","nativeSrc":"701:4:32","nodeType":"YulIdentifier","src":"701:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"743:9:32","nodeType":"YulIdentifier","src":"743:9:32"},{"arguments":[{"name":"value0","nativeSrc":"758:6:32","nodeType":"YulIdentifier","src":"758:6:32"},{"kind":"number","nativeSrc":"766:14:32","nodeType":"YulLiteral","src":"766:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"754:3:32","nodeType":"YulIdentifier","src":"754:3:32"},"nativeSrc":"754:27:32","nodeType":"YulFunctionCall","src":"754:27:32"}],"functionName":{"name":"mstore","nativeSrc":"736:6:32","nodeType":"YulIdentifier","src":"736:6:32"},"nativeSrc":"736:46:32","nodeType":"YulFunctionCall","src":"736:46:32"},"nativeSrc":"736:46:32","nodeType":"YulExpressionStatement","src":"736:46:32"}]},"name":"abi_encode_tuple_t_uint48__to_t_uint48__fromStack_reversed","nativeSrc":"592:196:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"660:9:32","nodeType":"YulTypedName","src":"660:9:32","type":""},{"name":"value0","nativeSrc":"671:6:32","nodeType":"YulTypedName","src":"671:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"682:4:32","nodeType":"YulTypedName","src":"682:4:32","type":""}],"src":"592:196:32"},{"body":{"nativeSrc":"842:124:32","nodeType":"YulBlock","src":"842:124:32","statements":[{"nativeSrc":"852:29:32","nodeType":"YulAssignment","src":"852:29:32","value":{"arguments":[{"name":"offset","nativeSrc":"874:6:32","nodeType":"YulIdentifier","src":"874:6:32"}],"functionName":{"name":"calldataload","nativeSrc":"861:12:32","nodeType":"YulIdentifier","src":"861:12:32"},"nativeSrc":"861:20:32","nodeType":"YulFunctionCall","src":"861:20:32"},"variableNames":[{"name":"value","nativeSrc":"852:5:32","nodeType":"YulIdentifier","src":"852:5:32"}]},{"body":{"nativeSrc":"944:16:32","nodeType":"YulBlock","src":"944:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"953:1:32","nodeType":"YulLiteral","src":"953:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"956:1:32","nodeType":"YulLiteral","src":"956:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"946:6:32","nodeType":"YulIdentifier","src":"946:6:32"},"nativeSrc":"946:12:32","nodeType":"YulFunctionCall","src":"946:12:32"},"nativeSrc":"946:12:32","nodeType":"YulExpressionStatement","src":"946:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"903:5:32","nodeType":"YulIdentifier","src":"903:5:32"},{"arguments":[{"name":"value","nativeSrc":"914:5:32","nodeType":"YulIdentifier","src":"914:5:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"929:3:32","nodeType":"YulLiteral","src":"929:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"934:1:32","nodeType":"YulLiteral","src":"934:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"925:3:32","nodeType":"YulIdentifier","src":"925:3:32"},"nativeSrc":"925:11:32","nodeType":"YulFunctionCall","src":"925:11:32"},{"kind":"number","nativeSrc":"938:1:32","nodeType":"YulLiteral","src":"938:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"921:3:32","nodeType":"YulIdentifier","src":"921:3:32"},"nativeSrc":"921:19:32","nodeType":"YulFunctionCall","src":"921:19:32"}],"functionName":{"name":"and","nativeSrc":"910:3:32","nodeType":"YulIdentifier","src":"910:3:32"},"nativeSrc":"910:31:32","nodeType":"YulFunctionCall","src":"910:31:32"}],"functionName":{"name":"eq","nativeSrc":"900:2:32","nodeType":"YulIdentifier","src":"900:2:32"},"nativeSrc":"900:42:32","nodeType":"YulFunctionCall","src":"900:42:32"}],"functionName":{"name":"iszero","nativeSrc":"893:6:32","nodeType":"YulIdentifier","src":"893:6:32"},"nativeSrc":"893:50:32","nodeType":"YulFunctionCall","src":"893:50:32"},"nativeSrc":"890:70:32","nodeType":"YulIf","src":"890:70:32"}]},"name":"abi_decode_address","nativeSrc":"793:173:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"821:6:32","nodeType":"YulTypedName","src":"821:6:32","type":""}],"returnVariables":[{"name":"value","nativeSrc":"832:5:32","nodeType":"YulTypedName","src":"832:5:32","type":""}],"src":"793:173:32"},{"body":{"nativeSrc":"1057:280:32","nodeType":"YulBlock","src":"1057:280:32","statements":[{"body":{"nativeSrc":"1103:16:32","nodeType":"YulBlock","src":"1103:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1112:1:32","nodeType":"YulLiteral","src":"1112:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1115:1:32","nodeType":"YulLiteral","src":"1115:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1105:6:32","nodeType":"YulIdentifier","src":"1105:6:32"},"nativeSrc":"1105:12:32","nodeType":"YulFunctionCall","src":"1105:12:32"},"nativeSrc":"1105:12:32","nodeType":"YulExpressionStatement","src":"1105:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1078:7:32","nodeType":"YulIdentifier","src":"1078:7:32"},{"name":"headStart","nativeSrc":"1087:9:32","nodeType":"YulIdentifier","src":"1087:9:32"}],"functionName":{"name":"sub","nativeSrc":"1074:3:32","nodeType":"YulIdentifier","src":"1074:3:32"},"nativeSrc":"1074:23:32","nodeType":"YulFunctionCall","src":"1074:23:32"},{"kind":"number","nativeSrc":"1099:2:32","nodeType":"YulLiteral","src":"1099:2:32","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1070:3:32","nodeType":"YulIdentifier","src":"1070:3:32"},"nativeSrc":"1070:32:32","nodeType":"YulFunctionCall","src":"1070:32:32"},"nativeSrc":"1067:52:32","nodeType":"YulIf","src":"1067:52:32"},{"nativeSrc":"1128:39:32","nodeType":"YulAssignment","src":"1128:39:32","value":{"arguments":[{"name":"headStart","nativeSrc":"1157:9:32","nodeType":"YulIdentifier","src":"1157:9:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1138:18:32","nodeType":"YulIdentifier","src":"1138:18:32"},"nativeSrc":"1138:29:32","nodeType":"YulFunctionCall","src":"1138:29:32"},"variableNames":[{"name":"value0","nativeSrc":"1128:6:32","nodeType":"YulIdentifier","src":"1128:6:32"}]},{"nativeSrc":"1176:45:32","nodeType":"YulVariableDeclaration","src":"1176:45:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1206:9:32","nodeType":"YulIdentifier","src":"1206:9:32"},{"kind":"number","nativeSrc":"1217:2:32","nodeType":"YulLiteral","src":"1217:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1202:3:32","nodeType":"YulIdentifier","src":"1202:3:32"},"nativeSrc":"1202:18:32","nodeType":"YulFunctionCall","src":"1202:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"1189:12:32","nodeType":"YulIdentifier","src":"1189:12:32"},"nativeSrc":"1189:32:32","nodeType":"YulFunctionCall","src":"1189:32:32"},"variables":[{"name":"value","nativeSrc":"1180:5:32","nodeType":"YulTypedName","src":"1180:5:32","type":""}]},{"body":{"nativeSrc":"1291:16:32","nodeType":"YulBlock","src":"1291:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1300:1:32","nodeType":"YulLiteral","src":"1300:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1303:1:32","nodeType":"YulLiteral","src":"1303:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1293:6:32","nodeType":"YulIdentifier","src":"1293:6:32"},"nativeSrc":"1293:12:32","nodeType":"YulFunctionCall","src":"1293:12:32"},"nativeSrc":"1293:12:32","nodeType":"YulExpressionStatement","src":"1293:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1243:5:32","nodeType":"YulIdentifier","src":"1243:5:32"},{"arguments":[{"name":"value","nativeSrc":"1254:5:32","nodeType":"YulIdentifier","src":"1254:5:32"},{"kind":"number","nativeSrc":"1261:26:32","nodeType":"YulLiteral","src":"1261:26:32","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1250:3:32","nodeType":"YulIdentifier","src":"1250:3:32"},"nativeSrc":"1250:38:32","nodeType":"YulFunctionCall","src":"1250:38:32"}],"functionName":{"name":"eq","nativeSrc":"1240:2:32","nodeType":"YulIdentifier","src":"1240:2:32"},"nativeSrc":"1240:49:32","nodeType":"YulFunctionCall","src":"1240:49:32"}],"functionName":{"name":"iszero","nativeSrc":"1233:6:32","nodeType":"YulIdentifier","src":"1233:6:32"},"nativeSrc":"1233:57:32","nodeType":"YulFunctionCall","src":"1233:57:32"},"nativeSrc":"1230:77:32","nodeType":"YulIf","src":"1230:77:32"},{"nativeSrc":"1316:15:32","nodeType":"YulAssignment","src":"1316:15:32","value":{"name":"value","nativeSrc":"1326:5:32","nodeType":"YulIdentifier","src":"1326:5:32"},"variableNames":[{"name":"value1","nativeSrc":"1316:6:32","nodeType":"YulIdentifier","src":"1316:6:32"}]}]},"name":"abi_decode_tuple_t_addresst_uint96","nativeSrc":"971:366:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1015:9:32","nodeType":"YulTypedName","src":"1015:9:32","type":""},{"name":"dataEnd","nativeSrc":"1026:7:32","nodeType":"YulTypedName","src":"1026:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1038:6:32","nodeType":"YulTypedName","src":"1038:6:32","type":""},{"name":"value1","nativeSrc":"1046:6:32","nodeType":"YulTypedName","src":"1046:6:32","type":""}],"src":"971:366:32"},{"body":{"nativeSrc":"1403:239:32","nodeType":"YulBlock","src":"1403:239:32","statements":[{"nativeSrc":"1413:26:32","nodeType":"YulVariableDeclaration","src":"1413:26:32","value":{"arguments":[{"name":"value","nativeSrc":"1433:5:32","nodeType":"YulIdentifier","src":"1433:5:32"}],"functionName":{"name":"mload","nativeSrc":"1427:5:32","nodeType":"YulIdentifier","src":"1427:5:32"},"nativeSrc":"1427:12:32","nodeType":"YulFunctionCall","src":"1427:12:32"},"variables":[{"name":"length","nativeSrc":"1417:6:32","nodeType":"YulTypedName","src":"1417:6:32","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1455:3:32","nodeType":"YulIdentifier","src":"1455:3:32"},{"name":"length","nativeSrc":"1460:6:32","nodeType":"YulIdentifier","src":"1460:6:32"}],"functionName":{"name":"mstore","nativeSrc":"1448:6:32","nodeType":"YulIdentifier","src":"1448:6:32"},"nativeSrc":"1448:19:32","nodeType":"YulFunctionCall","src":"1448:19:32"},"nativeSrc":"1448:19:32","nodeType":"YulExpressionStatement","src":"1448:19:32"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"1486:3:32","nodeType":"YulIdentifier","src":"1486:3:32"},{"kind":"number","nativeSrc":"1491:4:32","nodeType":"YulLiteral","src":"1491:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1482:3:32","nodeType":"YulIdentifier","src":"1482:3:32"},"nativeSrc":"1482:14:32","nodeType":"YulFunctionCall","src":"1482:14:32"},{"arguments":[{"name":"value","nativeSrc":"1502:5:32","nodeType":"YulIdentifier","src":"1502:5:32"},{"kind":"number","nativeSrc":"1509:4:32","nodeType":"YulLiteral","src":"1509:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1498:3:32","nodeType":"YulIdentifier","src":"1498:3:32"},"nativeSrc":"1498:16:32","nodeType":"YulFunctionCall","src":"1498:16:32"},{"name":"length","nativeSrc":"1516:6:32","nodeType":"YulIdentifier","src":"1516:6:32"}],"functionName":{"name":"mcopy","nativeSrc":"1476:5:32","nodeType":"YulIdentifier","src":"1476:5:32"},"nativeSrc":"1476:47:32","nodeType":"YulFunctionCall","src":"1476:47:32"},"nativeSrc":"1476:47:32","nodeType":"YulExpressionStatement","src":"1476:47:32"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"1547:3:32","nodeType":"YulIdentifier","src":"1547:3:32"},{"name":"length","nativeSrc":"1552:6:32","nodeType":"YulIdentifier","src":"1552:6:32"}],"functionName":{"name":"add","nativeSrc":"1543:3:32","nodeType":"YulIdentifier","src":"1543:3:32"},"nativeSrc":"1543:16:32","nodeType":"YulFunctionCall","src":"1543:16:32"},{"kind":"number","nativeSrc":"1561:4:32","nodeType":"YulLiteral","src":"1561:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1539:3:32","nodeType":"YulIdentifier","src":"1539:3:32"},"nativeSrc":"1539:27:32","nodeType":"YulFunctionCall","src":"1539:27:32"},{"kind":"number","nativeSrc":"1568:1:32","nodeType":"YulLiteral","src":"1568:1:32","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1532:6:32","nodeType":"YulIdentifier","src":"1532:6:32"},"nativeSrc":"1532:38:32","nodeType":"YulFunctionCall","src":"1532:38:32"},"nativeSrc":"1532:38:32","nodeType":"YulExpressionStatement","src":"1532:38:32"},{"nativeSrc":"1579:57:32","nodeType":"YulAssignment","src":"1579:57:32","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"1594:3:32","nodeType":"YulIdentifier","src":"1594:3:32"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1607:6:32","nodeType":"YulIdentifier","src":"1607:6:32"},{"kind":"number","nativeSrc":"1615:2:32","nodeType":"YulLiteral","src":"1615:2:32","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1603:3:32","nodeType":"YulIdentifier","src":"1603:3:32"},"nativeSrc":"1603:15:32","nodeType":"YulFunctionCall","src":"1603:15:32"},{"arguments":[{"kind":"number","nativeSrc":"1624:2:32","nodeType":"YulLiteral","src":"1624:2:32","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1620:3:32","nodeType":"YulIdentifier","src":"1620:3:32"},"nativeSrc":"1620:7:32","nodeType":"YulFunctionCall","src":"1620:7:32"}],"functionName":{"name":"and","nativeSrc":"1599:3:32","nodeType":"YulIdentifier","src":"1599:3:32"},"nativeSrc":"1599:29:32","nodeType":"YulFunctionCall","src":"1599:29:32"}],"functionName":{"name":"add","nativeSrc":"1590:3:32","nodeType":"YulIdentifier","src":"1590:3:32"},"nativeSrc":"1590:39:32","nodeType":"YulFunctionCall","src":"1590:39:32"},{"kind":"number","nativeSrc":"1631:4:32","nodeType":"YulLiteral","src":"1631:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1586:3:32","nodeType":"YulIdentifier","src":"1586:3:32"},"nativeSrc":"1586:50:32","nodeType":"YulFunctionCall","src":"1586:50:32"},"variableNames":[{"name":"end","nativeSrc":"1579:3:32","nodeType":"YulIdentifier","src":"1579:3:32"}]}]},"name":"abi_encode_string_memory_ptr","nativeSrc":"1342:300:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1380:5:32","nodeType":"YulTypedName","src":"1380:5:32","type":""},{"name":"pos","nativeSrc":"1387:3:32","nodeType":"YulTypedName","src":"1387:3:32","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1395:3:32","nodeType":"YulTypedName","src":"1395:3:32","type":""}],"src":"1342:300:32"},{"body":{"nativeSrc":"1768:110:32","nodeType":"YulBlock","src":"1768:110:32","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1785:9:32","nodeType":"YulIdentifier","src":"1785:9:32"},{"kind":"number","nativeSrc":"1796:2:32","nodeType":"YulLiteral","src":"1796:2:32","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1778:6:32","nodeType":"YulIdentifier","src":"1778:6:32"},"nativeSrc":"1778:21:32","nodeType":"YulFunctionCall","src":"1778:21:32"},"nativeSrc":"1778:21:32","nodeType":"YulExpressionStatement","src":"1778:21:32"},{"nativeSrc":"1808:64:32","nodeType":"YulAssignment","src":"1808:64:32","value":{"arguments":[{"name":"value0","nativeSrc":"1845:6:32","nodeType":"YulIdentifier","src":"1845:6:32"},{"arguments":[{"name":"headStart","nativeSrc":"1857:9:32","nodeType":"YulIdentifier","src":"1857:9:32"},{"kind":"number","nativeSrc":"1868:2:32","nodeType":"YulLiteral","src":"1868:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1853:3:32","nodeType":"YulIdentifier","src":"1853:3:32"},"nativeSrc":"1853:18:32","nodeType":"YulFunctionCall","src":"1853:18:32"}],"functionName":{"name":"abi_encode_string_memory_ptr","nativeSrc":"1816:28:32","nodeType":"YulIdentifier","src":"1816:28:32"},"nativeSrc":"1816:56:32","nodeType":"YulFunctionCall","src":"1816:56:32"},"variableNames":[{"name":"tail","nativeSrc":"1808:4:32","nodeType":"YulIdentifier","src":"1808:4:32"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1647:231:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1737:9:32","nodeType":"YulTypedName","src":"1737:9:32","type":""},{"name":"value0","nativeSrc":"1748:6:32","nodeType":"YulTypedName","src":"1748:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1759:4:32","nodeType":"YulTypedName","src":"1759:4:32","type":""}],"src":"1647:231:32"},{"body":{"nativeSrc":"1953:156:32","nodeType":"YulBlock","src":"1953:156:32","statements":[{"body":{"nativeSrc":"1999:16:32","nodeType":"YulBlock","src":"1999:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2008:1:32","nodeType":"YulLiteral","src":"2008:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"2011:1:32","nodeType":"YulLiteral","src":"2011:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2001:6:32","nodeType":"YulIdentifier","src":"2001:6:32"},"nativeSrc":"2001:12:32","nodeType":"YulFunctionCall","src":"2001:12:32"},"nativeSrc":"2001:12:32","nodeType":"YulExpressionStatement","src":"2001:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1974:7:32","nodeType":"YulIdentifier","src":"1974:7:32"},{"name":"headStart","nativeSrc":"1983:9:32","nodeType":"YulIdentifier","src":"1983:9:32"}],"functionName":{"name":"sub","nativeSrc":"1970:3:32","nodeType":"YulIdentifier","src":"1970:3:32"},"nativeSrc":"1970:23:32","nodeType":"YulFunctionCall","src":"1970:23:32"},{"kind":"number","nativeSrc":"1995:2:32","nodeType":"YulLiteral","src":"1995:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1966:3:32","nodeType":"YulIdentifier","src":"1966:3:32"},"nativeSrc":"1966:32:32","nodeType":"YulFunctionCall","src":"1966:32:32"},"nativeSrc":"1963:52:32","nodeType":"YulIf","src":"1963:52:32"},{"nativeSrc":"2024:14:32","nodeType":"YulVariableDeclaration","src":"2024:14:32","value":{"kind":"number","nativeSrc":"2037:1:32","nodeType":"YulLiteral","src":"2037:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2028:5:32","nodeType":"YulTypedName","src":"2028:5:32","type":""}]},{"nativeSrc":"2047:32:32","nodeType":"YulAssignment","src":"2047:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2069:9:32","nodeType":"YulIdentifier","src":"2069:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"2056:12:32","nodeType":"YulIdentifier","src":"2056:12:32"},"nativeSrc":"2056:23:32","nodeType":"YulFunctionCall","src":"2056:23:32"},"variableNames":[{"name":"value","nativeSrc":"2047:5:32","nodeType":"YulIdentifier","src":"2047:5:32"}]},{"nativeSrc":"2088:15:32","nodeType":"YulAssignment","src":"2088:15:32","value":{"name":"value","nativeSrc":"2098:5:32","nodeType":"YulIdentifier","src":"2098:5:32"},"variableNames":[{"name":"value0","nativeSrc":"2088:6:32","nodeType":"YulIdentifier","src":"2088:6:32"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1883:226:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1919:9:32","nodeType":"YulTypedName","src":"1919:9:32","type":""},{"name":"dataEnd","nativeSrc":"1930:7:32","nodeType":"YulTypedName","src":"1930:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1942:6:32","nodeType":"YulTypedName","src":"1942:6:32","type":""}],"src":"1883:226:32"},{"body":{"nativeSrc":"2215:102:32","nodeType":"YulBlock","src":"2215:102:32","statements":[{"nativeSrc":"2225:26:32","nodeType":"YulAssignment","src":"2225:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2237:9:32","nodeType":"YulIdentifier","src":"2237:9:32"},{"kind":"number","nativeSrc":"2248:2:32","nodeType":"YulLiteral","src":"2248:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2233:3:32","nodeType":"YulIdentifier","src":"2233:3:32"},"nativeSrc":"2233:18:32","nodeType":"YulFunctionCall","src":"2233:18:32"},"variableNames":[{"name":"tail","nativeSrc":"2225:4:32","nodeType":"YulIdentifier","src":"2225:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2267:9:32","nodeType":"YulIdentifier","src":"2267:9:32"},{"arguments":[{"name":"value0","nativeSrc":"2282:6:32","nodeType":"YulIdentifier","src":"2282:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2298:3:32","nodeType":"YulLiteral","src":"2298:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"2303:1:32","nodeType":"YulLiteral","src":"2303:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2294:3:32","nodeType":"YulIdentifier","src":"2294:3:32"},"nativeSrc":"2294:11:32","nodeType":"YulFunctionCall","src":"2294:11:32"},{"kind":"number","nativeSrc":"2307:1:32","nodeType":"YulLiteral","src":"2307:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2290:3:32","nodeType":"YulIdentifier","src":"2290:3:32"},"nativeSrc":"2290:19:32","nodeType":"YulFunctionCall","src":"2290:19:32"}],"functionName":{"name":"and","nativeSrc":"2278:3:32","nodeType":"YulIdentifier","src":"2278:3:32"},"nativeSrc":"2278:32:32","nodeType":"YulFunctionCall","src":"2278:32:32"}],"functionName":{"name":"mstore","nativeSrc":"2260:6:32","nodeType":"YulIdentifier","src":"2260:6:32"},"nativeSrc":"2260:51:32","nodeType":"YulFunctionCall","src":"2260:51:32"},"nativeSrc":"2260:51:32","nodeType":"YulExpressionStatement","src":"2260:51:32"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2114:203:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2184:9:32","nodeType":"YulTypedName","src":"2184:9:32","type":""},{"name":"value0","nativeSrc":"2195:6:32","nodeType":"YulTypedName","src":"2195:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2206:4:32","nodeType":"YulTypedName","src":"2206:4:32","type":""}],"src":"2114:203:32"},{"body":{"nativeSrc":"2409:213:32","nodeType":"YulBlock","src":"2409:213:32","statements":[{"body":{"nativeSrc":"2455:16:32","nodeType":"YulBlock","src":"2455:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2464:1:32","nodeType":"YulLiteral","src":"2464:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"2467:1:32","nodeType":"YulLiteral","src":"2467:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2457:6:32","nodeType":"YulIdentifier","src":"2457:6:32"},"nativeSrc":"2457:12:32","nodeType":"YulFunctionCall","src":"2457:12:32"},"nativeSrc":"2457:12:32","nodeType":"YulExpressionStatement","src":"2457:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2430:7:32","nodeType":"YulIdentifier","src":"2430:7:32"},{"name":"headStart","nativeSrc":"2439:9:32","nodeType":"YulIdentifier","src":"2439:9:32"}],"functionName":{"name":"sub","nativeSrc":"2426:3:32","nodeType":"YulIdentifier","src":"2426:3:32"},"nativeSrc":"2426:23:32","nodeType":"YulFunctionCall","src":"2426:23:32"},{"kind":"number","nativeSrc":"2451:2:32","nodeType":"YulLiteral","src":"2451:2:32","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2422:3:32","nodeType":"YulIdentifier","src":"2422:3:32"},"nativeSrc":"2422:32:32","nodeType":"YulFunctionCall","src":"2422:32:32"},"nativeSrc":"2419:52:32","nodeType":"YulIf","src":"2419:52:32"},{"nativeSrc":"2480:39:32","nodeType":"YulAssignment","src":"2480:39:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2509:9:32","nodeType":"YulIdentifier","src":"2509:9:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2490:18:32","nodeType":"YulIdentifier","src":"2490:18:32"},"nativeSrc":"2490:29:32","nodeType":"YulFunctionCall","src":"2490:29:32"},"variableNames":[{"name":"value0","nativeSrc":"2480:6:32","nodeType":"YulIdentifier","src":"2480:6:32"}]},{"nativeSrc":"2528:14:32","nodeType":"YulVariableDeclaration","src":"2528:14:32","value":{"kind":"number","nativeSrc":"2541:1:32","nodeType":"YulLiteral","src":"2541:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2532:5:32","nodeType":"YulTypedName","src":"2532:5:32","type":""}]},{"nativeSrc":"2551:41:32","nodeType":"YulAssignment","src":"2551:41:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2577:9:32","nodeType":"YulIdentifier","src":"2577:9:32"},{"kind":"number","nativeSrc":"2588:2:32","nodeType":"YulLiteral","src":"2588:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2573:3:32","nodeType":"YulIdentifier","src":"2573:3:32"},"nativeSrc":"2573:18:32","nodeType":"YulFunctionCall","src":"2573:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"2560:12:32","nodeType":"YulIdentifier","src":"2560:12:32"},"nativeSrc":"2560:32:32","nodeType":"YulFunctionCall","src":"2560:32:32"},"variableNames":[{"name":"value","nativeSrc":"2551:5:32","nodeType":"YulIdentifier","src":"2551:5:32"}]},{"nativeSrc":"2601:15:32","nodeType":"YulAssignment","src":"2601:15:32","value":{"name":"value","nativeSrc":"2611:5:32","nodeType":"YulIdentifier","src":"2611:5:32"},"variableNames":[{"name":"value1","nativeSrc":"2601:6:32","nodeType":"YulIdentifier","src":"2601:6:32"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"2322:300:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2367:9:32","nodeType":"YulTypedName","src":"2367:9:32","type":""},{"name":"dataEnd","nativeSrc":"2378:7:32","nodeType":"YulTypedName","src":"2378:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2390:6:32","nodeType":"YulTypedName","src":"2390:6:32","type":""},{"name":"value1","nativeSrc":"2398:6:32","nodeType":"YulTypedName","src":"2398:6:32","type":""}],"src":"2322:300:32"},{"body":{"nativeSrc":"2728:76:32","nodeType":"YulBlock","src":"2728:76:32","statements":[{"nativeSrc":"2738:26:32","nodeType":"YulAssignment","src":"2738:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2750:9:32","nodeType":"YulIdentifier","src":"2750:9:32"},{"kind":"number","nativeSrc":"2761:2:32","nodeType":"YulLiteral","src":"2761:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2746:3:32","nodeType":"YulIdentifier","src":"2746:3:32"},"nativeSrc":"2746:18:32","nodeType":"YulFunctionCall","src":"2746:18:32"},"variableNames":[{"name":"tail","nativeSrc":"2738:4:32","nodeType":"YulIdentifier","src":"2738:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2780:9:32","nodeType":"YulIdentifier","src":"2780:9:32"},{"name":"value0","nativeSrc":"2791:6:32","nodeType":"YulIdentifier","src":"2791:6:32"}],"functionName":{"name":"mstore","nativeSrc":"2773:6:32","nodeType":"YulIdentifier","src":"2773:6:32"},"nativeSrc":"2773:25:32","nodeType":"YulFunctionCall","src":"2773:25:32"},"nativeSrc":"2773:25:32","nodeType":"YulExpressionStatement","src":"2773:25:32"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2627:177:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2697:9:32","nodeType":"YulTypedName","src":"2697:9:32","type":""},{"name":"value0","nativeSrc":"2708:6:32","nodeType":"YulTypedName","src":"2708:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2719:4:32","nodeType":"YulTypedName","src":"2719:4:32","type":""}],"src":"2627:177:32"},{"body":{"nativeSrc":"2913:270:32","nodeType":"YulBlock","src":"2913:270:32","statements":[{"body":{"nativeSrc":"2959:16:32","nodeType":"YulBlock","src":"2959:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2968:1:32","nodeType":"YulLiteral","src":"2968:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"2971:1:32","nodeType":"YulLiteral","src":"2971:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2961:6:32","nodeType":"YulIdentifier","src":"2961:6:32"},"nativeSrc":"2961:12:32","nodeType":"YulFunctionCall","src":"2961:12:32"},"nativeSrc":"2961:12:32","nodeType":"YulExpressionStatement","src":"2961:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2934:7:32","nodeType":"YulIdentifier","src":"2934:7:32"},{"name":"headStart","nativeSrc":"2943:9:32","nodeType":"YulIdentifier","src":"2943:9:32"}],"functionName":{"name":"sub","nativeSrc":"2930:3:32","nodeType":"YulIdentifier","src":"2930:3:32"},"nativeSrc":"2930:23:32","nodeType":"YulFunctionCall","src":"2930:23:32"},{"kind":"number","nativeSrc":"2955:2:32","nodeType":"YulLiteral","src":"2955:2:32","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2926:3:32","nodeType":"YulIdentifier","src":"2926:3:32"},"nativeSrc":"2926:32:32","nodeType":"YulFunctionCall","src":"2926:32:32"},"nativeSrc":"2923:52:32","nodeType":"YulIf","src":"2923:52:32"},{"nativeSrc":"2984:39:32","nodeType":"YulAssignment","src":"2984:39:32","value":{"arguments":[{"name":"headStart","nativeSrc":"3013:9:32","nodeType":"YulIdentifier","src":"3013:9:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2994:18:32","nodeType":"YulIdentifier","src":"2994:18:32"},"nativeSrc":"2994:29:32","nodeType":"YulFunctionCall","src":"2994:29:32"},"variableNames":[{"name":"value0","nativeSrc":"2984:6:32","nodeType":"YulIdentifier","src":"2984:6:32"}]},{"nativeSrc":"3032:48:32","nodeType":"YulAssignment","src":"3032:48:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3065:9:32","nodeType":"YulIdentifier","src":"3065:9:32"},{"kind":"number","nativeSrc":"3076:2:32","nodeType":"YulLiteral","src":"3076:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3061:3:32","nodeType":"YulIdentifier","src":"3061:3:32"},"nativeSrc":"3061:18:32","nodeType":"YulFunctionCall","src":"3061:18:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3042:18:32","nodeType":"YulIdentifier","src":"3042:18:32"},"nativeSrc":"3042:38:32","nodeType":"YulFunctionCall","src":"3042:38:32"},"variableNames":[{"name":"value1","nativeSrc":"3032:6:32","nodeType":"YulIdentifier","src":"3032:6:32"}]},{"nativeSrc":"3089:14:32","nodeType":"YulVariableDeclaration","src":"3089:14:32","value":{"kind":"number","nativeSrc":"3102:1:32","nodeType":"YulLiteral","src":"3102:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3093:5:32","nodeType":"YulTypedName","src":"3093:5:32","type":""}]},{"nativeSrc":"3112:41:32","nodeType":"YulAssignment","src":"3112:41:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3138:9:32","nodeType":"YulIdentifier","src":"3138:9:32"},{"kind":"number","nativeSrc":"3149:2:32","nodeType":"YulLiteral","src":"3149:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3134:3:32","nodeType":"YulIdentifier","src":"3134:3:32"},"nativeSrc":"3134:18:32","nodeType":"YulFunctionCall","src":"3134:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"3121:12:32","nodeType":"YulIdentifier","src":"3121:12:32"},"nativeSrc":"3121:32:32","nodeType":"YulFunctionCall","src":"3121:32:32"},"variableNames":[{"name":"value","nativeSrc":"3112:5:32","nodeType":"YulIdentifier","src":"3112:5:32"}]},{"nativeSrc":"3162:15:32","nodeType":"YulAssignment","src":"3162:15:32","value":{"name":"value","nativeSrc":"3172:5:32","nodeType":"YulIdentifier","src":"3172:5:32"},"variableNames":[{"name":"value2","nativeSrc":"3162:6:32","nodeType":"YulIdentifier","src":"3162:6:32"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"2809:374:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2863:9:32","nodeType":"YulTypedName","src":"2863:9:32","type":""},{"name":"dataEnd","nativeSrc":"2874:7:32","nodeType":"YulTypedName","src":"2874:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2886:6:32","nodeType":"YulTypedName","src":"2886:6:32","type":""},{"name":"value1","nativeSrc":"2894:6:32","nodeType":"YulTypedName","src":"2894:6:32","type":""},{"name":"value2","nativeSrc":"2902:6:32","nodeType":"YulTypedName","src":"2902:6:32","type":""}],"src":"2809:374:32"},{"body":{"nativeSrc":"3258:156:32","nodeType":"YulBlock","src":"3258:156:32","statements":[{"body":{"nativeSrc":"3304:16:32","nodeType":"YulBlock","src":"3304:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3313:1:32","nodeType":"YulLiteral","src":"3313:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"3316:1:32","nodeType":"YulLiteral","src":"3316:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3306:6:32","nodeType":"YulIdentifier","src":"3306:6:32"},"nativeSrc":"3306:12:32","nodeType":"YulFunctionCall","src":"3306:12:32"},"nativeSrc":"3306:12:32","nodeType":"YulExpressionStatement","src":"3306:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3279:7:32","nodeType":"YulIdentifier","src":"3279:7:32"},{"name":"headStart","nativeSrc":"3288:9:32","nodeType":"YulIdentifier","src":"3288:9:32"}],"functionName":{"name":"sub","nativeSrc":"3275:3:32","nodeType":"YulIdentifier","src":"3275:3:32"},"nativeSrc":"3275:23:32","nodeType":"YulFunctionCall","src":"3275:23:32"},{"kind":"number","nativeSrc":"3300:2:32","nodeType":"YulLiteral","src":"3300:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3271:3:32","nodeType":"YulIdentifier","src":"3271:3:32"},"nativeSrc":"3271:32:32","nodeType":"YulFunctionCall","src":"3271:32:32"},"nativeSrc":"3268:52:32","nodeType":"YulIf","src":"3268:52:32"},{"nativeSrc":"3329:14:32","nodeType":"YulVariableDeclaration","src":"3329:14:32","value":{"kind":"number","nativeSrc":"3342:1:32","nodeType":"YulLiteral","src":"3342:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3333:5:32","nodeType":"YulTypedName","src":"3333:5:32","type":""}]},{"nativeSrc":"3352:32:32","nodeType":"YulAssignment","src":"3352:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"3374:9:32","nodeType":"YulIdentifier","src":"3374:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"3361:12:32","nodeType":"YulIdentifier","src":"3361:12:32"},"nativeSrc":"3361:23:32","nodeType":"YulFunctionCall","src":"3361:23:32"},"variableNames":[{"name":"value","nativeSrc":"3352:5:32","nodeType":"YulIdentifier","src":"3352:5:32"}]},{"nativeSrc":"3393:15:32","nodeType":"YulAssignment","src":"3393:15:32","value":{"name":"value","nativeSrc":"3403:5:32","nodeType":"YulIdentifier","src":"3403:5:32"},"variableNames":[{"name":"value0","nativeSrc":"3393:6:32","nodeType":"YulIdentifier","src":"3393:6:32"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"3188:226:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3224:9:32","nodeType":"YulTypedName","src":"3224:9:32","type":""},{"name":"dataEnd","nativeSrc":"3235:7:32","nodeType":"YulTypedName","src":"3235:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3247:6:32","nodeType":"YulTypedName","src":"3247:6:32","type":""}],"src":"3188:226:32"},{"body":{"nativeSrc":"3520:76:32","nodeType":"YulBlock","src":"3520:76:32","statements":[{"nativeSrc":"3530:26:32","nodeType":"YulAssignment","src":"3530:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"3542:9:32","nodeType":"YulIdentifier","src":"3542:9:32"},{"kind":"number","nativeSrc":"3553:2:32","nodeType":"YulLiteral","src":"3553:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3538:3:32","nodeType":"YulIdentifier","src":"3538:3:32"},"nativeSrc":"3538:18:32","nodeType":"YulFunctionCall","src":"3538:18:32"},"variableNames":[{"name":"tail","nativeSrc":"3530:4:32","nodeType":"YulIdentifier","src":"3530:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3572:9:32","nodeType":"YulIdentifier","src":"3572:9:32"},{"name":"value0","nativeSrc":"3583:6:32","nodeType":"YulIdentifier","src":"3583:6:32"}],"functionName":{"name":"mstore","nativeSrc":"3565:6:32","nodeType":"YulIdentifier","src":"3565:6:32"},"nativeSrc":"3565:25:32","nodeType":"YulFunctionCall","src":"3565:25:32"},"nativeSrc":"3565:25:32","nodeType":"YulExpressionStatement","src":"3565:25:32"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"3419:177:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3489:9:32","nodeType":"YulTypedName","src":"3489:9:32","type":""},{"name":"value0","nativeSrc":"3500:6:32","nodeType":"YulTypedName","src":"3500:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3511:4:32","nodeType":"YulTypedName","src":"3511:4:32","type":""}],"src":"3419:177:32"},{"body":{"nativeSrc":"3688:259:32","nodeType":"YulBlock","src":"3688:259:32","statements":[{"body":{"nativeSrc":"3734:16:32","nodeType":"YulBlock","src":"3734:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3743:1:32","nodeType":"YulLiteral","src":"3743:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"3746:1:32","nodeType":"YulLiteral","src":"3746:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3736:6:32","nodeType":"YulIdentifier","src":"3736:6:32"},"nativeSrc":"3736:12:32","nodeType":"YulFunctionCall","src":"3736:12:32"},"nativeSrc":"3736:12:32","nodeType":"YulExpressionStatement","src":"3736:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3709:7:32","nodeType":"YulIdentifier","src":"3709:7:32"},{"name":"headStart","nativeSrc":"3718:9:32","nodeType":"YulIdentifier","src":"3718:9:32"}],"functionName":{"name":"sub","nativeSrc":"3705:3:32","nodeType":"YulIdentifier","src":"3705:3:32"},"nativeSrc":"3705:23:32","nodeType":"YulFunctionCall","src":"3705:23:32"},{"kind":"number","nativeSrc":"3730:2:32","nodeType":"YulLiteral","src":"3730:2:32","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3701:3:32","nodeType":"YulIdentifier","src":"3701:3:32"},"nativeSrc":"3701:32:32","nodeType":"YulFunctionCall","src":"3701:32:32"},"nativeSrc":"3698:52:32","nodeType":"YulIf","src":"3698:52:32"},{"nativeSrc":"3759:14:32","nodeType":"YulVariableDeclaration","src":"3759:14:32","value":{"kind":"number","nativeSrc":"3772:1:32","nodeType":"YulLiteral","src":"3772:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3763:5:32","nodeType":"YulTypedName","src":"3763:5:32","type":""}]},{"nativeSrc":"3782:32:32","nodeType":"YulAssignment","src":"3782:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"3804:9:32","nodeType":"YulIdentifier","src":"3804:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"3791:12:32","nodeType":"YulIdentifier","src":"3791:12:32"},"nativeSrc":"3791:23:32","nodeType":"YulFunctionCall","src":"3791:23:32"},"variableNames":[{"name":"value","nativeSrc":"3782:5:32","nodeType":"YulIdentifier","src":"3782:5:32"}]},{"nativeSrc":"3823:15:32","nodeType":"YulAssignment","src":"3823:15:32","value":{"name":"value","nativeSrc":"3833:5:32","nodeType":"YulIdentifier","src":"3833:5:32"},"variableNames":[{"name":"value0","nativeSrc":"3823:6:32","nodeType":"YulIdentifier","src":"3823:6:32"}]},{"nativeSrc":"3847:16:32","nodeType":"YulVariableDeclaration","src":"3847:16:32","value":{"kind":"number","nativeSrc":"3862:1:32","nodeType":"YulLiteral","src":"3862:1:32","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"3851:7:32","nodeType":"YulTypedName","src":"3851:7:32","type":""}]},{"nativeSrc":"3872:43:32","nodeType":"YulAssignment","src":"3872:43:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3900:9:32","nodeType":"YulIdentifier","src":"3900:9:32"},{"kind":"number","nativeSrc":"3911:2:32","nodeType":"YulLiteral","src":"3911:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3896:3:32","nodeType":"YulIdentifier","src":"3896:3:32"},"nativeSrc":"3896:18:32","nodeType":"YulFunctionCall","src":"3896:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"3883:12:32","nodeType":"YulIdentifier","src":"3883:12:32"},"nativeSrc":"3883:32:32","nodeType":"YulFunctionCall","src":"3883:32:32"},"variableNames":[{"name":"value_1","nativeSrc":"3872:7:32","nodeType":"YulIdentifier","src":"3872:7:32"}]},{"nativeSrc":"3924:17:32","nodeType":"YulAssignment","src":"3924:17:32","value":{"name":"value_1","nativeSrc":"3934:7:32","nodeType":"YulIdentifier","src":"3934:7:32"},"variableNames":[{"name":"value1","nativeSrc":"3924:6:32","nodeType":"YulIdentifier","src":"3924:6:32"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nativeSrc":"3601:346:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3646:9:32","nodeType":"YulTypedName","src":"3646:9:32","type":""},{"name":"dataEnd","nativeSrc":"3657:7:32","nodeType":"YulTypedName","src":"3657:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3669:6:32","nodeType":"YulTypedName","src":"3669:6:32","type":""},{"name":"value1","nativeSrc":"3677:6:32","nodeType":"YulTypedName","src":"3677:6:32","type":""}],"src":"3601:346:32"},{"body":{"nativeSrc":"4081:145:32","nodeType":"YulBlock","src":"4081:145:32","statements":[{"nativeSrc":"4091:26:32","nodeType":"YulAssignment","src":"4091:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"4103:9:32","nodeType":"YulIdentifier","src":"4103:9:32"},{"kind":"number","nativeSrc":"4114:2:32","nodeType":"YulLiteral","src":"4114:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4099:3:32","nodeType":"YulIdentifier","src":"4099:3:32"},"nativeSrc":"4099:18:32","nodeType":"YulFunctionCall","src":"4099:18:32"},"variableNames":[{"name":"tail","nativeSrc":"4091:4:32","nodeType":"YulIdentifier","src":"4091:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4133:9:32","nodeType":"YulIdentifier","src":"4133:9:32"},{"arguments":[{"name":"value0","nativeSrc":"4148:6:32","nodeType":"YulIdentifier","src":"4148:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4164:3:32","nodeType":"YulLiteral","src":"4164:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"4169:1:32","nodeType":"YulLiteral","src":"4169:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4160:3:32","nodeType":"YulIdentifier","src":"4160:3:32"},"nativeSrc":"4160:11:32","nodeType":"YulFunctionCall","src":"4160:11:32"},{"kind":"number","nativeSrc":"4173:1:32","nodeType":"YulLiteral","src":"4173:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4156:3:32","nodeType":"YulIdentifier","src":"4156:3:32"},"nativeSrc":"4156:19:32","nodeType":"YulFunctionCall","src":"4156:19:32"}],"functionName":{"name":"and","nativeSrc":"4144:3:32","nodeType":"YulIdentifier","src":"4144:3:32"},"nativeSrc":"4144:32:32","nodeType":"YulFunctionCall","src":"4144:32:32"}],"functionName":{"name":"mstore","nativeSrc":"4126:6:32","nodeType":"YulIdentifier","src":"4126:6:32"},"nativeSrc":"4126:51:32","nodeType":"YulFunctionCall","src":"4126:51:32"},"nativeSrc":"4126:51:32","nodeType":"YulExpressionStatement","src":"4126:51:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4197:9:32","nodeType":"YulIdentifier","src":"4197:9:32"},{"kind":"number","nativeSrc":"4208:2:32","nodeType":"YulLiteral","src":"4208:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4193:3:32","nodeType":"YulIdentifier","src":"4193:3:32"},"nativeSrc":"4193:18:32","nodeType":"YulFunctionCall","src":"4193:18:32"},{"name":"value1","nativeSrc":"4213:6:32","nodeType":"YulIdentifier","src":"4213:6:32"}],"functionName":{"name":"mstore","nativeSrc":"4186:6:32","nodeType":"YulIdentifier","src":"4186:6:32"},"nativeSrc":"4186:34:32","nodeType":"YulFunctionCall","src":"4186:34:32"},"nativeSrc":"4186:34:32","nodeType":"YulExpressionStatement","src":"4186:34:32"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"3952:274:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4042:9:32","nodeType":"YulTypedName","src":"4042:9:32","type":""},{"name":"value1","nativeSrc":"4053:6:32","nodeType":"YulTypedName","src":"4053:6:32","type":""},{"name":"value0","nativeSrc":"4061:6:32","nodeType":"YulTypedName","src":"4061:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4072:4:32","nodeType":"YulTypedName","src":"4072:4:32","type":""}],"src":"3952:274:32"},{"body":{"nativeSrc":"4318:213:32","nodeType":"YulBlock","src":"4318:213:32","statements":[{"body":{"nativeSrc":"4364:16:32","nodeType":"YulBlock","src":"4364:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4373:1:32","nodeType":"YulLiteral","src":"4373:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"4376:1:32","nodeType":"YulLiteral","src":"4376:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4366:6:32","nodeType":"YulIdentifier","src":"4366:6:32"},"nativeSrc":"4366:12:32","nodeType":"YulFunctionCall","src":"4366:12:32"},"nativeSrc":"4366:12:32","nodeType":"YulExpressionStatement","src":"4366:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4339:7:32","nodeType":"YulIdentifier","src":"4339:7:32"},{"name":"headStart","nativeSrc":"4348:9:32","nodeType":"YulIdentifier","src":"4348:9:32"}],"functionName":{"name":"sub","nativeSrc":"4335:3:32","nodeType":"YulIdentifier","src":"4335:3:32"},"nativeSrc":"4335:23:32","nodeType":"YulFunctionCall","src":"4335:23:32"},{"kind":"number","nativeSrc":"4360:2:32","nodeType":"YulLiteral","src":"4360:2:32","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4331:3:32","nodeType":"YulIdentifier","src":"4331:3:32"},"nativeSrc":"4331:32:32","nodeType":"YulFunctionCall","src":"4331:32:32"},"nativeSrc":"4328:52:32","nodeType":"YulIf","src":"4328:52:32"},{"nativeSrc":"4389:14:32","nodeType":"YulVariableDeclaration","src":"4389:14:32","value":{"kind":"number","nativeSrc":"4402:1:32","nodeType":"YulLiteral","src":"4402:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4393:5:32","nodeType":"YulTypedName","src":"4393:5:32","type":""}]},{"nativeSrc":"4412:32:32","nodeType":"YulAssignment","src":"4412:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"4434:9:32","nodeType":"YulIdentifier","src":"4434:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"4421:12:32","nodeType":"YulIdentifier","src":"4421:12:32"},"nativeSrc":"4421:23:32","nodeType":"YulFunctionCall","src":"4421:23:32"},"variableNames":[{"name":"value","nativeSrc":"4412:5:32","nodeType":"YulIdentifier","src":"4412:5:32"}]},{"nativeSrc":"4453:15:32","nodeType":"YulAssignment","src":"4453:15:32","value":{"name":"value","nativeSrc":"4463:5:32","nodeType":"YulIdentifier","src":"4463:5:32"},"variableNames":[{"name":"value0","nativeSrc":"4453:6:32","nodeType":"YulIdentifier","src":"4453:6:32"}]},{"nativeSrc":"4477:48:32","nodeType":"YulAssignment","src":"4477:48:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4510:9:32","nodeType":"YulIdentifier","src":"4510:9:32"},{"kind":"number","nativeSrc":"4521:2:32","nodeType":"YulLiteral","src":"4521:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4506:3:32","nodeType":"YulIdentifier","src":"4506:3:32"},"nativeSrc":"4506:18:32","nodeType":"YulFunctionCall","src":"4506:18:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4487:18:32","nodeType":"YulIdentifier","src":"4487:18:32"},"nativeSrc":"4487:38:32","nodeType":"YulFunctionCall","src":"4487:38:32"},"variableNames":[{"name":"value1","nativeSrc":"4477:6:32","nodeType":"YulIdentifier","src":"4477:6:32"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nativeSrc":"4231:300:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4276:9:32","nodeType":"YulTypedName","src":"4276:9:32","type":""},{"name":"dataEnd","nativeSrc":"4287:7:32","nodeType":"YulTypedName","src":"4287:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4299:6:32","nodeType":"YulTypedName","src":"4299:6:32","type":""},{"name":"value1","nativeSrc":"4307:6:32","nodeType":"YulTypedName","src":"4307:6:32","type":""}],"src":"4231:300:32"},{"body":{"nativeSrc":"4626:497:32","nodeType":"YulBlock","src":"4626:497:32","statements":[{"body":{"nativeSrc":"4672:16:32","nodeType":"YulBlock","src":"4672:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4681:1:32","nodeType":"YulLiteral","src":"4681:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"4684:1:32","nodeType":"YulLiteral","src":"4684:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4674:6:32","nodeType":"YulIdentifier","src":"4674:6:32"},"nativeSrc":"4674:12:32","nodeType":"YulFunctionCall","src":"4674:12:32"},"nativeSrc":"4674:12:32","nodeType":"YulExpressionStatement","src":"4674:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4647:7:32","nodeType":"YulIdentifier","src":"4647:7:32"},{"name":"headStart","nativeSrc":"4656:9:32","nodeType":"YulIdentifier","src":"4656:9:32"}],"functionName":{"name":"sub","nativeSrc":"4643:3:32","nodeType":"YulIdentifier","src":"4643:3:32"},"nativeSrc":"4643:23:32","nodeType":"YulFunctionCall","src":"4643:23:32"},{"kind":"number","nativeSrc":"4668:2:32","nodeType":"YulLiteral","src":"4668:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4639:3:32","nodeType":"YulIdentifier","src":"4639:3:32"},"nativeSrc":"4639:32:32","nodeType":"YulFunctionCall","src":"4639:32:32"},"nativeSrc":"4636:52:32","nodeType":"YulIf","src":"4636:52:32"},{"nativeSrc":"4697:37:32","nodeType":"YulVariableDeclaration","src":"4697:37:32","value":{"arguments":[{"name":"headStart","nativeSrc":"4724:9:32","nodeType":"YulIdentifier","src":"4724:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"4711:12:32","nodeType":"YulIdentifier","src":"4711:12:32"},"nativeSrc":"4711:23:32","nodeType":"YulFunctionCall","src":"4711:23:32"},"variables":[{"name":"offset","nativeSrc":"4701:6:32","nodeType":"YulTypedName","src":"4701:6:32","type":""}]},{"body":{"nativeSrc":"4777:16:32","nodeType":"YulBlock","src":"4777:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4786:1:32","nodeType":"YulLiteral","src":"4786:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"4789:1:32","nodeType":"YulLiteral","src":"4789:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4779:6:32","nodeType":"YulIdentifier","src":"4779:6:32"},"nativeSrc":"4779:12:32","nodeType":"YulFunctionCall","src":"4779:12:32"},"nativeSrc":"4779:12:32","nodeType":"YulExpressionStatement","src":"4779:12:32"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4749:6:32","nodeType":"YulIdentifier","src":"4749:6:32"},{"kind":"number","nativeSrc":"4757:18:32","nodeType":"YulLiteral","src":"4757:18:32","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4746:2:32","nodeType":"YulIdentifier","src":"4746:2:32"},"nativeSrc":"4746:30:32","nodeType":"YulFunctionCall","src":"4746:30:32"},"nativeSrc":"4743:50:32","nodeType":"YulIf","src":"4743:50:32"},{"nativeSrc":"4802:32:32","nodeType":"YulVariableDeclaration","src":"4802:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"4816:9:32","nodeType":"YulIdentifier","src":"4816:9:32"},{"name":"offset","nativeSrc":"4827:6:32","nodeType":"YulIdentifier","src":"4827:6:32"}],"functionName":{"name":"add","nativeSrc":"4812:3:32","nodeType":"YulIdentifier","src":"4812:3:32"},"nativeSrc":"4812:22:32","nodeType":"YulFunctionCall","src":"4812:22:32"},"variables":[{"name":"_1","nativeSrc":"4806:2:32","nodeType":"YulTypedName","src":"4806:2:32","type":""}]},{"body":{"nativeSrc":"4882:16:32","nodeType":"YulBlock","src":"4882:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4891:1:32","nodeType":"YulLiteral","src":"4891:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"4894:1:32","nodeType":"YulLiteral","src":"4894:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4884:6:32","nodeType":"YulIdentifier","src":"4884:6:32"},"nativeSrc":"4884:12:32","nodeType":"YulFunctionCall","src":"4884:12:32"},"nativeSrc":"4884:12:32","nodeType":"YulExpressionStatement","src":"4884:12:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"4861:2:32","nodeType":"YulIdentifier","src":"4861:2:32"},{"kind":"number","nativeSrc":"4865:4:32","nodeType":"YulLiteral","src":"4865:4:32","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"4857:3:32","nodeType":"YulIdentifier","src":"4857:3:32"},"nativeSrc":"4857:13:32","nodeType":"YulFunctionCall","src":"4857:13:32"},{"name":"dataEnd","nativeSrc":"4872:7:32","nodeType":"YulIdentifier","src":"4872:7:32"}],"functionName":{"name":"slt","nativeSrc":"4853:3:32","nodeType":"YulIdentifier","src":"4853:3:32"},"nativeSrc":"4853:27:32","nodeType":"YulFunctionCall","src":"4853:27:32"}],"functionName":{"name":"iszero","nativeSrc":"4846:6:32","nodeType":"YulIdentifier","src":"4846:6:32"},"nativeSrc":"4846:35:32","nodeType":"YulFunctionCall","src":"4846:35:32"},"nativeSrc":"4843:55:32","nodeType":"YulIf","src":"4843:55:32"},{"nativeSrc":"4907:30:32","nodeType":"YulVariableDeclaration","src":"4907:30:32","value":{"arguments":[{"name":"_1","nativeSrc":"4934:2:32","nodeType":"YulIdentifier","src":"4934:2:32"}],"functionName":{"name":"calldataload","nativeSrc":"4921:12:32","nodeType":"YulIdentifier","src":"4921:12:32"},"nativeSrc":"4921:16:32","nodeType":"YulFunctionCall","src":"4921:16:32"},"variables":[{"name":"length","nativeSrc":"4911:6:32","nodeType":"YulTypedName","src":"4911:6:32","type":""}]},{"body":{"nativeSrc":"4980:16:32","nodeType":"YulBlock","src":"4980:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4989:1:32","nodeType":"YulLiteral","src":"4989:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"4992:1:32","nodeType":"YulLiteral","src":"4992:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4982:6:32","nodeType":"YulIdentifier","src":"4982:6:32"},"nativeSrc":"4982:12:32","nodeType":"YulFunctionCall","src":"4982:12:32"},"nativeSrc":"4982:12:32","nodeType":"YulExpressionStatement","src":"4982:12:32"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"4952:6:32","nodeType":"YulIdentifier","src":"4952:6:32"},{"kind":"number","nativeSrc":"4960:18:32","nodeType":"YulLiteral","src":"4960:18:32","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4949:2:32","nodeType":"YulIdentifier","src":"4949:2:32"},"nativeSrc":"4949:30:32","nodeType":"YulFunctionCall","src":"4949:30:32"},"nativeSrc":"4946:50:32","nodeType":"YulIf","src":"4946:50:32"},{"body":{"nativeSrc":"5046:16:32","nodeType":"YulBlock","src":"5046:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5055:1:32","nodeType":"YulLiteral","src":"5055:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"5058:1:32","nodeType":"YulLiteral","src":"5058:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5048:6:32","nodeType":"YulIdentifier","src":"5048:6:32"},"nativeSrc":"5048:12:32","nodeType":"YulFunctionCall","src":"5048:12:32"},"nativeSrc":"5048:12:32","nodeType":"YulExpressionStatement","src":"5048:12:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"5019:2:32","nodeType":"YulIdentifier","src":"5019:2:32"},{"name":"length","nativeSrc":"5023:6:32","nodeType":"YulIdentifier","src":"5023:6:32"}],"functionName":{"name":"add","nativeSrc":"5015:3:32","nodeType":"YulIdentifier","src":"5015:3:32"},"nativeSrc":"5015:15:32","nodeType":"YulFunctionCall","src":"5015:15:32"},{"kind":"number","nativeSrc":"5032:2:32","nodeType":"YulLiteral","src":"5032:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5011:3:32","nodeType":"YulIdentifier","src":"5011:3:32"},"nativeSrc":"5011:24:32","nodeType":"YulFunctionCall","src":"5011:24:32"},{"name":"dataEnd","nativeSrc":"5037:7:32","nodeType":"YulIdentifier","src":"5037:7:32"}],"functionName":{"name":"gt","nativeSrc":"5008:2:32","nodeType":"YulIdentifier","src":"5008:2:32"},"nativeSrc":"5008:37:32","nodeType":"YulFunctionCall","src":"5008:37:32"},"nativeSrc":"5005:57:32","nodeType":"YulIf","src":"5005:57:32"},{"nativeSrc":"5071:21:32","nodeType":"YulAssignment","src":"5071:21:32","value":{"arguments":[{"name":"_1","nativeSrc":"5085:2:32","nodeType":"YulIdentifier","src":"5085:2:32"},{"kind":"number","nativeSrc":"5089:2:32","nodeType":"YulLiteral","src":"5089:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5081:3:32","nodeType":"YulIdentifier","src":"5081:3:32"},"nativeSrc":"5081:11:32","nodeType":"YulFunctionCall","src":"5081:11:32"},"variableNames":[{"name":"value0","nativeSrc":"5071:6:32","nodeType":"YulIdentifier","src":"5071:6:32"}]},{"nativeSrc":"5101:16:32","nodeType":"YulAssignment","src":"5101:16:32","value":{"name":"length","nativeSrc":"5111:6:32","nodeType":"YulIdentifier","src":"5111:6:32"},"variableNames":[{"name":"value1","nativeSrc":"5101:6:32","nodeType":"YulIdentifier","src":"5101:6:32"}]}]},"name":"abi_decode_tuple_t_string_calldata_ptr","nativeSrc":"4536:587:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4584:9:32","nodeType":"YulTypedName","src":"4584:9:32","type":""},{"name":"dataEnd","nativeSrc":"4595:7:32","nodeType":"YulTypedName","src":"4595:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4607:6:32","nodeType":"YulTypedName","src":"4607:6:32","type":""},{"name":"value1","nativeSrc":"4615:6:32","nodeType":"YulTypedName","src":"4615:6:32","type":""}],"src":"4536:587:32"},{"body":{"nativeSrc":"5198:116:32","nodeType":"YulBlock","src":"5198:116:32","statements":[{"body":{"nativeSrc":"5244:16:32","nodeType":"YulBlock","src":"5244:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5253:1:32","nodeType":"YulLiteral","src":"5253:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"5256:1:32","nodeType":"YulLiteral","src":"5256:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5246:6:32","nodeType":"YulIdentifier","src":"5246:6:32"},"nativeSrc":"5246:12:32","nodeType":"YulFunctionCall","src":"5246:12:32"},"nativeSrc":"5246:12:32","nodeType":"YulExpressionStatement","src":"5246:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5219:7:32","nodeType":"YulIdentifier","src":"5219:7:32"},{"name":"headStart","nativeSrc":"5228:9:32","nodeType":"YulIdentifier","src":"5228:9:32"}],"functionName":{"name":"sub","nativeSrc":"5215:3:32","nodeType":"YulIdentifier","src":"5215:3:32"},"nativeSrc":"5215:23:32","nodeType":"YulFunctionCall","src":"5215:23:32"},{"kind":"number","nativeSrc":"5240:2:32","nodeType":"YulLiteral","src":"5240:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5211:3:32","nodeType":"YulIdentifier","src":"5211:3:32"},"nativeSrc":"5211:32:32","nodeType":"YulFunctionCall","src":"5211:32:32"},"nativeSrc":"5208:52:32","nodeType":"YulIf","src":"5208:52:32"},{"nativeSrc":"5269:39:32","nodeType":"YulAssignment","src":"5269:39:32","value":{"arguments":[{"name":"headStart","nativeSrc":"5298:9:32","nodeType":"YulIdentifier","src":"5298:9:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5279:18:32","nodeType":"YulIdentifier","src":"5279:18:32"},"nativeSrc":"5279:29:32","nodeType":"YulFunctionCall","src":"5279:29:32"},"variableNames":[{"name":"value0","nativeSrc":"5269:6:32","nodeType":"YulIdentifier","src":"5269:6:32"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"5128:186:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5164:9:32","nodeType":"YulTypedName","src":"5164:9:32","type":""},{"name":"dataEnd","nativeSrc":"5175:7:32","nodeType":"YulTypedName","src":"5175:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5187:6:32","nodeType":"YulTypedName","src":"5187:6:32","type":""}],"src":"5128:186:32"},{"body":{"nativeSrc":"5388:211:32","nodeType":"YulBlock","src":"5388:211:32","statements":[{"body":{"nativeSrc":"5434:16:32","nodeType":"YulBlock","src":"5434:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5443:1:32","nodeType":"YulLiteral","src":"5443:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"5446:1:32","nodeType":"YulLiteral","src":"5446:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5436:6:32","nodeType":"YulIdentifier","src":"5436:6:32"},"nativeSrc":"5436:12:32","nodeType":"YulFunctionCall","src":"5436:12:32"},"nativeSrc":"5436:12:32","nodeType":"YulExpressionStatement","src":"5436:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5409:7:32","nodeType":"YulIdentifier","src":"5409:7:32"},{"name":"headStart","nativeSrc":"5418:9:32","nodeType":"YulIdentifier","src":"5418:9:32"}],"functionName":{"name":"sub","nativeSrc":"5405:3:32","nodeType":"YulIdentifier","src":"5405:3:32"},"nativeSrc":"5405:23:32","nodeType":"YulFunctionCall","src":"5405:23:32"},{"kind":"number","nativeSrc":"5430:2:32","nodeType":"YulLiteral","src":"5430:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5401:3:32","nodeType":"YulIdentifier","src":"5401:3:32"},"nativeSrc":"5401:32:32","nodeType":"YulFunctionCall","src":"5401:32:32"},"nativeSrc":"5398:52:32","nodeType":"YulIf","src":"5398:52:32"},{"nativeSrc":"5459:36:32","nodeType":"YulVariableDeclaration","src":"5459:36:32","value":{"arguments":[{"name":"headStart","nativeSrc":"5485:9:32","nodeType":"YulIdentifier","src":"5485:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"5472:12:32","nodeType":"YulIdentifier","src":"5472:12:32"},"nativeSrc":"5472:23:32","nodeType":"YulFunctionCall","src":"5472:23:32"},"variables":[{"name":"value","nativeSrc":"5463:5:32","nodeType":"YulTypedName","src":"5463:5:32","type":""}]},{"body":{"nativeSrc":"5553:16:32","nodeType":"YulBlock","src":"5553:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5562:1:32","nodeType":"YulLiteral","src":"5562:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"5565:1:32","nodeType":"YulLiteral","src":"5565:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5555:6:32","nodeType":"YulIdentifier","src":"5555:6:32"},"nativeSrc":"5555:12:32","nodeType":"YulFunctionCall","src":"5555:12:32"},"nativeSrc":"5555:12:32","nodeType":"YulExpressionStatement","src":"5555:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5517:5:32","nodeType":"YulIdentifier","src":"5517:5:32"},{"arguments":[{"name":"value","nativeSrc":"5528:5:32","nodeType":"YulIdentifier","src":"5528:5:32"},{"kind":"number","nativeSrc":"5535:14:32","nodeType":"YulLiteral","src":"5535:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5524:3:32","nodeType":"YulIdentifier","src":"5524:3:32"},"nativeSrc":"5524:26:32","nodeType":"YulFunctionCall","src":"5524:26:32"}],"functionName":{"name":"eq","nativeSrc":"5514:2:32","nodeType":"YulIdentifier","src":"5514:2:32"},"nativeSrc":"5514:37:32","nodeType":"YulFunctionCall","src":"5514:37:32"}],"functionName":{"name":"iszero","nativeSrc":"5507:6:32","nodeType":"YulIdentifier","src":"5507:6:32"},"nativeSrc":"5507:45:32","nodeType":"YulFunctionCall","src":"5507:45:32"},"nativeSrc":"5504:65:32","nodeType":"YulIf","src":"5504:65:32"},{"nativeSrc":"5578:15:32","nodeType":"YulAssignment","src":"5578:15:32","value":{"name":"value","nativeSrc":"5588:5:32","nodeType":"YulIdentifier","src":"5588:5:32"},"variableNames":[{"name":"value0","nativeSrc":"5578:6:32","nodeType":"YulIdentifier","src":"5578:6:32"}]}]},"name":"abi_decode_tuple_t_uint48","nativeSrc":"5319:280:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5354:9:32","nodeType":"YulTypedName","src":"5354:9:32","type":""},{"name":"dataEnd","nativeSrc":"5365:7:32","nodeType":"YulTypedName","src":"5365:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5377:6:32","nodeType":"YulTypedName","src":"5377:6:32","type":""}],"src":"5319:280:32"},{"body":{"nativeSrc":"5729:161:32","nodeType":"YulBlock","src":"5729:161:32","statements":[{"nativeSrc":"5739:26:32","nodeType":"YulAssignment","src":"5739:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"5751:9:32","nodeType":"YulIdentifier","src":"5751:9:32"},{"kind":"number","nativeSrc":"5762:2:32","nodeType":"YulLiteral","src":"5762:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5747:3:32","nodeType":"YulIdentifier","src":"5747:3:32"},"nativeSrc":"5747:18:32","nodeType":"YulFunctionCall","src":"5747:18:32"},"variableNames":[{"name":"tail","nativeSrc":"5739:4:32","nodeType":"YulIdentifier","src":"5739:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5781:9:32","nodeType":"YulIdentifier","src":"5781:9:32"},{"arguments":[{"name":"value0","nativeSrc":"5796:6:32","nodeType":"YulIdentifier","src":"5796:6:32"},{"kind":"number","nativeSrc":"5804:14:32","nodeType":"YulLiteral","src":"5804:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5792:3:32","nodeType":"YulIdentifier","src":"5792:3:32"},"nativeSrc":"5792:27:32","nodeType":"YulFunctionCall","src":"5792:27:32"}],"functionName":{"name":"mstore","nativeSrc":"5774:6:32","nodeType":"YulIdentifier","src":"5774:6:32"},"nativeSrc":"5774:46:32","nodeType":"YulFunctionCall","src":"5774:46:32"},"nativeSrc":"5774:46:32","nodeType":"YulExpressionStatement","src":"5774:46:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5840:9:32","nodeType":"YulIdentifier","src":"5840:9:32"},{"kind":"number","nativeSrc":"5851:2:32","nodeType":"YulLiteral","src":"5851:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5836:3:32","nodeType":"YulIdentifier","src":"5836:3:32"},"nativeSrc":"5836:18:32","nodeType":"YulFunctionCall","src":"5836:18:32"},{"arguments":[{"name":"value1","nativeSrc":"5860:6:32","nodeType":"YulIdentifier","src":"5860:6:32"},{"kind":"number","nativeSrc":"5868:14:32","nodeType":"YulLiteral","src":"5868:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5856:3:32","nodeType":"YulIdentifier","src":"5856:3:32"},"nativeSrc":"5856:27:32","nodeType":"YulFunctionCall","src":"5856:27:32"}],"functionName":{"name":"mstore","nativeSrc":"5829:6:32","nodeType":"YulIdentifier","src":"5829:6:32"},"nativeSrc":"5829:55:32","nodeType":"YulFunctionCall","src":"5829:55:32"},"nativeSrc":"5829:55:32","nodeType":"YulExpressionStatement","src":"5829:55:32"}]},"name":"abi_encode_tuple_t_uint48_t_uint48__to_t_uint48_t_uint48__fromStack_reversed","nativeSrc":"5604:286:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5690:9:32","nodeType":"YulTypedName","src":"5690:9:32","type":""},{"name":"value1","nativeSrc":"5701:6:32","nodeType":"YulTypedName","src":"5701:6:32","type":""},{"name":"value0","nativeSrc":"5709:6:32","nodeType":"YulTypedName","src":"5709:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5720:4:32","nodeType":"YulTypedName","src":"5720:4:32","type":""}],"src":"5604:286:32"},{"body":{"nativeSrc":"5979:263:32","nodeType":"YulBlock","src":"5979:263:32","statements":[{"body":{"nativeSrc":"6025:16:32","nodeType":"YulBlock","src":"6025:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6034:1:32","nodeType":"YulLiteral","src":"6034:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"6037:1:32","nodeType":"YulLiteral","src":"6037:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6027:6:32","nodeType":"YulIdentifier","src":"6027:6:32"},"nativeSrc":"6027:12:32","nodeType":"YulFunctionCall","src":"6027:12:32"},"nativeSrc":"6027:12:32","nodeType":"YulExpressionStatement","src":"6027:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6000:7:32","nodeType":"YulIdentifier","src":"6000:7:32"},{"name":"headStart","nativeSrc":"6009:9:32","nodeType":"YulIdentifier","src":"6009:9:32"}],"functionName":{"name":"sub","nativeSrc":"5996:3:32","nodeType":"YulIdentifier","src":"5996:3:32"},"nativeSrc":"5996:23:32","nodeType":"YulFunctionCall","src":"5996:23:32"},{"kind":"number","nativeSrc":"6021:2:32","nodeType":"YulLiteral","src":"6021:2:32","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5992:3:32","nodeType":"YulIdentifier","src":"5992:3:32"},"nativeSrc":"5992:32:32","nodeType":"YulFunctionCall","src":"5992:32:32"},"nativeSrc":"5989:52:32","nodeType":"YulIf","src":"5989:52:32"},{"nativeSrc":"6050:39:32","nodeType":"YulAssignment","src":"6050:39:32","value":{"arguments":[{"name":"headStart","nativeSrc":"6079:9:32","nodeType":"YulIdentifier","src":"6079:9:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"6060:18:32","nodeType":"YulIdentifier","src":"6060:18:32"},"nativeSrc":"6060:29:32","nodeType":"YulFunctionCall","src":"6060:29:32"},"variableNames":[{"name":"value0","nativeSrc":"6050:6:32","nodeType":"YulIdentifier","src":"6050:6:32"}]},{"nativeSrc":"6098:45:32","nodeType":"YulVariableDeclaration","src":"6098:45:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6128:9:32","nodeType":"YulIdentifier","src":"6128:9:32"},{"kind":"number","nativeSrc":"6139:2:32","nodeType":"YulLiteral","src":"6139:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6124:3:32","nodeType":"YulIdentifier","src":"6124:3:32"},"nativeSrc":"6124:18:32","nodeType":"YulFunctionCall","src":"6124:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"6111:12:32","nodeType":"YulIdentifier","src":"6111:12:32"},"nativeSrc":"6111:32:32","nodeType":"YulFunctionCall","src":"6111:32:32"},"variables":[{"name":"value","nativeSrc":"6102:5:32","nodeType":"YulTypedName","src":"6102:5:32","type":""}]},{"body":{"nativeSrc":"6196:16:32","nodeType":"YulBlock","src":"6196:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6205:1:32","nodeType":"YulLiteral","src":"6205:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"6208:1:32","nodeType":"YulLiteral","src":"6208:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6198:6:32","nodeType":"YulIdentifier","src":"6198:6:32"},"nativeSrc":"6198:12:32","nodeType":"YulFunctionCall","src":"6198:12:32"},"nativeSrc":"6198:12:32","nodeType":"YulExpressionStatement","src":"6198:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6165:5:32","nodeType":"YulIdentifier","src":"6165:5:32"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6186:5:32","nodeType":"YulIdentifier","src":"6186:5:32"}],"functionName":{"name":"iszero","nativeSrc":"6179:6:32","nodeType":"YulIdentifier","src":"6179:6:32"},"nativeSrc":"6179:13:32","nodeType":"YulFunctionCall","src":"6179:13:32"}],"functionName":{"name":"iszero","nativeSrc":"6172:6:32","nodeType":"YulIdentifier","src":"6172:6:32"},"nativeSrc":"6172:21:32","nodeType":"YulFunctionCall","src":"6172:21:32"}],"functionName":{"name":"eq","nativeSrc":"6162:2:32","nodeType":"YulIdentifier","src":"6162:2:32"},"nativeSrc":"6162:32:32","nodeType":"YulFunctionCall","src":"6162:32:32"}],"functionName":{"name":"iszero","nativeSrc":"6155:6:32","nodeType":"YulIdentifier","src":"6155:6:32"},"nativeSrc":"6155:40:32","nodeType":"YulFunctionCall","src":"6155:40:32"},"nativeSrc":"6152:60:32","nodeType":"YulIf","src":"6152:60:32"},{"nativeSrc":"6221:15:32","nodeType":"YulAssignment","src":"6221:15:32","value":{"name":"value","nativeSrc":"6231:5:32","nodeType":"YulIdentifier","src":"6231:5:32"},"variableNames":[{"name":"value1","nativeSrc":"6221:6:32","nodeType":"YulIdentifier","src":"6221:6:32"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nativeSrc":"5895:347:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5937:9:32","nodeType":"YulTypedName","src":"5937:9:32","type":""},{"name":"dataEnd","nativeSrc":"5948:7:32","nodeType":"YulTypedName","src":"5948:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5960:6:32","nodeType":"YulTypedName","src":"5960:6:32","type":""},{"name":"value1","nativeSrc":"5968:6:32","nodeType":"YulTypedName","src":"5968:6:32","type":""}],"src":"5895:347:32"},{"body":{"nativeSrc":"6279:95:32","nodeType":"YulBlock","src":"6279:95:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6296:1:32","nodeType":"YulLiteral","src":"6296:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"6303:3:32","nodeType":"YulLiteral","src":"6303:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"6308:10:32","nodeType":"YulLiteral","src":"6308:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"6299:3:32","nodeType":"YulIdentifier","src":"6299:3:32"},"nativeSrc":"6299:20:32","nodeType":"YulFunctionCall","src":"6299:20:32"}],"functionName":{"name":"mstore","nativeSrc":"6289:6:32","nodeType":"YulIdentifier","src":"6289:6:32"},"nativeSrc":"6289:31:32","nodeType":"YulFunctionCall","src":"6289:31:32"},"nativeSrc":"6289:31:32","nodeType":"YulExpressionStatement","src":"6289:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6336:1:32","nodeType":"YulLiteral","src":"6336:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"6339:4:32","nodeType":"YulLiteral","src":"6339:4:32","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"6329:6:32","nodeType":"YulIdentifier","src":"6329:6:32"},"nativeSrc":"6329:15:32","nodeType":"YulFunctionCall","src":"6329:15:32"},"nativeSrc":"6329:15:32","nodeType":"YulExpressionStatement","src":"6329:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6360:1:32","nodeType":"YulLiteral","src":"6360:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"6363:4:32","nodeType":"YulLiteral","src":"6363:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"6353:6:32","nodeType":"YulIdentifier","src":"6353:6:32"},"nativeSrc":"6353:15:32","nodeType":"YulFunctionCall","src":"6353:15:32"},"nativeSrc":"6353:15:32","nodeType":"YulExpressionStatement","src":"6353:15:32"}]},"name":"panic_error_0x41","nativeSrc":"6247:127:32","nodeType":"YulFunctionDefinition","src":"6247:127:32"},{"body":{"nativeSrc":"6509:1077:32","nodeType":"YulBlock","src":"6509:1077:32","statements":[{"body":{"nativeSrc":"6556:16:32","nodeType":"YulBlock","src":"6556:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6565:1:32","nodeType":"YulLiteral","src":"6565:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"6568:1:32","nodeType":"YulLiteral","src":"6568:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6558:6:32","nodeType":"YulIdentifier","src":"6558:6:32"},"nativeSrc":"6558:12:32","nodeType":"YulFunctionCall","src":"6558:12:32"},"nativeSrc":"6558:12:32","nodeType":"YulExpressionStatement","src":"6558:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6530:7:32","nodeType":"YulIdentifier","src":"6530:7:32"},{"name":"headStart","nativeSrc":"6539:9:32","nodeType":"YulIdentifier","src":"6539:9:32"}],"functionName":{"name":"sub","nativeSrc":"6526:3:32","nodeType":"YulIdentifier","src":"6526:3:32"},"nativeSrc":"6526:23:32","nodeType":"YulFunctionCall","src":"6526:23:32"},{"kind":"number","nativeSrc":"6551:3:32","nodeType":"YulLiteral","src":"6551:3:32","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"6522:3:32","nodeType":"YulIdentifier","src":"6522:3:32"},"nativeSrc":"6522:33:32","nodeType":"YulFunctionCall","src":"6522:33:32"},"nativeSrc":"6519:53:32","nodeType":"YulIf","src":"6519:53:32"},{"nativeSrc":"6581:39:32","nodeType":"YulAssignment","src":"6581:39:32","value":{"arguments":[{"name":"headStart","nativeSrc":"6610:9:32","nodeType":"YulIdentifier","src":"6610:9:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"6591:18:32","nodeType":"YulIdentifier","src":"6591:18:32"},"nativeSrc":"6591:29:32","nodeType":"YulFunctionCall","src":"6591:29:32"},"variableNames":[{"name":"value0","nativeSrc":"6581:6:32","nodeType":"YulIdentifier","src":"6581:6:32"}]},{"nativeSrc":"6629:48:32","nodeType":"YulAssignment","src":"6629:48:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6662:9:32","nodeType":"YulIdentifier","src":"6662:9:32"},{"kind":"number","nativeSrc":"6673:2:32","nodeType":"YulLiteral","src":"6673:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6658:3:32","nodeType":"YulIdentifier","src":"6658:3:32"},"nativeSrc":"6658:18:32","nodeType":"YulFunctionCall","src":"6658:18:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"6639:18:32","nodeType":"YulIdentifier","src":"6639:18:32"},"nativeSrc":"6639:38:32","nodeType":"YulFunctionCall","src":"6639:38:32"},"variableNames":[{"name":"value1","nativeSrc":"6629:6:32","nodeType":"YulIdentifier","src":"6629:6:32"}]},{"nativeSrc":"6686:14:32","nodeType":"YulVariableDeclaration","src":"6686:14:32","value":{"kind":"number","nativeSrc":"6699:1:32","nodeType":"YulLiteral","src":"6699:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6690:5:32","nodeType":"YulTypedName","src":"6690:5:32","type":""}]},{"nativeSrc":"6709:41:32","nodeType":"YulAssignment","src":"6709:41:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6735:9:32","nodeType":"YulIdentifier","src":"6735:9:32"},{"kind":"number","nativeSrc":"6746:2:32","nodeType":"YulLiteral","src":"6746:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6731:3:32","nodeType":"YulIdentifier","src":"6731:3:32"},"nativeSrc":"6731:18:32","nodeType":"YulFunctionCall","src":"6731:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"6718:12:32","nodeType":"YulIdentifier","src":"6718:12:32"},"nativeSrc":"6718:32:32","nodeType":"YulFunctionCall","src":"6718:32:32"},"variableNames":[{"name":"value","nativeSrc":"6709:5:32","nodeType":"YulIdentifier","src":"6709:5:32"}]},{"nativeSrc":"6759:15:32","nodeType":"YulAssignment","src":"6759:15:32","value":{"name":"value","nativeSrc":"6769:5:32","nodeType":"YulIdentifier","src":"6769:5:32"},"variableNames":[{"name":"value2","nativeSrc":"6759:6:32","nodeType":"YulIdentifier","src":"6759:6:32"}]},{"nativeSrc":"6783:46:32","nodeType":"YulVariableDeclaration","src":"6783:46:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6814:9:32","nodeType":"YulIdentifier","src":"6814:9:32"},{"kind":"number","nativeSrc":"6825:2:32","nodeType":"YulLiteral","src":"6825:2:32","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6810:3:32","nodeType":"YulIdentifier","src":"6810:3:32"},"nativeSrc":"6810:18:32","nodeType":"YulFunctionCall","src":"6810:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"6797:12:32","nodeType":"YulIdentifier","src":"6797:12:32"},"nativeSrc":"6797:32:32","nodeType":"YulFunctionCall","src":"6797:32:32"},"variables":[{"name":"offset","nativeSrc":"6787:6:32","nodeType":"YulTypedName","src":"6787:6:32","type":""}]},{"body":{"nativeSrc":"6872:16:32","nodeType":"YulBlock","src":"6872:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6881:1:32","nodeType":"YulLiteral","src":"6881:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"6884:1:32","nodeType":"YulLiteral","src":"6884:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6874:6:32","nodeType":"YulIdentifier","src":"6874:6:32"},"nativeSrc":"6874:12:32","nodeType":"YulFunctionCall","src":"6874:12:32"},"nativeSrc":"6874:12:32","nodeType":"YulExpressionStatement","src":"6874:12:32"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6844:6:32","nodeType":"YulIdentifier","src":"6844:6:32"},{"kind":"number","nativeSrc":"6852:18:32","nodeType":"YulLiteral","src":"6852:18:32","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6841:2:32","nodeType":"YulIdentifier","src":"6841:2:32"},"nativeSrc":"6841:30:32","nodeType":"YulFunctionCall","src":"6841:30:32"},"nativeSrc":"6838:50:32","nodeType":"YulIf","src":"6838:50:32"},{"nativeSrc":"6897:32:32","nodeType":"YulVariableDeclaration","src":"6897:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"6911:9:32","nodeType":"YulIdentifier","src":"6911:9:32"},{"name":"offset","nativeSrc":"6922:6:32","nodeType":"YulIdentifier","src":"6922:6:32"}],"functionName":{"name":"add","nativeSrc":"6907:3:32","nodeType":"YulIdentifier","src":"6907:3:32"},"nativeSrc":"6907:22:32","nodeType":"YulFunctionCall","src":"6907:22:32"},"variables":[{"name":"_1","nativeSrc":"6901:2:32","nodeType":"YulTypedName","src":"6901:2:32","type":""}]},{"body":{"nativeSrc":"6977:16:32","nodeType":"YulBlock","src":"6977:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6986:1:32","nodeType":"YulLiteral","src":"6986:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"6989:1:32","nodeType":"YulLiteral","src":"6989:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6979:6:32","nodeType":"YulIdentifier","src":"6979:6:32"},"nativeSrc":"6979:12:32","nodeType":"YulFunctionCall","src":"6979:12:32"},"nativeSrc":"6979:12:32","nodeType":"YulExpressionStatement","src":"6979:12:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"6956:2:32","nodeType":"YulIdentifier","src":"6956:2:32"},{"kind":"number","nativeSrc":"6960:4:32","nodeType":"YulLiteral","src":"6960:4:32","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"6952:3:32","nodeType":"YulIdentifier","src":"6952:3:32"},"nativeSrc":"6952:13:32","nodeType":"YulFunctionCall","src":"6952:13:32"},{"name":"dataEnd","nativeSrc":"6967:7:32","nodeType":"YulIdentifier","src":"6967:7:32"}],"functionName":{"name":"slt","nativeSrc":"6948:3:32","nodeType":"YulIdentifier","src":"6948:3:32"},"nativeSrc":"6948:27:32","nodeType":"YulFunctionCall","src":"6948:27:32"}],"functionName":{"name":"iszero","nativeSrc":"6941:6:32","nodeType":"YulIdentifier","src":"6941:6:32"},"nativeSrc":"6941:35:32","nodeType":"YulFunctionCall","src":"6941:35:32"},"nativeSrc":"6938:55:32","nodeType":"YulIf","src":"6938:55:32"},{"nativeSrc":"7002:30:32","nodeType":"YulVariableDeclaration","src":"7002:30:32","value":{"arguments":[{"name":"_1","nativeSrc":"7029:2:32","nodeType":"YulIdentifier","src":"7029:2:32"}],"functionName":{"name":"calldataload","nativeSrc":"7016:12:32","nodeType":"YulIdentifier","src":"7016:12:32"},"nativeSrc":"7016:16:32","nodeType":"YulFunctionCall","src":"7016:16:32"},"variables":[{"name":"length","nativeSrc":"7006:6:32","nodeType":"YulTypedName","src":"7006:6:32","type":""}]},{"body":{"nativeSrc":"7075:22:32","nodeType":"YulBlock","src":"7075:22:32","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"7077:16:32","nodeType":"YulIdentifier","src":"7077:16:32"},"nativeSrc":"7077:18:32","nodeType":"YulFunctionCall","src":"7077:18:32"},"nativeSrc":"7077:18:32","nodeType":"YulExpressionStatement","src":"7077:18:32"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"7047:6:32","nodeType":"YulIdentifier","src":"7047:6:32"},{"kind":"number","nativeSrc":"7055:18:32","nodeType":"YulLiteral","src":"7055:18:32","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7044:2:32","nodeType":"YulIdentifier","src":"7044:2:32"},"nativeSrc":"7044:30:32","nodeType":"YulFunctionCall","src":"7044:30:32"},"nativeSrc":"7041:56:32","nodeType":"YulIf","src":"7041:56:32"},{"nativeSrc":"7106:23:32","nodeType":"YulVariableDeclaration","src":"7106:23:32","value":{"arguments":[{"kind":"number","nativeSrc":"7126:2:32","nodeType":"YulLiteral","src":"7126:2:32","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"7120:5:32","nodeType":"YulIdentifier","src":"7120:5:32"},"nativeSrc":"7120:9:32","nodeType":"YulFunctionCall","src":"7120:9:32"},"variables":[{"name":"memPtr","nativeSrc":"7110:6:32","nodeType":"YulTypedName","src":"7110:6:32","type":""}]},{"nativeSrc":"7138:85:32","nodeType":"YulVariableDeclaration","src":"7138:85:32","value":{"arguments":[{"name":"memPtr","nativeSrc":"7160:6:32","nodeType":"YulIdentifier","src":"7160:6:32"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"7184:6:32","nodeType":"YulIdentifier","src":"7184:6:32"},{"kind":"number","nativeSrc":"7192:4:32","nodeType":"YulLiteral","src":"7192:4:32","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"7180:3:32","nodeType":"YulIdentifier","src":"7180:3:32"},"nativeSrc":"7180:17:32","nodeType":"YulFunctionCall","src":"7180:17:32"},{"arguments":[{"kind":"number","nativeSrc":"7203:2:32","nodeType":"YulLiteral","src":"7203:2:32","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"7199:3:32","nodeType":"YulIdentifier","src":"7199:3:32"},"nativeSrc":"7199:7:32","nodeType":"YulFunctionCall","src":"7199:7:32"}],"functionName":{"name":"and","nativeSrc":"7176:3:32","nodeType":"YulIdentifier","src":"7176:3:32"},"nativeSrc":"7176:31:32","nodeType":"YulFunctionCall","src":"7176:31:32"},{"kind":"number","nativeSrc":"7209:2:32","nodeType":"YulLiteral","src":"7209:2:32","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"7172:3:32","nodeType":"YulIdentifier","src":"7172:3:32"},"nativeSrc":"7172:40:32","nodeType":"YulFunctionCall","src":"7172:40:32"},{"arguments":[{"kind":"number","nativeSrc":"7218:2:32","nodeType":"YulLiteral","src":"7218:2:32","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"7214:3:32","nodeType":"YulIdentifier","src":"7214:3:32"},"nativeSrc":"7214:7:32","nodeType":"YulFunctionCall","src":"7214:7:32"}],"functionName":{"name":"and","nativeSrc":"7168:3:32","nodeType":"YulIdentifier","src":"7168:3:32"},"nativeSrc":"7168:54:32","nodeType":"YulFunctionCall","src":"7168:54:32"}],"functionName":{"name":"add","nativeSrc":"7156:3:32","nodeType":"YulIdentifier","src":"7156:3:32"},"nativeSrc":"7156:67:32","nodeType":"YulFunctionCall","src":"7156:67:32"},"variables":[{"name":"newFreePtr","nativeSrc":"7142:10:32","nodeType":"YulTypedName","src":"7142:10:32","type":""}]},{"body":{"nativeSrc":"7298:22:32","nodeType":"YulBlock","src":"7298:22:32","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"7300:16:32","nodeType":"YulIdentifier","src":"7300:16:32"},"nativeSrc":"7300:18:32","nodeType":"YulFunctionCall","src":"7300:18:32"},"nativeSrc":"7300:18:32","nodeType":"YulExpressionStatement","src":"7300:18:32"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"7241:10:32","nodeType":"YulIdentifier","src":"7241:10:32"},{"kind":"number","nativeSrc":"7253:18:32","nodeType":"YulLiteral","src":"7253:18:32","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7238:2:32","nodeType":"YulIdentifier","src":"7238:2:32"},"nativeSrc":"7238:34:32","nodeType":"YulFunctionCall","src":"7238:34:32"},{"arguments":[{"name":"newFreePtr","nativeSrc":"7277:10:32","nodeType":"YulIdentifier","src":"7277:10:32"},{"name":"memPtr","nativeSrc":"7289:6:32","nodeType":"YulIdentifier","src":"7289:6:32"}],"functionName":{"name":"lt","nativeSrc":"7274:2:32","nodeType":"YulIdentifier","src":"7274:2:32"},"nativeSrc":"7274:22:32","nodeType":"YulFunctionCall","src":"7274:22:32"}],"functionName":{"name":"or","nativeSrc":"7235:2:32","nodeType":"YulIdentifier","src":"7235:2:32"},"nativeSrc":"7235:62:32","nodeType":"YulFunctionCall","src":"7235:62:32"},"nativeSrc":"7232:88:32","nodeType":"YulIf","src":"7232:88:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7336:2:32","nodeType":"YulLiteral","src":"7336:2:32","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"7340:10:32","nodeType":"YulIdentifier","src":"7340:10:32"}],"functionName":{"name":"mstore","nativeSrc":"7329:6:32","nodeType":"YulIdentifier","src":"7329:6:32"},"nativeSrc":"7329:22:32","nodeType":"YulFunctionCall","src":"7329:22:32"},"nativeSrc":"7329:22:32","nodeType":"YulExpressionStatement","src":"7329:22:32"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"7367:6:32","nodeType":"YulIdentifier","src":"7367:6:32"},{"name":"length","nativeSrc":"7375:6:32","nodeType":"YulIdentifier","src":"7375:6:32"}],"functionName":{"name":"mstore","nativeSrc":"7360:6:32","nodeType":"YulIdentifier","src":"7360:6:32"},"nativeSrc":"7360:22:32","nodeType":"YulFunctionCall","src":"7360:22:32"},"nativeSrc":"7360:22:32","nodeType":"YulExpressionStatement","src":"7360:22:32"},{"body":{"nativeSrc":"7432:16:32","nodeType":"YulBlock","src":"7432:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7441:1:32","nodeType":"YulLiteral","src":"7441:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"7444:1:32","nodeType":"YulLiteral","src":"7444:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7434:6:32","nodeType":"YulIdentifier","src":"7434:6:32"},"nativeSrc":"7434:12:32","nodeType":"YulFunctionCall","src":"7434:12:32"},"nativeSrc":"7434:12:32","nodeType":"YulExpressionStatement","src":"7434:12:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7405:2:32","nodeType":"YulIdentifier","src":"7405:2:32"},{"name":"length","nativeSrc":"7409:6:32","nodeType":"YulIdentifier","src":"7409:6:32"}],"functionName":{"name":"add","nativeSrc":"7401:3:32","nodeType":"YulIdentifier","src":"7401:3:32"},"nativeSrc":"7401:15:32","nodeType":"YulFunctionCall","src":"7401:15:32"},{"kind":"number","nativeSrc":"7418:2:32","nodeType":"YulLiteral","src":"7418:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7397:3:32","nodeType":"YulIdentifier","src":"7397:3:32"},"nativeSrc":"7397:24:32","nodeType":"YulFunctionCall","src":"7397:24:32"},{"name":"dataEnd","nativeSrc":"7423:7:32","nodeType":"YulIdentifier","src":"7423:7:32"}],"functionName":{"name":"gt","nativeSrc":"7394:2:32","nodeType":"YulIdentifier","src":"7394:2:32"},"nativeSrc":"7394:37:32","nodeType":"YulFunctionCall","src":"7394:37:32"},"nativeSrc":"7391:57:32","nodeType":"YulIf","src":"7391:57:32"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"7474:6:32","nodeType":"YulIdentifier","src":"7474:6:32"},{"kind":"number","nativeSrc":"7482:2:32","nodeType":"YulLiteral","src":"7482:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7470:3:32","nodeType":"YulIdentifier","src":"7470:3:32"},"nativeSrc":"7470:15:32","nodeType":"YulFunctionCall","src":"7470:15:32"},{"arguments":[{"name":"_1","nativeSrc":"7491:2:32","nodeType":"YulIdentifier","src":"7491:2:32"},{"kind":"number","nativeSrc":"7495:2:32","nodeType":"YulLiteral","src":"7495:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7487:3:32","nodeType":"YulIdentifier","src":"7487:3:32"},"nativeSrc":"7487:11:32","nodeType":"YulFunctionCall","src":"7487:11:32"},{"name":"length","nativeSrc":"7500:6:32","nodeType":"YulIdentifier","src":"7500:6:32"}],"functionName":{"name":"calldatacopy","nativeSrc":"7457:12:32","nodeType":"YulIdentifier","src":"7457:12:32"},"nativeSrc":"7457:50:32","nodeType":"YulFunctionCall","src":"7457:50:32"},"nativeSrc":"7457:50:32","nodeType":"YulExpressionStatement","src":"7457:50:32"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"7531:6:32","nodeType":"YulIdentifier","src":"7531:6:32"},{"name":"length","nativeSrc":"7539:6:32","nodeType":"YulIdentifier","src":"7539:6:32"}],"functionName":{"name":"add","nativeSrc":"7527:3:32","nodeType":"YulIdentifier","src":"7527:3:32"},"nativeSrc":"7527:19:32","nodeType":"YulFunctionCall","src":"7527:19:32"},{"kind":"number","nativeSrc":"7548:2:32","nodeType":"YulLiteral","src":"7548:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7523:3:32","nodeType":"YulIdentifier","src":"7523:3:32"},"nativeSrc":"7523:28:32","nodeType":"YulFunctionCall","src":"7523:28:32"},{"kind":"number","nativeSrc":"7553:1:32","nodeType":"YulLiteral","src":"7553:1:32","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"7516:6:32","nodeType":"YulIdentifier","src":"7516:6:32"},"nativeSrc":"7516:39:32","nodeType":"YulFunctionCall","src":"7516:39:32"},"nativeSrc":"7516:39:32","nodeType":"YulExpressionStatement","src":"7516:39:32"},{"nativeSrc":"7564:16:32","nodeType":"YulAssignment","src":"7564:16:32","value":{"name":"memPtr","nativeSrc":"7574:6:32","nodeType":"YulIdentifier","src":"7574:6:32"},"variableNames":[{"name":"value3","nativeSrc":"7564:6:32","nodeType":"YulIdentifier","src":"7564:6:32"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nativeSrc":"6379:1207:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6451:9:32","nodeType":"YulTypedName","src":"6451:9:32","type":""},{"name":"dataEnd","nativeSrc":"6462:7:32","nodeType":"YulTypedName","src":"6462:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6474:6:32","nodeType":"YulTypedName","src":"6474:6:32","type":""},{"name":"value1","nativeSrc":"6482:6:32","nodeType":"YulTypedName","src":"6482:6:32","type":""},{"name":"value2","nativeSrc":"6490:6:32","nodeType":"YulTypedName","src":"6490:6:32","type":""},{"name":"value3","nativeSrc":"6498:6:32","nodeType":"YulTypedName","src":"6498:6:32","type":""}],"src":"6379:1207:32"},{"body":{"nativeSrc":"7718:166:32","nodeType":"YulBlock","src":"7718:166:32","statements":[{"nativeSrc":"7728:26:32","nodeType":"YulAssignment","src":"7728:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"7740:9:32","nodeType":"YulIdentifier","src":"7740:9:32"},{"kind":"number","nativeSrc":"7751:2:32","nodeType":"YulLiteral","src":"7751:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7736:3:32","nodeType":"YulIdentifier","src":"7736:3:32"},"nativeSrc":"7736:18:32","nodeType":"YulFunctionCall","src":"7736:18:32"},"variableNames":[{"name":"tail","nativeSrc":"7728:4:32","nodeType":"YulIdentifier","src":"7728:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7770:9:32","nodeType":"YulIdentifier","src":"7770:9:32"},{"arguments":[{"name":"value0","nativeSrc":"7785:6:32","nodeType":"YulIdentifier","src":"7785:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7801:3:32","nodeType":"YulLiteral","src":"7801:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"7806:1:32","nodeType":"YulLiteral","src":"7806:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7797:3:32","nodeType":"YulIdentifier","src":"7797:3:32"},"nativeSrc":"7797:11:32","nodeType":"YulFunctionCall","src":"7797:11:32"},{"kind":"number","nativeSrc":"7810:1:32","nodeType":"YulLiteral","src":"7810:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7793:3:32","nodeType":"YulIdentifier","src":"7793:3:32"},"nativeSrc":"7793:19:32","nodeType":"YulFunctionCall","src":"7793:19:32"}],"functionName":{"name":"and","nativeSrc":"7781:3:32","nodeType":"YulIdentifier","src":"7781:3:32"},"nativeSrc":"7781:32:32","nodeType":"YulFunctionCall","src":"7781:32:32"}],"functionName":{"name":"mstore","nativeSrc":"7763:6:32","nodeType":"YulIdentifier","src":"7763:6:32"},"nativeSrc":"7763:51:32","nodeType":"YulFunctionCall","src":"7763:51:32"},"nativeSrc":"7763:51:32","nodeType":"YulExpressionStatement","src":"7763:51:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7834:9:32","nodeType":"YulIdentifier","src":"7834:9:32"},{"kind":"number","nativeSrc":"7845:2:32","nodeType":"YulLiteral","src":"7845:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7830:3:32","nodeType":"YulIdentifier","src":"7830:3:32"},"nativeSrc":"7830:18:32","nodeType":"YulFunctionCall","src":"7830:18:32"},{"arguments":[{"name":"value1","nativeSrc":"7854:6:32","nodeType":"YulIdentifier","src":"7854:6:32"},{"kind":"number","nativeSrc":"7862:14:32","nodeType":"YulLiteral","src":"7862:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"7850:3:32","nodeType":"YulIdentifier","src":"7850:3:32"},"nativeSrc":"7850:27:32","nodeType":"YulFunctionCall","src":"7850:27:32"}],"functionName":{"name":"mstore","nativeSrc":"7823:6:32","nodeType":"YulIdentifier","src":"7823:6:32"},"nativeSrc":"7823:55:32","nodeType":"YulFunctionCall","src":"7823:55:32"},"nativeSrc":"7823:55:32","nodeType":"YulExpressionStatement","src":"7823:55:32"}]},"name":"abi_encode_tuple_t_address_t_uint48__to_t_address_t_uint48__fromStack_reversed","nativeSrc":"7591:293:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7679:9:32","nodeType":"YulTypedName","src":"7679:9:32","type":""},{"name":"value1","nativeSrc":"7690:6:32","nodeType":"YulTypedName","src":"7690:6:32","type":""},{"name":"value0","nativeSrc":"7698:6:32","nodeType":"YulTypedName","src":"7698:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7709:4:32","nodeType":"YulTypedName","src":"7709:4:32","type":""}],"src":"7591:293:32"},{"body":{"nativeSrc":"7976:173:32","nodeType":"YulBlock","src":"7976:173:32","statements":[{"body":{"nativeSrc":"8022:16:32","nodeType":"YulBlock","src":"8022:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8031:1:32","nodeType":"YulLiteral","src":"8031:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"8034:1:32","nodeType":"YulLiteral","src":"8034:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8024:6:32","nodeType":"YulIdentifier","src":"8024:6:32"},"nativeSrc":"8024:12:32","nodeType":"YulFunctionCall","src":"8024:12:32"},"nativeSrc":"8024:12:32","nodeType":"YulExpressionStatement","src":"8024:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7997:7:32","nodeType":"YulIdentifier","src":"7997:7:32"},{"name":"headStart","nativeSrc":"8006:9:32","nodeType":"YulIdentifier","src":"8006:9:32"}],"functionName":{"name":"sub","nativeSrc":"7993:3:32","nodeType":"YulIdentifier","src":"7993:3:32"},"nativeSrc":"7993:23:32","nodeType":"YulFunctionCall","src":"7993:23:32"},{"kind":"number","nativeSrc":"8018:2:32","nodeType":"YulLiteral","src":"8018:2:32","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7989:3:32","nodeType":"YulIdentifier","src":"7989:3:32"},"nativeSrc":"7989:32:32","nodeType":"YulFunctionCall","src":"7989:32:32"},"nativeSrc":"7986:52:32","nodeType":"YulIf","src":"7986:52:32"},{"nativeSrc":"8047:39:32","nodeType":"YulAssignment","src":"8047:39:32","value":{"arguments":[{"name":"headStart","nativeSrc":"8076:9:32","nodeType":"YulIdentifier","src":"8076:9:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"8057:18:32","nodeType":"YulIdentifier","src":"8057:18:32"},"nativeSrc":"8057:29:32","nodeType":"YulFunctionCall","src":"8057:29:32"},"variableNames":[{"name":"value0","nativeSrc":"8047:6:32","nodeType":"YulIdentifier","src":"8047:6:32"}]},{"nativeSrc":"8095:48:32","nodeType":"YulAssignment","src":"8095:48:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8128:9:32","nodeType":"YulIdentifier","src":"8128:9:32"},{"kind":"number","nativeSrc":"8139:2:32","nodeType":"YulLiteral","src":"8139:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8124:3:32","nodeType":"YulIdentifier","src":"8124:3:32"},"nativeSrc":"8124:18:32","nodeType":"YulFunctionCall","src":"8124:18:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"8105:18:32","nodeType":"YulIdentifier","src":"8105:18:32"},"nativeSrc":"8105:38:32","nodeType":"YulFunctionCall","src":"8105:38:32"},"variableNames":[{"name":"value1","nativeSrc":"8095:6:32","nodeType":"YulIdentifier","src":"8095:6:32"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"7889:260:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7934:9:32","nodeType":"YulTypedName","src":"7934:9:32","type":""},{"name":"dataEnd","nativeSrc":"7945:7:32","nodeType":"YulTypedName","src":"7945:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7957:6:32","nodeType":"YulTypedName","src":"7957:6:32","type":""},{"name":"value1","nativeSrc":"7965:6:32","nodeType":"YulTypedName","src":"7965:6:32","type":""}],"src":"7889:260:32"},{"body":{"nativeSrc":"8253:109:32","nodeType":"YulBlock","src":"8253:109:32","statements":[{"nativeSrc":"8263:26:32","nodeType":"YulAssignment","src":"8263:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"8275:9:32","nodeType":"YulIdentifier","src":"8275:9:32"},{"kind":"number","nativeSrc":"8286:2:32","nodeType":"YulLiteral","src":"8286:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8271:3:32","nodeType":"YulIdentifier","src":"8271:3:32"},"nativeSrc":"8271:18:32","nodeType":"YulFunctionCall","src":"8271:18:32"},"variableNames":[{"name":"tail","nativeSrc":"8263:4:32","nodeType":"YulIdentifier","src":"8263:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8305:9:32","nodeType":"YulIdentifier","src":"8305:9:32"},{"arguments":[{"name":"value0","nativeSrc":"8320:6:32","nodeType":"YulIdentifier","src":"8320:6:32"},{"kind":"number","nativeSrc":"8328:26:32","nodeType":"YulLiteral","src":"8328:26:32","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"8316:3:32","nodeType":"YulIdentifier","src":"8316:3:32"},"nativeSrc":"8316:39:32","nodeType":"YulFunctionCall","src":"8316:39:32"}],"functionName":{"name":"mstore","nativeSrc":"8298:6:32","nodeType":"YulIdentifier","src":"8298:6:32"},"nativeSrc":"8298:58:32","nodeType":"YulFunctionCall","src":"8298:58:32"},"nativeSrc":"8298:58:32","nodeType":"YulExpressionStatement","src":"8298:58:32"}]},"name":"abi_encode_tuple_t_uint96__to_t_uint96__fromStack_reversed","nativeSrc":"8154:208:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8222:9:32","nodeType":"YulTypedName","src":"8222:9:32","type":""},{"name":"value0","nativeSrc":"8233:6:32","nodeType":"YulTypedName","src":"8233:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8244:4:32","nodeType":"YulTypedName","src":"8244:4:32","type":""}],"src":"8154:208:32"},{"body":{"nativeSrc":"8422:325:32","nodeType":"YulBlock","src":"8422:325:32","statements":[{"nativeSrc":"8432:22:32","nodeType":"YulAssignment","src":"8432:22:32","value":{"arguments":[{"kind":"number","nativeSrc":"8446:1:32","nodeType":"YulLiteral","src":"8446:1:32","type":"","value":"1"},{"name":"data","nativeSrc":"8449:4:32","nodeType":"YulIdentifier","src":"8449:4:32"}],"functionName":{"name":"shr","nativeSrc":"8442:3:32","nodeType":"YulIdentifier","src":"8442:3:32"},"nativeSrc":"8442:12:32","nodeType":"YulFunctionCall","src":"8442:12:32"},"variableNames":[{"name":"length","nativeSrc":"8432:6:32","nodeType":"YulIdentifier","src":"8432:6:32"}]},{"nativeSrc":"8463:38:32","nodeType":"YulVariableDeclaration","src":"8463:38:32","value":{"arguments":[{"name":"data","nativeSrc":"8493:4:32","nodeType":"YulIdentifier","src":"8493:4:32"},{"kind":"number","nativeSrc":"8499:1:32","nodeType":"YulLiteral","src":"8499:1:32","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"8489:3:32","nodeType":"YulIdentifier","src":"8489:3:32"},"nativeSrc":"8489:12:32","nodeType":"YulFunctionCall","src":"8489:12:32"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"8467:18:32","nodeType":"YulTypedName","src":"8467:18:32","type":""}]},{"body":{"nativeSrc":"8540:31:32","nodeType":"YulBlock","src":"8540:31:32","statements":[{"nativeSrc":"8542:27:32","nodeType":"YulAssignment","src":"8542:27:32","value":{"arguments":[{"name":"length","nativeSrc":"8556:6:32","nodeType":"YulIdentifier","src":"8556:6:32"},{"kind":"number","nativeSrc":"8564:4:32","nodeType":"YulLiteral","src":"8564:4:32","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"8552:3:32","nodeType":"YulIdentifier","src":"8552:3:32"},"nativeSrc":"8552:17:32","nodeType":"YulFunctionCall","src":"8552:17:32"},"variableNames":[{"name":"length","nativeSrc":"8542:6:32","nodeType":"YulIdentifier","src":"8542:6:32"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8520:18:32","nodeType":"YulIdentifier","src":"8520:18:32"}],"functionName":{"name":"iszero","nativeSrc":"8513:6:32","nodeType":"YulIdentifier","src":"8513:6:32"},"nativeSrc":"8513:26:32","nodeType":"YulFunctionCall","src":"8513:26:32"},"nativeSrc":"8510:61:32","nodeType":"YulIf","src":"8510:61:32"},{"body":{"nativeSrc":"8630:111:32","nodeType":"YulBlock","src":"8630:111:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8651:1:32","nodeType":"YulLiteral","src":"8651:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8658:3:32","nodeType":"YulLiteral","src":"8658:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"8663:10:32","nodeType":"YulLiteral","src":"8663:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8654:3:32","nodeType":"YulIdentifier","src":"8654:3:32"},"nativeSrc":"8654:20:32","nodeType":"YulFunctionCall","src":"8654:20:32"}],"functionName":{"name":"mstore","nativeSrc":"8644:6:32","nodeType":"YulIdentifier","src":"8644:6:32"},"nativeSrc":"8644:31:32","nodeType":"YulFunctionCall","src":"8644:31:32"},"nativeSrc":"8644:31:32","nodeType":"YulExpressionStatement","src":"8644:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8695:1:32","nodeType":"YulLiteral","src":"8695:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"8698:4:32","nodeType":"YulLiteral","src":"8698:4:32","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8688:6:32","nodeType":"YulIdentifier","src":"8688:6:32"},"nativeSrc":"8688:15:32","nodeType":"YulFunctionCall","src":"8688:15:32"},"nativeSrc":"8688:15:32","nodeType":"YulExpressionStatement","src":"8688:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8723:1:32","nodeType":"YulLiteral","src":"8723:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"8726:4:32","nodeType":"YulLiteral","src":"8726:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8716:6:32","nodeType":"YulIdentifier","src":"8716:6:32"},"nativeSrc":"8716:15:32","nodeType":"YulFunctionCall","src":"8716:15:32"},"nativeSrc":"8716:15:32","nodeType":"YulExpressionStatement","src":"8716:15:32"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8586:18:32","nodeType":"YulIdentifier","src":"8586:18:32"},{"arguments":[{"name":"length","nativeSrc":"8609:6:32","nodeType":"YulIdentifier","src":"8609:6:32"},{"kind":"number","nativeSrc":"8617:2:32","nodeType":"YulLiteral","src":"8617:2:32","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8606:2:32","nodeType":"YulIdentifier","src":"8606:2:32"},"nativeSrc":"8606:14:32","nodeType":"YulFunctionCall","src":"8606:14:32"}],"functionName":{"name":"eq","nativeSrc":"8583:2:32","nodeType":"YulIdentifier","src":"8583:2:32"},"nativeSrc":"8583:38:32","nodeType":"YulFunctionCall","src":"8583:38:32"},"nativeSrc":"8580:161:32","nodeType":"YulIf","src":"8580:161:32"}]},"name":"extract_byte_array_length","nativeSrc":"8367:380:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"8402:4:32","nodeType":"YulTypedName","src":"8402:4:32","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8411:6:32","nodeType":"YulTypedName","src":"8411:6:32","type":""}],"src":"8367:380:32"},{"body":{"nativeSrc":"8909:214:32","nodeType":"YulBlock","src":"8909:214:32","statements":[{"nativeSrc":"8919:26:32","nodeType":"YulAssignment","src":"8919:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"8931:9:32","nodeType":"YulIdentifier","src":"8931:9:32"},{"kind":"number","nativeSrc":"8942:2:32","nodeType":"YulLiteral","src":"8942:2:32","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8927:3:32","nodeType":"YulIdentifier","src":"8927:3:32"},"nativeSrc":"8927:18:32","nodeType":"YulFunctionCall","src":"8927:18:32"},"variableNames":[{"name":"tail","nativeSrc":"8919:4:32","nodeType":"YulIdentifier","src":"8919:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8961:9:32","nodeType":"YulIdentifier","src":"8961:9:32"},{"arguments":[{"name":"value0","nativeSrc":"8976:6:32","nodeType":"YulIdentifier","src":"8976:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8992:3:32","nodeType":"YulLiteral","src":"8992:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"8997:1:32","nodeType":"YulLiteral","src":"8997:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8988:3:32","nodeType":"YulIdentifier","src":"8988:3:32"},"nativeSrc":"8988:11:32","nodeType":"YulFunctionCall","src":"8988:11:32"},{"kind":"number","nativeSrc":"9001:1:32","nodeType":"YulLiteral","src":"9001:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8984:3:32","nodeType":"YulIdentifier","src":"8984:3:32"},"nativeSrc":"8984:19:32","nodeType":"YulFunctionCall","src":"8984:19:32"}],"functionName":{"name":"and","nativeSrc":"8972:3:32","nodeType":"YulIdentifier","src":"8972:3:32"},"nativeSrc":"8972:32:32","nodeType":"YulFunctionCall","src":"8972:32:32"}],"functionName":{"name":"mstore","nativeSrc":"8954:6:32","nodeType":"YulIdentifier","src":"8954:6:32"},"nativeSrc":"8954:51:32","nodeType":"YulFunctionCall","src":"8954:51:32"},"nativeSrc":"8954:51:32","nodeType":"YulExpressionStatement","src":"8954:51:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9025:9:32","nodeType":"YulIdentifier","src":"9025:9:32"},{"kind":"number","nativeSrc":"9036:2:32","nodeType":"YulLiteral","src":"9036:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9021:3:32","nodeType":"YulIdentifier","src":"9021:3:32"},"nativeSrc":"9021:18:32","nodeType":"YulFunctionCall","src":"9021:18:32"},{"name":"value1","nativeSrc":"9041:6:32","nodeType":"YulIdentifier","src":"9041:6:32"}],"functionName":{"name":"mstore","nativeSrc":"9014:6:32","nodeType":"YulIdentifier","src":"9014:6:32"},"nativeSrc":"9014:34:32","nodeType":"YulFunctionCall","src":"9014:34:32"},"nativeSrc":"9014:34:32","nodeType":"YulExpressionStatement","src":"9014:34:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9068:9:32","nodeType":"YulIdentifier","src":"9068:9:32"},{"kind":"number","nativeSrc":"9079:2:32","nodeType":"YulLiteral","src":"9079:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9064:3:32","nodeType":"YulIdentifier","src":"9064:3:32"},"nativeSrc":"9064:18:32","nodeType":"YulFunctionCall","src":"9064:18:32"},{"arguments":[{"name":"value2","nativeSrc":"9088:6:32","nodeType":"YulIdentifier","src":"9088:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9104:3:32","nodeType":"YulLiteral","src":"9104:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"9109:1:32","nodeType":"YulLiteral","src":"9109:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9100:3:32","nodeType":"YulIdentifier","src":"9100:3:32"},"nativeSrc":"9100:11:32","nodeType":"YulFunctionCall","src":"9100:11:32"},{"kind":"number","nativeSrc":"9113:1:32","nodeType":"YulLiteral","src":"9113:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9096:3:32","nodeType":"YulIdentifier","src":"9096:3:32"},"nativeSrc":"9096:19:32","nodeType":"YulFunctionCall","src":"9096:19:32"}],"functionName":{"name":"and","nativeSrc":"9084:3:32","nodeType":"YulIdentifier","src":"9084:3:32"},"nativeSrc":"9084:32:32","nodeType":"YulFunctionCall","src":"9084:32:32"}],"functionName":{"name":"mstore","nativeSrc":"9057:6:32","nodeType":"YulIdentifier","src":"9057:6:32"},"nativeSrc":"9057:60:32","nodeType":"YulFunctionCall","src":"9057:60:32"},"nativeSrc":"9057:60:32","nodeType":"YulExpressionStatement","src":"9057:60:32"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed","nativeSrc":"8752:371:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8862:9:32","nodeType":"YulTypedName","src":"8862:9:32","type":""},{"name":"value2","nativeSrc":"8873:6:32","nodeType":"YulTypedName","src":"8873:6:32","type":""},{"name":"value1","nativeSrc":"8881:6:32","nodeType":"YulTypedName","src":"8881:6:32","type":""},{"name":"value0","nativeSrc":"8889:6:32","nodeType":"YulTypedName","src":"8889:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8900:4:32","nodeType":"YulTypedName","src":"8900:4:32","type":""}],"src":"8752:371:32"},{"body":{"nativeSrc":"9160:95:32","nodeType":"YulBlock","src":"9160:95:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9177:1:32","nodeType":"YulLiteral","src":"9177:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9184:3:32","nodeType":"YulLiteral","src":"9184:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"9189:10:32","nodeType":"YulLiteral","src":"9189:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9180:3:32","nodeType":"YulIdentifier","src":"9180:3:32"},"nativeSrc":"9180:20:32","nodeType":"YulFunctionCall","src":"9180:20:32"}],"functionName":{"name":"mstore","nativeSrc":"9170:6:32","nodeType":"YulIdentifier","src":"9170:6:32"},"nativeSrc":"9170:31:32","nodeType":"YulFunctionCall","src":"9170:31:32"},"nativeSrc":"9170:31:32","nodeType":"YulExpressionStatement","src":"9170:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9217:1:32","nodeType":"YulLiteral","src":"9217:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"9220:4:32","nodeType":"YulLiteral","src":"9220:4:32","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"9210:6:32","nodeType":"YulIdentifier","src":"9210:6:32"},"nativeSrc":"9210:15:32","nodeType":"YulFunctionCall","src":"9210:15:32"},"nativeSrc":"9210:15:32","nodeType":"YulExpressionStatement","src":"9210:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9241:1:32","nodeType":"YulLiteral","src":"9241:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"9244:4:32","nodeType":"YulLiteral","src":"9244:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9234:6:32","nodeType":"YulIdentifier","src":"9234:6:32"},"nativeSrc":"9234:15:32","nodeType":"YulFunctionCall","src":"9234:15:32"},"nativeSrc":"9234:15:32","nodeType":"YulExpressionStatement","src":"9234:15:32"}]},"name":"panic_error_0x11","nativeSrc":"9128:127:32","nodeType":"YulFunctionDefinition","src":"9128:127:32"},{"body":{"nativeSrc":"9312:116:32","nodeType":"YulBlock","src":"9312:116:32","statements":[{"nativeSrc":"9322:20:32","nodeType":"YulAssignment","src":"9322:20:32","value":{"arguments":[{"name":"x","nativeSrc":"9337:1:32","nodeType":"YulIdentifier","src":"9337:1:32"},{"name":"y","nativeSrc":"9340:1:32","nodeType":"YulIdentifier","src":"9340:1:32"}],"functionName":{"name":"mul","nativeSrc":"9333:3:32","nodeType":"YulIdentifier","src":"9333:3:32"},"nativeSrc":"9333:9:32","nodeType":"YulFunctionCall","src":"9333:9:32"},"variableNames":[{"name":"product","nativeSrc":"9322:7:32","nodeType":"YulIdentifier","src":"9322:7:32"}]},{"body":{"nativeSrc":"9400:22:32","nodeType":"YulBlock","src":"9400:22:32","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"9402:16:32","nodeType":"YulIdentifier","src":"9402:16:32"},"nativeSrc":"9402:18:32","nodeType":"YulFunctionCall","src":"9402:18:32"},"nativeSrc":"9402:18:32","nodeType":"YulExpressionStatement","src":"9402:18:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"9371:1:32","nodeType":"YulIdentifier","src":"9371:1:32"}],"functionName":{"name":"iszero","nativeSrc":"9364:6:32","nodeType":"YulIdentifier","src":"9364:6:32"},"nativeSrc":"9364:9:32","nodeType":"YulFunctionCall","src":"9364:9:32"},{"arguments":[{"name":"y","nativeSrc":"9378:1:32","nodeType":"YulIdentifier","src":"9378:1:32"},{"arguments":[{"name":"product","nativeSrc":"9385:7:32","nodeType":"YulIdentifier","src":"9385:7:32"},{"name":"x","nativeSrc":"9394:1:32","nodeType":"YulIdentifier","src":"9394:1:32"}],"functionName":{"name":"div","nativeSrc":"9381:3:32","nodeType":"YulIdentifier","src":"9381:3:32"},"nativeSrc":"9381:15:32","nodeType":"YulFunctionCall","src":"9381:15:32"}],"functionName":{"name":"eq","nativeSrc":"9375:2:32","nodeType":"YulIdentifier","src":"9375:2:32"},"nativeSrc":"9375:22:32","nodeType":"YulFunctionCall","src":"9375:22:32"}],"functionName":{"name":"or","nativeSrc":"9361:2:32","nodeType":"YulIdentifier","src":"9361:2:32"},"nativeSrc":"9361:37:32","nodeType":"YulFunctionCall","src":"9361:37:32"}],"functionName":{"name":"iszero","nativeSrc":"9354:6:32","nodeType":"YulIdentifier","src":"9354:6:32"},"nativeSrc":"9354:45:32","nodeType":"YulFunctionCall","src":"9354:45:32"},"nativeSrc":"9351:71:32","nodeType":"YulIf","src":"9351:71:32"}]},"name":"checked_mul_t_uint256","nativeSrc":"9260:168:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9291:1:32","nodeType":"YulTypedName","src":"9291:1:32","type":""},{"name":"y","nativeSrc":"9294:1:32","nodeType":"YulTypedName","src":"9294:1:32","type":""}],"returnVariables":[{"name":"product","nativeSrc":"9300:7:32","nodeType":"YulTypedName","src":"9300:7:32","type":""}],"src":"9260:168:32"},{"body":{"nativeSrc":"9465:95:32","nodeType":"YulBlock","src":"9465:95:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9482:1:32","nodeType":"YulLiteral","src":"9482:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9489:3:32","nodeType":"YulLiteral","src":"9489:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"9494:10:32","nodeType":"YulLiteral","src":"9494:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9485:3:32","nodeType":"YulIdentifier","src":"9485:3:32"},"nativeSrc":"9485:20:32","nodeType":"YulFunctionCall","src":"9485:20:32"}],"functionName":{"name":"mstore","nativeSrc":"9475:6:32","nodeType":"YulIdentifier","src":"9475:6:32"},"nativeSrc":"9475:31:32","nodeType":"YulFunctionCall","src":"9475:31:32"},"nativeSrc":"9475:31:32","nodeType":"YulExpressionStatement","src":"9475:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9522:1:32","nodeType":"YulLiteral","src":"9522:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"9525:4:32","nodeType":"YulLiteral","src":"9525:4:32","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"9515:6:32","nodeType":"YulIdentifier","src":"9515:6:32"},"nativeSrc":"9515:15:32","nodeType":"YulFunctionCall","src":"9515:15:32"},"nativeSrc":"9515:15:32","nodeType":"YulExpressionStatement","src":"9515:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9546:1:32","nodeType":"YulLiteral","src":"9546:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"9549:4:32","nodeType":"YulLiteral","src":"9549:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9539:6:32","nodeType":"YulIdentifier","src":"9539:6:32"},"nativeSrc":"9539:15:32","nodeType":"YulFunctionCall","src":"9539:15:32"},"nativeSrc":"9539:15:32","nodeType":"YulExpressionStatement","src":"9539:15:32"}]},"name":"panic_error_0x12","nativeSrc":"9433:127:32","nodeType":"YulFunctionDefinition","src":"9433:127:32"},{"body":{"nativeSrc":"9611:171:32","nodeType":"YulBlock","src":"9611:171:32","statements":[{"body":{"nativeSrc":"9642:111:32","nodeType":"YulBlock","src":"9642:111:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9663:1:32","nodeType":"YulLiteral","src":"9663:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9670:3:32","nodeType":"YulLiteral","src":"9670:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"9675:10:32","nodeType":"YulLiteral","src":"9675:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9666:3:32","nodeType":"YulIdentifier","src":"9666:3:32"},"nativeSrc":"9666:20:32","nodeType":"YulFunctionCall","src":"9666:20:32"}],"functionName":{"name":"mstore","nativeSrc":"9656:6:32","nodeType":"YulIdentifier","src":"9656:6:32"},"nativeSrc":"9656:31:32","nodeType":"YulFunctionCall","src":"9656:31:32"},"nativeSrc":"9656:31:32","nodeType":"YulExpressionStatement","src":"9656:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9707:1:32","nodeType":"YulLiteral","src":"9707:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"9710:4:32","nodeType":"YulLiteral","src":"9710:4:32","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"9700:6:32","nodeType":"YulIdentifier","src":"9700:6:32"},"nativeSrc":"9700:15:32","nodeType":"YulFunctionCall","src":"9700:15:32"},"nativeSrc":"9700:15:32","nodeType":"YulExpressionStatement","src":"9700:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9735:1:32","nodeType":"YulLiteral","src":"9735:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"9738:4:32","nodeType":"YulLiteral","src":"9738:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9728:6:32","nodeType":"YulIdentifier","src":"9728:6:32"},"nativeSrc":"9728:15:32","nodeType":"YulFunctionCall","src":"9728:15:32"},"nativeSrc":"9728:15:32","nodeType":"YulExpressionStatement","src":"9728:15:32"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"9631:1:32","nodeType":"YulIdentifier","src":"9631:1:32"}],"functionName":{"name":"iszero","nativeSrc":"9624:6:32","nodeType":"YulIdentifier","src":"9624:6:32"},"nativeSrc":"9624:9:32","nodeType":"YulFunctionCall","src":"9624:9:32"},"nativeSrc":"9621:132:32","nodeType":"YulIf","src":"9621:132:32"},{"nativeSrc":"9762:14:32","nodeType":"YulAssignment","src":"9762:14:32","value":{"arguments":[{"name":"x","nativeSrc":"9771:1:32","nodeType":"YulIdentifier","src":"9771:1:32"},{"name":"y","nativeSrc":"9774:1:32","nodeType":"YulIdentifier","src":"9774:1:32"}],"functionName":{"name":"div","nativeSrc":"9767:3:32","nodeType":"YulIdentifier","src":"9767:3:32"},"nativeSrc":"9767:9:32","nodeType":"YulFunctionCall","src":"9767:9:32"},"variableNames":[{"name":"r","nativeSrc":"9762:1:32","nodeType":"YulIdentifier","src":"9762:1:32"}]}]},"name":"checked_div_t_uint256","nativeSrc":"9565:217:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9596:1:32","nodeType":"YulTypedName","src":"9596:1:32","type":""},{"name":"y","nativeSrc":"9599:1:32","nodeType":"YulTypedName","src":"9599:1:32","type":""}],"returnVariables":[{"name":"r","nativeSrc":"9605:1:32","nodeType":"YulTypedName","src":"9605:1:32","type":""}],"src":"9565:217:32"},{"body":{"nativeSrc":"9819:95:32","nodeType":"YulBlock","src":"9819:95:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9836:1:32","nodeType":"YulLiteral","src":"9836:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9843:3:32","nodeType":"YulLiteral","src":"9843:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"9848:10:32","nodeType":"YulLiteral","src":"9848:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9839:3:32","nodeType":"YulIdentifier","src":"9839:3:32"},"nativeSrc":"9839:20:32","nodeType":"YulFunctionCall","src":"9839:20:32"}],"functionName":{"name":"mstore","nativeSrc":"9829:6:32","nodeType":"YulIdentifier","src":"9829:6:32"},"nativeSrc":"9829:31:32","nodeType":"YulFunctionCall","src":"9829:31:32"},"nativeSrc":"9829:31:32","nodeType":"YulExpressionStatement","src":"9829:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9876:1:32","nodeType":"YulLiteral","src":"9876:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"9879:4:32","nodeType":"YulLiteral","src":"9879:4:32","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"9869:6:32","nodeType":"YulIdentifier","src":"9869:6:32"},"nativeSrc":"9869:15:32","nodeType":"YulFunctionCall","src":"9869:15:32"},"nativeSrc":"9869:15:32","nodeType":"YulExpressionStatement","src":"9869:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9900:1:32","nodeType":"YulLiteral","src":"9900:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"9903:4:32","nodeType":"YulLiteral","src":"9903:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9893:6:32","nodeType":"YulIdentifier","src":"9893:6:32"},"nativeSrc":"9893:15:32","nodeType":"YulFunctionCall","src":"9893:15:32"},"nativeSrc":"9893:15:32","nodeType":"YulExpressionStatement","src":"9893:15:32"}]},"name":"panic_error_0x32","nativeSrc":"9787:127:32","nodeType":"YulFunctionDefinition","src":"9787:127:32"},{"body":{"nativeSrc":"9975:65:32","nodeType":"YulBlock","src":"9975:65:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9992:1:32","nodeType":"YulLiteral","src":"9992:1:32","type":"","value":"0"},{"name":"ptr","nativeSrc":"9995:3:32","nodeType":"YulIdentifier","src":"9995:3:32"}],"functionName":{"name":"mstore","nativeSrc":"9985:6:32","nodeType":"YulIdentifier","src":"9985:6:32"},"nativeSrc":"9985:14:32","nodeType":"YulFunctionCall","src":"9985:14:32"},"nativeSrc":"9985:14:32","nodeType":"YulExpressionStatement","src":"9985:14:32"},{"nativeSrc":"10008:26:32","nodeType":"YulAssignment","src":"10008:26:32","value":{"arguments":[{"kind":"number","nativeSrc":"10026:1:32","nodeType":"YulLiteral","src":"10026:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"10029:4:32","nodeType":"YulLiteral","src":"10029:4:32","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"10016:9:32","nodeType":"YulIdentifier","src":"10016:9:32"},"nativeSrc":"10016:18:32","nodeType":"YulFunctionCall","src":"10016:18:32"},"variableNames":[{"name":"data","nativeSrc":"10008:4:32","nodeType":"YulIdentifier","src":"10008:4:32"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"9919:121:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"9958:3:32","nodeType":"YulTypedName","src":"9958:3:32","type":""}],"returnVariables":[{"name":"data","nativeSrc":"9966:4:32","nodeType":"YulTypedName","src":"9966:4:32","type":""}],"src":"9919:121:32"},{"body":{"nativeSrc":"10126:437:32","nodeType":"YulBlock","src":"10126:437:32","statements":[{"body":{"nativeSrc":"10159:398:32","nodeType":"YulBlock","src":"10159:398:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10180:1:32","nodeType":"YulLiteral","src":"10180:1:32","type":"","value":"0"},{"name":"array","nativeSrc":"10183:5:32","nodeType":"YulIdentifier","src":"10183:5:32"}],"functionName":{"name":"mstore","nativeSrc":"10173:6:32","nodeType":"YulIdentifier","src":"10173:6:32"},"nativeSrc":"10173:16:32","nodeType":"YulFunctionCall","src":"10173:16:32"},"nativeSrc":"10173:16:32","nodeType":"YulExpressionStatement","src":"10173:16:32"},{"nativeSrc":"10202:30:32","nodeType":"YulVariableDeclaration","src":"10202:30:32","value":{"arguments":[{"kind":"number","nativeSrc":"10224:1:32","nodeType":"YulLiteral","src":"10224:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"10227:4:32","nodeType":"YulLiteral","src":"10227:4:32","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"10214:9:32","nodeType":"YulIdentifier","src":"10214:9:32"},"nativeSrc":"10214:18:32","nodeType":"YulFunctionCall","src":"10214:18:32"},"variables":[{"name":"data","nativeSrc":"10206:4:32","nodeType":"YulTypedName","src":"10206:4:32","type":""}]},{"nativeSrc":"10245:57:32","nodeType":"YulVariableDeclaration","src":"10245:57:32","value":{"arguments":[{"name":"data","nativeSrc":"10268:4:32","nodeType":"YulIdentifier","src":"10268:4:32"},{"arguments":[{"kind":"number","nativeSrc":"10278:1:32","nodeType":"YulLiteral","src":"10278:1:32","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"10285:10:32","nodeType":"YulIdentifier","src":"10285:10:32"},{"kind":"number","nativeSrc":"10297:2:32","nodeType":"YulLiteral","src":"10297:2:32","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"10281:3:32","nodeType":"YulIdentifier","src":"10281:3:32"},"nativeSrc":"10281:19:32","nodeType":"YulFunctionCall","src":"10281:19:32"}],"functionName":{"name":"shr","nativeSrc":"10274:3:32","nodeType":"YulIdentifier","src":"10274:3:32"},"nativeSrc":"10274:27:32","nodeType":"YulFunctionCall","src":"10274:27:32"}],"functionName":{"name":"add","nativeSrc":"10264:3:32","nodeType":"YulIdentifier","src":"10264:3:32"},"nativeSrc":"10264:38:32","nodeType":"YulFunctionCall","src":"10264:38:32"},"variables":[{"name":"deleteStart","nativeSrc":"10249:11:32","nodeType":"YulTypedName","src":"10249:11:32","type":""}]},{"body":{"nativeSrc":"10339:23:32","nodeType":"YulBlock","src":"10339:23:32","statements":[{"nativeSrc":"10341:19:32","nodeType":"YulAssignment","src":"10341:19:32","value":{"name":"data","nativeSrc":"10356:4:32","nodeType":"YulIdentifier","src":"10356:4:32"},"variableNames":[{"name":"deleteStart","nativeSrc":"10341:11:32","nodeType":"YulIdentifier","src":"10341:11:32"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"10321:10:32","nodeType":"YulIdentifier","src":"10321:10:32"},{"kind":"number","nativeSrc":"10333:4:32","nodeType":"YulLiteral","src":"10333:4:32","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"10318:2:32","nodeType":"YulIdentifier","src":"10318:2:32"},"nativeSrc":"10318:20:32","nodeType":"YulFunctionCall","src":"10318:20:32"},"nativeSrc":"10315:47:32","nodeType":"YulIf","src":"10315:47:32"},{"nativeSrc":"10375:41:32","nodeType":"YulVariableDeclaration","src":"10375:41:32","value":{"arguments":[{"name":"data","nativeSrc":"10389:4:32","nodeType":"YulIdentifier","src":"10389:4:32"},{"arguments":[{"kind":"number","nativeSrc":"10399:1:32","nodeType":"YulLiteral","src":"10399:1:32","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"10406:3:32","nodeType":"YulIdentifier","src":"10406:3:32"},{"kind":"number","nativeSrc":"10411:2:32","nodeType":"YulLiteral","src":"10411:2:32","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"10402:3:32","nodeType":"YulIdentifier","src":"10402:3:32"},"nativeSrc":"10402:12:32","nodeType":"YulFunctionCall","src":"10402:12:32"}],"functionName":{"name":"shr","nativeSrc":"10395:3:32","nodeType":"YulIdentifier","src":"10395:3:32"},"nativeSrc":"10395:20:32","nodeType":"YulFunctionCall","src":"10395:20:32"}],"functionName":{"name":"add","nativeSrc":"10385:3:32","nodeType":"YulIdentifier","src":"10385:3:32"},"nativeSrc":"10385:31:32","nodeType":"YulFunctionCall","src":"10385:31:32"},"variables":[{"name":"_1","nativeSrc":"10379:2:32","nodeType":"YulTypedName","src":"10379:2:32","type":""}]},{"nativeSrc":"10429:24:32","nodeType":"YulVariableDeclaration","src":"10429:24:32","value":{"name":"deleteStart","nativeSrc":"10442:11:32","nodeType":"YulIdentifier","src":"10442:11:32"},"variables":[{"name":"start","nativeSrc":"10433:5:32","nodeType":"YulTypedName","src":"10433:5:32","type":""}]},{"body":{"nativeSrc":"10527:20:32","nodeType":"YulBlock","src":"10527:20:32","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"10536:5:32","nodeType":"YulIdentifier","src":"10536:5:32"},{"kind":"number","nativeSrc":"10543:1:32","nodeType":"YulLiteral","src":"10543:1:32","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"10529:6:32","nodeType":"YulIdentifier","src":"10529:6:32"},"nativeSrc":"10529:16:32","nodeType":"YulFunctionCall","src":"10529:16:32"},"nativeSrc":"10529:16:32","nodeType":"YulExpressionStatement","src":"10529:16:32"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"10477:5:32","nodeType":"YulIdentifier","src":"10477:5:32"},{"name":"_1","nativeSrc":"10484:2:32","nodeType":"YulIdentifier","src":"10484:2:32"}],"functionName":{"name":"lt","nativeSrc":"10474:2:32","nodeType":"YulIdentifier","src":"10474:2:32"},"nativeSrc":"10474:13:32","nodeType":"YulFunctionCall","src":"10474:13:32"},"nativeSrc":"10466:81:32","nodeType":"YulForLoop","post":{"nativeSrc":"10488:26:32","nodeType":"YulBlock","src":"10488:26:32","statements":[{"nativeSrc":"10490:22:32","nodeType":"YulAssignment","src":"10490:22:32","value":{"arguments":[{"name":"start","nativeSrc":"10503:5:32","nodeType":"YulIdentifier","src":"10503:5:32"},{"kind":"number","nativeSrc":"10510:1:32","nodeType":"YulLiteral","src":"10510:1:32","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10499:3:32","nodeType":"YulIdentifier","src":"10499:3:32"},"nativeSrc":"10499:13:32","nodeType":"YulFunctionCall","src":"10499:13:32"},"variableNames":[{"name":"start","nativeSrc":"10490:5:32","nodeType":"YulIdentifier","src":"10490:5:32"}]}]},"pre":{"nativeSrc":"10470:3:32","nodeType":"YulBlock","src":"10470:3:32","statements":[]},"src":"10466:81:32"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"10142:3:32","nodeType":"YulIdentifier","src":"10142:3:32"},{"kind":"number","nativeSrc":"10147:2:32","nodeType":"YulLiteral","src":"10147:2:32","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"10139:2:32","nodeType":"YulIdentifier","src":"10139:2:32"},"nativeSrc":"10139:11:32","nodeType":"YulFunctionCall","src":"10139:11:32"},"nativeSrc":"10136:421:32","nodeType":"YulIf","src":"10136:421:32"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"10045:518:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"10098:5:32","nodeType":"YulTypedName","src":"10098:5:32","type":""},{"name":"len","nativeSrc":"10105:3:32","nodeType":"YulTypedName","src":"10105:3:32","type":""},{"name":"startIndex","nativeSrc":"10110:10:32","nodeType":"YulTypedName","src":"10110:10:32","type":""}],"src":"10045:518:32"},{"body":{"nativeSrc":"10653:81:32","nodeType":"YulBlock","src":"10653:81:32","statements":[{"nativeSrc":"10663:65:32","nodeType":"YulAssignment","src":"10663:65:32","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"10678:4:32","nodeType":"YulIdentifier","src":"10678:4:32"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10696:1:32","nodeType":"YulLiteral","src":"10696:1:32","type":"","value":"3"},{"name":"len","nativeSrc":"10699:3:32","nodeType":"YulIdentifier","src":"10699:3:32"}],"functionName":{"name":"shl","nativeSrc":"10692:3:32","nodeType":"YulIdentifier","src":"10692:3:32"},"nativeSrc":"10692:11:32","nodeType":"YulFunctionCall","src":"10692:11:32"},{"arguments":[{"kind":"number","nativeSrc":"10709:1:32","nodeType":"YulLiteral","src":"10709:1:32","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10705:3:32","nodeType":"YulIdentifier","src":"10705:3:32"},"nativeSrc":"10705:6:32","nodeType":"YulFunctionCall","src":"10705:6:32"}],"functionName":{"name":"shr","nativeSrc":"10688:3:32","nodeType":"YulIdentifier","src":"10688:3:32"},"nativeSrc":"10688:24:32","nodeType":"YulFunctionCall","src":"10688:24:32"}],"functionName":{"name":"not","nativeSrc":"10684:3:32","nodeType":"YulIdentifier","src":"10684:3:32"},"nativeSrc":"10684:29:32","nodeType":"YulFunctionCall","src":"10684:29:32"}],"functionName":{"name":"and","nativeSrc":"10674:3:32","nodeType":"YulIdentifier","src":"10674:3:32"},"nativeSrc":"10674:40:32","nodeType":"YulFunctionCall","src":"10674:40:32"},{"arguments":[{"kind":"number","nativeSrc":"10720:1:32","nodeType":"YulLiteral","src":"10720:1:32","type":"","value":"1"},{"name":"len","nativeSrc":"10723:3:32","nodeType":"YulIdentifier","src":"10723:3:32"}],"functionName":{"name":"shl","nativeSrc":"10716:3:32","nodeType":"YulIdentifier","src":"10716:3:32"},"nativeSrc":"10716:11:32","nodeType":"YulFunctionCall","src":"10716:11:32"}],"functionName":{"name":"or","nativeSrc":"10671:2:32","nodeType":"YulIdentifier","src":"10671:2:32"},"nativeSrc":"10671:57:32","nodeType":"YulFunctionCall","src":"10671:57:32"},"variableNames":[{"name":"used","nativeSrc":"10663:4:32","nodeType":"YulIdentifier","src":"10663:4:32"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"10568:166:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"10630:4:32","nodeType":"YulTypedName","src":"10630:4:32","type":""},{"name":"len","nativeSrc":"10636:3:32","nodeType":"YulTypedName","src":"10636:3:32","type":""}],"returnVariables":[{"name":"used","nativeSrc":"10644:4:32","nodeType":"YulTypedName","src":"10644:4:32","type":""}],"src":"10568:166:32"},{"body":{"nativeSrc":"10842:1095:32","nodeType":"YulBlock","src":"10842:1095:32","statements":[{"body":{"nativeSrc":"10883:22:32","nodeType":"YulBlock","src":"10883:22:32","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"10885:16:32","nodeType":"YulIdentifier","src":"10885:16:32"},"nativeSrc":"10885:18:32","nodeType":"YulFunctionCall","src":"10885:18:32"},"nativeSrc":"10885:18:32","nodeType":"YulExpressionStatement","src":"10885:18:32"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"10858:3:32","nodeType":"YulIdentifier","src":"10858:3:32"},{"kind":"number","nativeSrc":"10863:18:32","nodeType":"YulLiteral","src":"10863:18:32","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10855:2:32","nodeType":"YulIdentifier","src":"10855:2:32"},"nativeSrc":"10855:27:32","nodeType":"YulFunctionCall","src":"10855:27:32"},"nativeSrc":"10852:53:32","nodeType":"YulIf","src":"10852:53:32"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10958:4:32","nodeType":"YulIdentifier","src":"10958:4:32"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"10996:4:32","nodeType":"YulIdentifier","src":"10996:4:32"}],"functionName":{"name":"sload","nativeSrc":"10990:5:32","nodeType":"YulIdentifier","src":"10990:5:32"},"nativeSrc":"10990:11:32","nodeType":"YulFunctionCall","src":"10990:11:32"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"10964:25:32","nodeType":"YulIdentifier","src":"10964:25:32"},"nativeSrc":"10964:38:32","nodeType":"YulFunctionCall","src":"10964:38:32"},{"name":"len","nativeSrc":"11004:3:32","nodeType":"YulIdentifier","src":"11004:3:32"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"10914:43:32","nodeType":"YulIdentifier","src":"10914:43:32"},"nativeSrc":"10914:94:32","nodeType":"YulFunctionCall","src":"10914:94:32"},"nativeSrc":"10914:94:32","nodeType":"YulExpressionStatement","src":"10914:94:32"},{"nativeSrc":"11017:18:32","nodeType":"YulVariableDeclaration","src":"11017:18:32","value":{"kind":"number","nativeSrc":"11034:1:32","nodeType":"YulLiteral","src":"11034:1:32","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"11021:9:32","nodeType":"YulTypedName","src":"11021:9:32","type":""}]},{"cases":[{"body":{"nativeSrc":"11078:601:32","nodeType":"YulBlock","src":"11078:601:32","statements":[{"nativeSrc":"11092:32:32","nodeType":"YulVariableDeclaration","src":"11092:32:32","value":{"arguments":[{"name":"len","nativeSrc":"11111:3:32","nodeType":"YulIdentifier","src":"11111:3:32"},{"arguments":[{"kind":"number","nativeSrc":"11120:2:32","nodeType":"YulLiteral","src":"11120:2:32","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"11116:3:32","nodeType":"YulIdentifier","src":"11116:3:32"},"nativeSrc":"11116:7:32","nodeType":"YulFunctionCall","src":"11116:7:32"}],"functionName":{"name":"and","nativeSrc":"11107:3:32","nodeType":"YulIdentifier","src":"11107:3:32"},"nativeSrc":"11107:17:32","nodeType":"YulFunctionCall","src":"11107:17:32"},"variables":[{"name":"loopEnd","nativeSrc":"11096:7:32","nodeType":"YulTypedName","src":"11096:7:32","type":""}]},{"nativeSrc":"11137:49:32","nodeType":"YulVariableDeclaration","src":"11137:49:32","value":{"arguments":[{"name":"slot","nativeSrc":"11181:4:32","nodeType":"YulIdentifier","src":"11181:4:32"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"11151:29:32","nodeType":"YulIdentifier","src":"11151:29:32"},"nativeSrc":"11151:35:32","nodeType":"YulFunctionCall","src":"11151:35:32"},"variables":[{"name":"dstPtr","nativeSrc":"11141:6:32","nodeType":"YulTypedName","src":"11141:6:32","type":""}]},{"nativeSrc":"11199:10:32","nodeType":"YulVariableDeclaration","src":"11199:10:32","value":{"kind":"number","nativeSrc":"11208:1:32","nodeType":"YulLiteral","src":"11208:1:32","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"11203:1:32","nodeType":"YulTypedName","src":"11203:1:32","type":""}]},{"body":{"nativeSrc":"11279:172:32","nodeType":"YulBlock","src":"11279:172:32","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"11304:6:32","nodeType":"YulIdentifier","src":"11304:6:32"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"11329:3:32","nodeType":"YulIdentifier","src":"11329:3:32"},{"name":"srcOffset","nativeSrc":"11334:9:32","nodeType":"YulIdentifier","src":"11334:9:32"}],"functionName":{"name":"add","nativeSrc":"11325:3:32","nodeType":"YulIdentifier","src":"11325:3:32"},"nativeSrc":"11325:19:32","nodeType":"YulFunctionCall","src":"11325:19:32"}],"functionName":{"name":"calldataload","nativeSrc":"11312:12:32","nodeType":"YulIdentifier","src":"11312:12:32"},"nativeSrc":"11312:33:32","nodeType":"YulFunctionCall","src":"11312:33:32"}],"functionName":{"name":"sstore","nativeSrc":"11297:6:32","nodeType":"YulIdentifier","src":"11297:6:32"},"nativeSrc":"11297:49:32","nodeType":"YulFunctionCall","src":"11297:49:32"},"nativeSrc":"11297:49:32","nodeType":"YulExpressionStatement","src":"11297:49:32"},{"nativeSrc":"11363:24:32","nodeType":"YulAssignment","src":"11363:24:32","value":{"arguments":[{"name":"dstPtr","nativeSrc":"11377:6:32","nodeType":"YulIdentifier","src":"11377:6:32"},{"kind":"number","nativeSrc":"11385:1:32","nodeType":"YulLiteral","src":"11385:1:32","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"11373:3:32","nodeType":"YulIdentifier","src":"11373:3:32"},"nativeSrc":"11373:14:32","nodeType":"YulFunctionCall","src":"11373:14:32"},"variableNames":[{"name":"dstPtr","nativeSrc":"11363:6:32","nodeType":"YulIdentifier","src":"11363:6:32"}]},{"nativeSrc":"11404:33:32","nodeType":"YulAssignment","src":"11404:33:32","value":{"arguments":[{"name":"srcOffset","nativeSrc":"11421:9:32","nodeType":"YulIdentifier","src":"11421:9:32"},{"kind":"number","nativeSrc":"11432:4:32","nodeType":"YulLiteral","src":"11432:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11417:3:32","nodeType":"YulIdentifier","src":"11417:3:32"},"nativeSrc":"11417:20:32","nodeType":"YulFunctionCall","src":"11417:20:32"},"variableNames":[{"name":"srcOffset","nativeSrc":"11404:9:32","nodeType":"YulIdentifier","src":"11404:9:32"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"11233:1:32","nodeType":"YulIdentifier","src":"11233:1:32"},{"name":"loopEnd","nativeSrc":"11236:7:32","nodeType":"YulIdentifier","src":"11236:7:32"}],"functionName":{"name":"lt","nativeSrc":"11230:2:32","nodeType":"YulIdentifier","src":"11230:2:32"},"nativeSrc":"11230:14:32","nodeType":"YulFunctionCall","src":"11230:14:32"},"nativeSrc":"11222:229:32","nodeType":"YulForLoop","post":{"nativeSrc":"11245:21:32","nodeType":"YulBlock","src":"11245:21:32","statements":[{"nativeSrc":"11247:17:32","nodeType":"YulAssignment","src":"11247:17:32","value":{"arguments":[{"name":"i","nativeSrc":"11256:1:32","nodeType":"YulIdentifier","src":"11256:1:32"},{"kind":"number","nativeSrc":"11259:4:32","nodeType":"YulLiteral","src":"11259:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11252:3:32","nodeType":"YulIdentifier","src":"11252:3:32"},"nativeSrc":"11252:12:32","nodeType":"YulFunctionCall","src":"11252:12:32"},"variableNames":[{"name":"i","nativeSrc":"11247:1:32","nodeType":"YulIdentifier","src":"11247:1:32"}]}]},"pre":{"nativeSrc":"11226:3:32","nodeType":"YulBlock","src":"11226:3:32","statements":[]},"src":"11222:229:32"},{"body":{"nativeSrc":"11496:127:32","nodeType":"YulBlock","src":"11496:127:32","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"11521:6:32","nodeType":"YulIdentifier","src":"11521:6:32"},{"arguments":[{"arguments":[{"arguments":[{"name":"src","nativeSrc":"11550:3:32","nodeType":"YulIdentifier","src":"11550:3:32"},{"name":"srcOffset","nativeSrc":"11555:9:32","nodeType":"YulIdentifier","src":"11555:9:32"}],"functionName":{"name":"add","nativeSrc":"11546:3:32","nodeType":"YulIdentifier","src":"11546:3:32"},"nativeSrc":"11546:19:32","nodeType":"YulFunctionCall","src":"11546:19:32"}],"functionName":{"name":"calldataload","nativeSrc":"11533:12:32","nodeType":"YulIdentifier","src":"11533:12:32"},"nativeSrc":"11533:33:32","nodeType":"YulFunctionCall","src":"11533:33:32"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11584:1:32","nodeType":"YulLiteral","src":"11584:1:32","type":"","value":"3"},{"name":"len","nativeSrc":"11587:3:32","nodeType":"YulIdentifier","src":"11587:3:32"}],"functionName":{"name":"shl","nativeSrc":"11580:3:32","nodeType":"YulIdentifier","src":"11580:3:32"},"nativeSrc":"11580:11:32","nodeType":"YulFunctionCall","src":"11580:11:32"},{"kind":"number","nativeSrc":"11593:3:32","nodeType":"YulLiteral","src":"11593:3:32","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"11576:3:32","nodeType":"YulIdentifier","src":"11576:3:32"},"nativeSrc":"11576:21:32","nodeType":"YulFunctionCall","src":"11576:21:32"},{"arguments":[{"kind":"number","nativeSrc":"11603:1:32","nodeType":"YulLiteral","src":"11603:1:32","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"11599:3:32","nodeType":"YulIdentifier","src":"11599:3:32"},"nativeSrc":"11599:6:32","nodeType":"YulFunctionCall","src":"11599:6:32"}],"functionName":{"name":"shr","nativeSrc":"11572:3:32","nodeType":"YulIdentifier","src":"11572:3:32"},"nativeSrc":"11572:34:32","nodeType":"YulFunctionCall","src":"11572:34:32"}],"functionName":{"name":"not","nativeSrc":"11568:3:32","nodeType":"YulIdentifier","src":"11568:3:32"},"nativeSrc":"11568:39:32","nodeType":"YulFunctionCall","src":"11568:39:32"}],"functionName":{"name":"and","nativeSrc":"11529:3:32","nodeType":"YulIdentifier","src":"11529:3:32"},"nativeSrc":"11529:79:32","nodeType":"YulFunctionCall","src":"11529:79:32"}],"functionName":{"name":"sstore","nativeSrc":"11514:6:32","nodeType":"YulIdentifier","src":"11514:6:32"},"nativeSrc":"11514:95:32","nodeType":"YulFunctionCall","src":"11514:95:32"},"nativeSrc":"11514:95:32","nodeType":"YulExpressionStatement","src":"11514:95:32"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"11470:7:32","nodeType":"YulIdentifier","src":"11470:7:32"},{"name":"len","nativeSrc":"11479:3:32","nodeType":"YulIdentifier","src":"11479:3:32"}],"functionName":{"name":"lt","nativeSrc":"11467:2:32","nodeType":"YulIdentifier","src":"11467:2:32"},"nativeSrc":"11467:16:32","nodeType":"YulFunctionCall","src":"11467:16:32"},"nativeSrc":"11464:159:32","nodeType":"YulIf","src":"11464:159:32"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"11643:4:32","nodeType":"YulIdentifier","src":"11643:4:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11657:1:32","nodeType":"YulLiteral","src":"11657:1:32","type":"","value":"1"},{"name":"len","nativeSrc":"11660:3:32","nodeType":"YulIdentifier","src":"11660:3:32"}],"functionName":{"name":"shl","nativeSrc":"11653:3:32","nodeType":"YulIdentifier","src":"11653:3:32"},"nativeSrc":"11653:11:32","nodeType":"YulFunctionCall","src":"11653:11:32"},{"kind":"number","nativeSrc":"11666:1:32","nodeType":"YulLiteral","src":"11666:1:32","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"11649:3:32","nodeType":"YulIdentifier","src":"11649:3:32"},"nativeSrc":"11649:19:32","nodeType":"YulFunctionCall","src":"11649:19:32"}],"functionName":{"name":"sstore","nativeSrc":"11636:6:32","nodeType":"YulIdentifier","src":"11636:6:32"},"nativeSrc":"11636:33:32","nodeType":"YulFunctionCall","src":"11636:33:32"},"nativeSrc":"11636:33:32","nodeType":"YulExpressionStatement","src":"11636:33:32"}]},"nativeSrc":"11071:608:32","nodeType":"YulCase","src":"11071:608:32","value":{"kind":"number","nativeSrc":"11076:1:32","nodeType":"YulLiteral","src":"11076:1:32","type":"","value":"1"}},{"body":{"nativeSrc":"11696:235:32","nodeType":"YulBlock","src":"11696:235:32","statements":[{"nativeSrc":"11710:14:32","nodeType":"YulVariableDeclaration","src":"11710:14:32","value":{"kind":"number","nativeSrc":"11723:1:32","nodeType":"YulLiteral","src":"11723:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"11714:5:32","nodeType":"YulTypedName","src":"11714:5:32","type":""}]},{"body":{"nativeSrc":"11756:74:32","nodeType":"YulBlock","src":"11756:74:32","statements":[{"nativeSrc":"11774:42:32","nodeType":"YulAssignment","src":"11774:42:32","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"11800:3:32","nodeType":"YulIdentifier","src":"11800:3:32"},{"name":"srcOffset","nativeSrc":"11805:9:32","nodeType":"YulIdentifier","src":"11805:9:32"}],"functionName":{"name":"add","nativeSrc":"11796:3:32","nodeType":"YulIdentifier","src":"11796:3:32"},"nativeSrc":"11796:19:32","nodeType":"YulFunctionCall","src":"11796:19:32"}],"functionName":{"name":"calldataload","nativeSrc":"11783:12:32","nodeType":"YulIdentifier","src":"11783:12:32"},"nativeSrc":"11783:33:32","nodeType":"YulFunctionCall","src":"11783:33:32"},"variableNames":[{"name":"value","nativeSrc":"11774:5:32","nodeType":"YulIdentifier","src":"11774:5:32"}]}]},"condition":{"name":"len","nativeSrc":"11740:3:32","nodeType":"YulIdentifier","src":"11740:3:32"},"nativeSrc":"11737:93:32","nodeType":"YulIf","src":"11737:93:32"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"11850:4:32","nodeType":"YulIdentifier","src":"11850:4:32"},{"arguments":[{"name":"value","nativeSrc":"11909:5:32","nodeType":"YulIdentifier","src":"11909:5:32"},{"name":"len","nativeSrc":"11916:3:32","nodeType":"YulIdentifier","src":"11916:3:32"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"11856:52:32","nodeType":"YulIdentifier","src":"11856:52:32"},"nativeSrc":"11856:64:32","nodeType":"YulFunctionCall","src":"11856:64:32"}],"functionName":{"name":"sstore","nativeSrc":"11843:6:32","nodeType":"YulIdentifier","src":"11843:6:32"},"nativeSrc":"11843:78:32","nodeType":"YulFunctionCall","src":"11843:78:32"},"nativeSrc":"11843:78:32","nodeType":"YulExpressionStatement","src":"11843:78:32"}]},"nativeSrc":"11688:243:32","nodeType":"YulCase","src":"11688:243:32","value":"default"}],"expression":{"arguments":[{"name":"len","nativeSrc":"11054:3:32","nodeType":"YulIdentifier","src":"11054:3:32"},{"kind":"number","nativeSrc":"11059:2:32","nodeType":"YulLiteral","src":"11059:2:32","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"11051:2:32","nodeType":"YulIdentifier","src":"11051:2:32"},"nativeSrc":"11051:11:32","nodeType":"YulFunctionCall","src":"11051:11:32"},"nativeSrc":"11044:887:32","nodeType":"YulSwitch","src":"11044:887:32"}]},"name":"copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage","nativeSrc":"10739:1198:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"10822:4:32","nodeType":"YulTypedName","src":"10822:4:32","type":""},{"name":"src","nativeSrc":"10828:3:32","nodeType":"YulTypedName","src":"10828:3:32","type":""},{"name":"len","nativeSrc":"10833:3:32","nodeType":"YulTypedName","src":"10833:3:32","type":""}],"src":"10739:1198:32"},{"body":{"nativeSrc":"12121:376:32","nodeType":"YulBlock","src":"12121:376:32","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12138:9:32","nodeType":"YulIdentifier","src":"12138:9:32"},{"kind":"number","nativeSrc":"12149:2:32","nodeType":"YulLiteral","src":"12149:2:32","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"12131:6:32","nodeType":"YulIdentifier","src":"12131:6:32"},"nativeSrc":"12131:21:32","nodeType":"YulFunctionCall","src":"12131:21:32"},"nativeSrc":"12131:21:32","nodeType":"YulExpressionStatement","src":"12131:21:32"},{"nativeSrc":"12161:70:32","nodeType":"YulVariableDeclaration","src":"12161:70:32","value":{"arguments":[{"name":"value0","nativeSrc":"12204:6:32","nodeType":"YulIdentifier","src":"12204:6:32"},{"arguments":[{"name":"headStart","nativeSrc":"12216:9:32","nodeType":"YulIdentifier","src":"12216:9:32"},{"kind":"number","nativeSrc":"12227:2:32","nodeType":"YulLiteral","src":"12227:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12212:3:32","nodeType":"YulIdentifier","src":"12212:3:32"},"nativeSrc":"12212:18:32","nodeType":"YulFunctionCall","src":"12212:18:32"}],"functionName":{"name":"abi_encode_string_memory_ptr","nativeSrc":"12175:28:32","nodeType":"YulIdentifier","src":"12175:28:32"},"nativeSrc":"12175:56:32","nodeType":"YulFunctionCall","src":"12175:56:32"},"variables":[{"name":"tail_1","nativeSrc":"12165:6:32","nodeType":"YulTypedName","src":"12165:6:32","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12251:9:32","nodeType":"YulIdentifier","src":"12251:9:32"},{"kind":"number","nativeSrc":"12262:2:32","nodeType":"YulLiteral","src":"12262:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12247:3:32","nodeType":"YulIdentifier","src":"12247:3:32"},"nativeSrc":"12247:18:32","nodeType":"YulFunctionCall","src":"12247:18:32"},{"arguments":[{"name":"tail_1","nativeSrc":"12271:6:32","nodeType":"YulIdentifier","src":"12271:6:32"},{"name":"headStart","nativeSrc":"12279:9:32","nodeType":"YulIdentifier","src":"12279:9:32"}],"functionName":{"name":"sub","nativeSrc":"12267:3:32","nodeType":"YulIdentifier","src":"12267:3:32"},"nativeSrc":"12267:22:32","nodeType":"YulFunctionCall","src":"12267:22:32"}],"functionName":{"name":"mstore","nativeSrc":"12240:6:32","nodeType":"YulIdentifier","src":"12240:6:32"},"nativeSrc":"12240:50:32","nodeType":"YulFunctionCall","src":"12240:50:32"},"nativeSrc":"12240:50:32","nodeType":"YulExpressionStatement","src":"12240:50:32"},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"12306:6:32","nodeType":"YulIdentifier","src":"12306:6:32"},{"name":"value2","nativeSrc":"12314:6:32","nodeType":"YulIdentifier","src":"12314:6:32"}],"functionName":{"name":"mstore","nativeSrc":"12299:6:32","nodeType":"YulIdentifier","src":"12299:6:32"},"nativeSrc":"12299:22:32","nodeType":"YulFunctionCall","src":"12299:22:32"},"nativeSrc":"12299:22:32","nodeType":"YulExpressionStatement","src":"12299:22:32"},{"expression":{"arguments":[{"arguments":[{"name":"tail_1","nativeSrc":"12347:6:32","nodeType":"YulIdentifier","src":"12347:6:32"},{"kind":"number","nativeSrc":"12355:2:32","nodeType":"YulLiteral","src":"12355:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12343:3:32","nodeType":"YulIdentifier","src":"12343:3:32"},"nativeSrc":"12343:15:32","nodeType":"YulFunctionCall","src":"12343:15:32"},{"name":"value1","nativeSrc":"12360:6:32","nodeType":"YulIdentifier","src":"12360:6:32"},{"name":"value2","nativeSrc":"12368:6:32","nodeType":"YulIdentifier","src":"12368:6:32"}],"functionName":{"name":"calldatacopy","nativeSrc":"12330:12:32","nodeType":"YulIdentifier","src":"12330:12:32"},"nativeSrc":"12330:45:32","nodeType":"YulFunctionCall","src":"12330:45:32"},"nativeSrc":"12330:45:32","nodeType":"YulExpressionStatement","src":"12330:45:32"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"tail_1","nativeSrc":"12399:6:32","nodeType":"YulIdentifier","src":"12399:6:32"},{"name":"value2","nativeSrc":"12407:6:32","nodeType":"YulIdentifier","src":"12407:6:32"}],"functionName":{"name":"add","nativeSrc":"12395:3:32","nodeType":"YulIdentifier","src":"12395:3:32"},"nativeSrc":"12395:19:32","nodeType":"YulFunctionCall","src":"12395:19:32"},{"kind":"number","nativeSrc":"12416:2:32","nodeType":"YulLiteral","src":"12416:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12391:3:32","nodeType":"YulIdentifier","src":"12391:3:32"},"nativeSrc":"12391:28:32","nodeType":"YulFunctionCall","src":"12391:28:32"},{"kind":"number","nativeSrc":"12421:1:32","nodeType":"YulLiteral","src":"12421:1:32","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12384:6:32","nodeType":"YulIdentifier","src":"12384:6:32"},"nativeSrc":"12384:39:32","nodeType":"YulFunctionCall","src":"12384:39:32"},"nativeSrc":"12384:39:32","nodeType":"YulExpressionStatement","src":"12384:39:32"},{"nativeSrc":"12432:59:32","nodeType":"YulAssignment","src":"12432:59:32","value":{"arguments":[{"arguments":[{"name":"tail_1","nativeSrc":"12448:6:32","nodeType":"YulIdentifier","src":"12448:6:32"},{"arguments":[{"arguments":[{"name":"value2","nativeSrc":"12464:6:32","nodeType":"YulIdentifier","src":"12464:6:32"},{"kind":"number","nativeSrc":"12472:2:32","nodeType":"YulLiteral","src":"12472:2:32","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"12460:3:32","nodeType":"YulIdentifier","src":"12460:3:32"},"nativeSrc":"12460:15:32","nodeType":"YulFunctionCall","src":"12460:15:32"},{"arguments":[{"kind":"number","nativeSrc":"12481:2:32","nodeType":"YulLiteral","src":"12481:2:32","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"12477:3:32","nodeType":"YulIdentifier","src":"12477:3:32"},"nativeSrc":"12477:7:32","nodeType":"YulFunctionCall","src":"12477:7:32"}],"functionName":{"name":"and","nativeSrc":"12456:3:32","nodeType":"YulIdentifier","src":"12456:3:32"},"nativeSrc":"12456:29:32","nodeType":"YulFunctionCall","src":"12456:29:32"}],"functionName":{"name":"add","nativeSrc":"12444:3:32","nodeType":"YulIdentifier","src":"12444:3:32"},"nativeSrc":"12444:42:32","nodeType":"YulFunctionCall","src":"12444:42:32"},{"kind":"number","nativeSrc":"12488:2:32","nodeType":"YulLiteral","src":"12488:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12440:3:32","nodeType":"YulIdentifier","src":"12440:3:32"},"nativeSrc":"12440:51:32","nodeType":"YulFunctionCall","src":"12440:51:32"},"variableNames":[{"name":"tail","nativeSrc":"12432:4:32","nodeType":"YulIdentifier","src":"12432:4:32"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nativeSrc":"11942:555:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12074:9:32","nodeType":"YulTypedName","src":"12074:9:32","type":""},{"name":"value2","nativeSrc":"12085:6:32","nodeType":"YulTypedName","src":"12085:6:32","type":""},{"name":"value1","nativeSrc":"12093:6:32","nodeType":"YulTypedName","src":"12093:6:32","type":""},{"name":"value0","nativeSrc":"12101:6:32","nodeType":"YulTypedName","src":"12101:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12112:4:32","nodeType":"YulTypedName","src":"12112:4:32","type":""}],"src":"11942:555:32"},{"body":{"nativeSrc":"12552:162:32","nodeType":"YulBlock","src":"12552:162:32","statements":[{"nativeSrc":"12562:26:32","nodeType":"YulVariableDeclaration","src":"12562:26:32","value":{"arguments":[{"name":"value","nativeSrc":"12582:5:32","nodeType":"YulIdentifier","src":"12582:5:32"}],"functionName":{"name":"mload","nativeSrc":"12576:5:32","nodeType":"YulIdentifier","src":"12576:5:32"},"nativeSrc":"12576:12:32","nodeType":"YulFunctionCall","src":"12576:12:32"},"variables":[{"name":"length","nativeSrc":"12566:6:32","nodeType":"YulTypedName","src":"12566:6:32","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"12603:3:32","nodeType":"YulIdentifier","src":"12603:3:32"},{"arguments":[{"name":"value","nativeSrc":"12612:5:32","nodeType":"YulIdentifier","src":"12612:5:32"},{"kind":"number","nativeSrc":"12619:4:32","nodeType":"YulLiteral","src":"12619:4:32","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12608:3:32","nodeType":"YulIdentifier","src":"12608:3:32"},"nativeSrc":"12608:16:32","nodeType":"YulFunctionCall","src":"12608:16:32"},{"name":"length","nativeSrc":"12626:6:32","nodeType":"YulIdentifier","src":"12626:6:32"}],"functionName":{"name":"mcopy","nativeSrc":"12597:5:32","nodeType":"YulIdentifier","src":"12597:5:32"},"nativeSrc":"12597:36:32","nodeType":"YulFunctionCall","src":"12597:36:32"},"nativeSrc":"12597:36:32","nodeType":"YulExpressionStatement","src":"12597:36:32"},{"nativeSrc":"12642:26:32","nodeType":"YulVariableDeclaration","src":"12642:26:32","value":{"arguments":[{"name":"pos","nativeSrc":"12656:3:32","nodeType":"YulIdentifier","src":"12656:3:32"},{"name":"length","nativeSrc":"12661:6:32","nodeType":"YulIdentifier","src":"12661:6:32"}],"functionName":{"name":"add","nativeSrc":"12652:3:32","nodeType":"YulIdentifier","src":"12652:3:32"},"nativeSrc":"12652:16:32","nodeType":"YulFunctionCall","src":"12652:16:32"},"variables":[{"name":"_1","nativeSrc":"12646:2:32","nodeType":"YulTypedName","src":"12646:2:32","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"12684:2:32","nodeType":"YulIdentifier","src":"12684:2:32"},{"kind":"number","nativeSrc":"12688:1:32","nodeType":"YulLiteral","src":"12688:1:32","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12677:6:32","nodeType":"YulIdentifier","src":"12677:6:32"},"nativeSrc":"12677:13:32","nodeType":"YulFunctionCall","src":"12677:13:32"},"nativeSrc":"12677:13:32","nodeType":"YulExpressionStatement","src":"12677:13:32"},{"nativeSrc":"12699:9:32","nodeType":"YulAssignment","src":"12699:9:32","value":{"name":"_1","nativeSrc":"12706:2:32","nodeType":"YulIdentifier","src":"12706:2:32"},"variableNames":[{"name":"end","nativeSrc":"12699:3:32","nodeType":"YulIdentifier","src":"12699:3:32"}]}]},"name":"abi_encode_string","nativeSrc":"12502:212:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"12529:5:32","nodeType":"YulTypedName","src":"12529:5:32","type":""},{"name":"pos","nativeSrc":"12536:3:32","nodeType":"YulTypedName","src":"12536:3:32","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12544:3:32","nodeType":"YulTypedName","src":"12544:3:32","type":""}],"src":"12502:212:32"},{"body":{"nativeSrc":"12906:80:32","nodeType":"YulBlock","src":"12906:80:32","statements":[{"nativeSrc":"12916:64:32","nodeType":"YulAssignment","src":"12916:64:32","value":{"arguments":[{"name":"value1","nativeSrc":"12941:6:32","nodeType":"YulIdentifier","src":"12941:6:32"},{"arguments":[{"name":"value0","nativeSrc":"12967:6:32","nodeType":"YulIdentifier","src":"12967:6:32"},{"name":"pos","nativeSrc":"12975:3:32","nodeType":"YulIdentifier","src":"12975:3:32"}],"functionName":{"name":"abi_encode_string","nativeSrc":"12949:17:32","nodeType":"YulIdentifier","src":"12949:17:32"},"nativeSrc":"12949:30:32","nodeType":"YulFunctionCall","src":"12949:30:32"}],"functionName":{"name":"abi_encode_string","nativeSrc":"12923:17:32","nodeType":"YulIdentifier","src":"12923:17:32"},"nativeSrc":"12923:57:32","nodeType":"YulFunctionCall","src":"12923:57:32"},"variableNames":[{"name":"end","nativeSrc":"12916:3:32","nodeType":"YulIdentifier","src":"12916:3:32"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"12719:267:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"12874:3:32","nodeType":"YulTypedName","src":"12874:3:32","type":""},{"name":"value1","nativeSrc":"12879:6:32","nodeType":"YulTypedName","src":"12879:6:32","type":""},{"name":"value0","nativeSrc":"12887:6:32","nodeType":"YulTypedName","src":"12887:6:32","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12898:3:32","nodeType":"YulTypedName","src":"12898:3:32","type":""}],"src":"12719:267:32"},{"body":{"nativeSrc":"13119:152:32","nodeType":"YulBlock","src":"13119:152:32","statements":[{"nativeSrc":"13129:26:32","nodeType":"YulAssignment","src":"13129:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"13141:9:32","nodeType":"YulIdentifier","src":"13141:9:32"},{"kind":"number","nativeSrc":"13152:2:32","nodeType":"YulLiteral","src":"13152:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13137:3:32","nodeType":"YulIdentifier","src":"13137:3:32"},"nativeSrc":"13137:18:32","nodeType":"YulFunctionCall","src":"13137:18:32"},"variableNames":[{"name":"tail","nativeSrc":"13129:4:32","nodeType":"YulIdentifier","src":"13129:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13171:9:32","nodeType":"YulIdentifier","src":"13171:9:32"},{"arguments":[{"name":"value0","nativeSrc":"13186:6:32","nodeType":"YulIdentifier","src":"13186:6:32"},{"kind":"number","nativeSrc":"13194:26:32","nodeType":"YulLiteral","src":"13194:26:32","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13182:3:32","nodeType":"YulIdentifier","src":"13182:3:32"},"nativeSrc":"13182:39:32","nodeType":"YulFunctionCall","src":"13182:39:32"}],"functionName":{"name":"mstore","nativeSrc":"13164:6:32","nodeType":"YulIdentifier","src":"13164:6:32"},"nativeSrc":"13164:58:32","nodeType":"YulFunctionCall","src":"13164:58:32"},"nativeSrc":"13164:58:32","nodeType":"YulExpressionStatement","src":"13164:58:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13242:9:32","nodeType":"YulIdentifier","src":"13242:9:32"},{"kind":"number","nativeSrc":"13253:2:32","nodeType":"YulLiteral","src":"13253:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13238:3:32","nodeType":"YulIdentifier","src":"13238:3:32"},"nativeSrc":"13238:18:32","nodeType":"YulFunctionCall","src":"13238:18:32"},{"name":"value1","nativeSrc":"13258:6:32","nodeType":"YulIdentifier","src":"13258:6:32"}],"functionName":{"name":"mstore","nativeSrc":"13231:6:32","nodeType":"YulIdentifier","src":"13231:6:32"},"nativeSrc":"13231:34:32","nodeType":"YulFunctionCall","src":"13231:34:32"},"nativeSrc":"13231:34:32","nodeType":"YulExpressionStatement","src":"13231:34:32"}]},"name":"abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"12991:280:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13080:9:32","nodeType":"YulTypedName","src":"13080:9:32","type":""},{"name":"value1","nativeSrc":"13091:6:32","nodeType":"YulTypedName","src":"13091:6:32","type":""},{"name":"value0","nativeSrc":"13099:6:32","nodeType":"YulTypedName","src":"13099:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13110:4:32","nodeType":"YulTypedName","src":"13110:4:32","type":""}],"src":"12991:280:32"},{"body":{"nativeSrc":"13323:132:32","nodeType":"YulBlock","src":"13323:132:32","statements":[{"nativeSrc":"13333:58:32","nodeType":"YulAssignment","src":"13333:58:32","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"13348:1:32","nodeType":"YulIdentifier","src":"13348:1:32"},{"kind":"number","nativeSrc":"13351:14:32","nodeType":"YulLiteral","src":"13351:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13344:3:32","nodeType":"YulIdentifier","src":"13344:3:32"},"nativeSrc":"13344:22:32","nodeType":"YulFunctionCall","src":"13344:22:32"},{"arguments":[{"name":"y","nativeSrc":"13372:1:32","nodeType":"YulIdentifier","src":"13372:1:32"},{"kind":"number","nativeSrc":"13375:14:32","nodeType":"YulLiteral","src":"13375:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13368:3:32","nodeType":"YulIdentifier","src":"13368:3:32"},"nativeSrc":"13368:22:32","nodeType":"YulFunctionCall","src":"13368:22:32"}],"functionName":{"name":"add","nativeSrc":"13340:3:32","nodeType":"YulIdentifier","src":"13340:3:32"},"nativeSrc":"13340:51:32","nodeType":"YulFunctionCall","src":"13340:51:32"},"variableNames":[{"name":"sum","nativeSrc":"13333:3:32","nodeType":"YulIdentifier","src":"13333:3:32"}]},{"body":{"nativeSrc":"13427:22:32","nodeType":"YulBlock","src":"13427:22:32","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13429:16:32","nodeType":"YulIdentifier","src":"13429:16:32"},"nativeSrc":"13429:18:32","nodeType":"YulFunctionCall","src":"13429:18:32"},"nativeSrc":"13429:18:32","nodeType":"YulExpressionStatement","src":"13429:18:32"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"13406:3:32","nodeType":"YulIdentifier","src":"13406:3:32"},{"kind":"number","nativeSrc":"13411:14:32","nodeType":"YulLiteral","src":"13411:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13403:2:32","nodeType":"YulIdentifier","src":"13403:2:32"},"nativeSrc":"13403:23:32","nodeType":"YulFunctionCall","src":"13403:23:32"},"nativeSrc":"13400:49:32","nodeType":"YulIf","src":"13400:49:32"}]},"name":"checked_add_t_uint48","nativeSrc":"13276:179:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"13306:1:32","nodeType":"YulTypedName","src":"13306:1:32","type":""},{"name":"y","nativeSrc":"13309:1:32","nodeType":"YulTypedName","src":"13309:1:32","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"13315:3:32","nodeType":"YulTypedName","src":"13315:3:32","type":""}],"src":"13276:179:32"},{"body":{"nativeSrc":"13663:293:32","nodeType":"YulBlock","src":"13663:293:32","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13680:9:32","nodeType":"YulIdentifier","src":"13680:9:32"},{"arguments":[{"name":"value0","nativeSrc":"13695:6:32","nodeType":"YulIdentifier","src":"13695:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13711:3:32","nodeType":"YulLiteral","src":"13711:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"13716:1:32","nodeType":"YulLiteral","src":"13716:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13707:3:32","nodeType":"YulIdentifier","src":"13707:3:32"},"nativeSrc":"13707:11:32","nodeType":"YulFunctionCall","src":"13707:11:32"},{"kind":"number","nativeSrc":"13720:1:32","nodeType":"YulLiteral","src":"13720:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13703:3:32","nodeType":"YulIdentifier","src":"13703:3:32"},"nativeSrc":"13703:19:32","nodeType":"YulFunctionCall","src":"13703:19:32"}],"functionName":{"name":"and","nativeSrc":"13691:3:32","nodeType":"YulIdentifier","src":"13691:3:32"},"nativeSrc":"13691:32:32","nodeType":"YulFunctionCall","src":"13691:32:32"}],"functionName":{"name":"mstore","nativeSrc":"13673:6:32","nodeType":"YulIdentifier","src":"13673:6:32"},"nativeSrc":"13673:51:32","nodeType":"YulFunctionCall","src":"13673:51:32"},"nativeSrc":"13673:51:32","nodeType":"YulExpressionStatement","src":"13673:51:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13744:9:32","nodeType":"YulIdentifier","src":"13744:9:32"},{"kind":"number","nativeSrc":"13755:2:32","nodeType":"YulLiteral","src":"13755:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13740:3:32","nodeType":"YulIdentifier","src":"13740:3:32"},"nativeSrc":"13740:18:32","nodeType":"YulFunctionCall","src":"13740:18:32"},{"arguments":[{"name":"value1","nativeSrc":"13764:6:32","nodeType":"YulIdentifier","src":"13764:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13780:3:32","nodeType":"YulLiteral","src":"13780:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"13785:1:32","nodeType":"YulLiteral","src":"13785:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13776:3:32","nodeType":"YulIdentifier","src":"13776:3:32"},"nativeSrc":"13776:11:32","nodeType":"YulFunctionCall","src":"13776:11:32"},{"kind":"number","nativeSrc":"13789:1:32","nodeType":"YulLiteral","src":"13789:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13772:3:32","nodeType":"YulIdentifier","src":"13772:3:32"},"nativeSrc":"13772:19:32","nodeType":"YulFunctionCall","src":"13772:19:32"}],"functionName":{"name":"and","nativeSrc":"13760:3:32","nodeType":"YulIdentifier","src":"13760:3:32"},"nativeSrc":"13760:32:32","nodeType":"YulFunctionCall","src":"13760:32:32"}],"functionName":{"name":"mstore","nativeSrc":"13733:6:32","nodeType":"YulIdentifier","src":"13733:6:32"},"nativeSrc":"13733:60:32","nodeType":"YulFunctionCall","src":"13733:60:32"},"nativeSrc":"13733:60:32","nodeType":"YulExpressionStatement","src":"13733:60:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13813:9:32","nodeType":"YulIdentifier","src":"13813:9:32"},{"kind":"number","nativeSrc":"13824:2:32","nodeType":"YulLiteral","src":"13824:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13809:3:32","nodeType":"YulIdentifier","src":"13809:3:32"},"nativeSrc":"13809:18:32","nodeType":"YulFunctionCall","src":"13809:18:32"},{"name":"value2","nativeSrc":"13829:6:32","nodeType":"YulIdentifier","src":"13829:6:32"}],"functionName":{"name":"mstore","nativeSrc":"13802:6:32","nodeType":"YulIdentifier","src":"13802:6:32"},"nativeSrc":"13802:34:32","nodeType":"YulFunctionCall","src":"13802:34:32"},"nativeSrc":"13802:34:32","nodeType":"YulExpressionStatement","src":"13802:34:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13856:9:32","nodeType":"YulIdentifier","src":"13856:9:32"},{"kind":"number","nativeSrc":"13867:2:32","nodeType":"YulLiteral","src":"13867:2:32","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"13852:3:32","nodeType":"YulIdentifier","src":"13852:3:32"},"nativeSrc":"13852:18:32","nodeType":"YulFunctionCall","src":"13852:18:32"},{"kind":"number","nativeSrc":"13872:3:32","nodeType":"YulLiteral","src":"13872:3:32","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"13845:6:32","nodeType":"YulIdentifier","src":"13845:6:32"},"nativeSrc":"13845:31:32","nodeType":"YulFunctionCall","src":"13845:31:32"},"nativeSrc":"13845:31:32","nodeType":"YulExpressionStatement","src":"13845:31:32"},{"nativeSrc":"13885:65:32","nodeType":"YulAssignment","src":"13885:65:32","value":{"arguments":[{"name":"value3","nativeSrc":"13922:6:32","nodeType":"YulIdentifier","src":"13922:6:32"},{"arguments":[{"name":"headStart","nativeSrc":"13934:9:32","nodeType":"YulIdentifier","src":"13934:9:32"},{"kind":"number","nativeSrc":"13945:3:32","nodeType":"YulLiteral","src":"13945:3:32","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"13930:3:32","nodeType":"YulIdentifier","src":"13930:3:32"},"nativeSrc":"13930:19:32","nodeType":"YulFunctionCall","src":"13930:19:32"}],"functionName":{"name":"abi_encode_string_memory_ptr","nativeSrc":"13893:28:32","nodeType":"YulIdentifier","src":"13893:28:32"},"nativeSrc":"13893:57:32","nodeType":"YulFunctionCall","src":"13893:57:32"},"variableNames":[{"name":"tail","nativeSrc":"13885:4:32","nodeType":"YulIdentifier","src":"13885:4:32"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"13460:496:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13608:9:32","nodeType":"YulTypedName","src":"13608:9:32","type":""},{"name":"value3","nativeSrc":"13619:6:32","nodeType":"YulTypedName","src":"13619:6:32","type":""},{"name":"value2","nativeSrc":"13627:6:32","nodeType":"YulTypedName","src":"13627:6:32","type":""},{"name":"value1","nativeSrc":"13635:6:32","nodeType":"YulTypedName","src":"13635:6:32","type":""},{"name":"value0","nativeSrc":"13643:6:32","nodeType":"YulTypedName","src":"13643:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13654:4:32","nodeType":"YulTypedName","src":"13654:4:32","type":""}],"src":"13460:496:32"},{"body":{"nativeSrc":"14041:169:32","nodeType":"YulBlock","src":"14041:169:32","statements":[{"body":{"nativeSrc":"14087:16:32","nodeType":"YulBlock","src":"14087:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14096:1:32","nodeType":"YulLiteral","src":"14096:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"14099:1:32","nodeType":"YulLiteral","src":"14099:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14089:6:32","nodeType":"YulIdentifier","src":"14089:6:32"},"nativeSrc":"14089:12:32","nodeType":"YulFunctionCall","src":"14089:12:32"},"nativeSrc":"14089:12:32","nodeType":"YulExpressionStatement","src":"14089:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14062:7:32","nodeType":"YulIdentifier","src":"14062:7:32"},{"name":"headStart","nativeSrc":"14071:9:32","nodeType":"YulIdentifier","src":"14071:9:32"}],"functionName":{"name":"sub","nativeSrc":"14058:3:32","nodeType":"YulIdentifier","src":"14058:3:32"},"nativeSrc":"14058:23:32","nodeType":"YulFunctionCall","src":"14058:23:32"},{"kind":"number","nativeSrc":"14083:2:32","nodeType":"YulLiteral","src":"14083:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"14054:3:32","nodeType":"YulIdentifier","src":"14054:3:32"},"nativeSrc":"14054:32:32","nodeType":"YulFunctionCall","src":"14054:32:32"},"nativeSrc":"14051:52:32","nodeType":"YulIf","src":"14051:52:32"},{"nativeSrc":"14112:29:32","nodeType":"YulVariableDeclaration","src":"14112:29:32","value":{"arguments":[{"name":"headStart","nativeSrc":"14131:9:32","nodeType":"YulIdentifier","src":"14131:9:32"}],"functionName":{"name":"mload","nativeSrc":"14125:5:32","nodeType":"YulIdentifier","src":"14125:5:32"},"nativeSrc":"14125:16:32","nodeType":"YulFunctionCall","src":"14125:16:32"},"variables":[{"name":"value","nativeSrc":"14116:5:32","nodeType":"YulTypedName","src":"14116:5:32","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14174:5:32","nodeType":"YulIdentifier","src":"14174:5:32"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"14150:23:32","nodeType":"YulIdentifier","src":"14150:23:32"},"nativeSrc":"14150:30:32","nodeType":"YulFunctionCall","src":"14150:30:32"},"nativeSrc":"14150:30:32","nodeType":"YulExpressionStatement","src":"14150:30:32"},{"nativeSrc":"14189:15:32","nodeType":"YulAssignment","src":"14189:15:32","value":{"name":"value","nativeSrc":"14199:5:32","nodeType":"YulIdentifier","src":"14199:5:32"},"variableNames":[{"name":"value0","nativeSrc":"14189:6:32","nodeType":"YulIdentifier","src":"14189:6:32"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nativeSrc":"13961:249:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14007:9:32","nodeType":"YulTypedName","src":"14007:9:32","type":""},{"name":"dataEnd","nativeSrc":"14018:7:32","nodeType":"YulTypedName","src":"14018:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14030:6:32","nodeType":"YulTypedName","src":"14030:6:32","type":""}],"src":"13961:249:32"},{"body":{"nativeSrc":"14344:145:32","nodeType":"YulBlock","src":"14344:145:32","statements":[{"nativeSrc":"14354:26:32","nodeType":"YulAssignment","src":"14354:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"14366:9:32","nodeType":"YulIdentifier","src":"14366:9:32"},{"kind":"number","nativeSrc":"14377:2:32","nodeType":"YulLiteral","src":"14377:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14362:3:32","nodeType":"YulIdentifier","src":"14362:3:32"},"nativeSrc":"14362:18:32","nodeType":"YulFunctionCall","src":"14362:18:32"},"variableNames":[{"name":"tail","nativeSrc":"14354:4:32","nodeType":"YulIdentifier","src":"14354:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"14396:9:32","nodeType":"YulIdentifier","src":"14396:9:32"},{"arguments":[{"name":"value0","nativeSrc":"14411:6:32","nodeType":"YulIdentifier","src":"14411:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14427:3:32","nodeType":"YulLiteral","src":"14427:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"14432:1:32","nodeType":"YulLiteral","src":"14432:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"14423:3:32","nodeType":"YulIdentifier","src":"14423:3:32"},"nativeSrc":"14423:11:32","nodeType":"YulFunctionCall","src":"14423:11:32"},{"kind":"number","nativeSrc":"14436:1:32","nodeType":"YulLiteral","src":"14436:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"14419:3:32","nodeType":"YulIdentifier","src":"14419:3:32"},"nativeSrc":"14419:19:32","nodeType":"YulFunctionCall","src":"14419:19:32"}],"functionName":{"name":"and","nativeSrc":"14407:3:32","nodeType":"YulIdentifier","src":"14407:3:32"},"nativeSrc":"14407:32:32","nodeType":"YulFunctionCall","src":"14407:32:32"}],"functionName":{"name":"mstore","nativeSrc":"14389:6:32","nodeType":"YulIdentifier","src":"14389:6:32"},"nativeSrc":"14389:51:32","nodeType":"YulFunctionCall","src":"14389:51:32"},"nativeSrc":"14389:51:32","nodeType":"YulExpressionStatement","src":"14389:51:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14460:9:32","nodeType":"YulIdentifier","src":"14460:9:32"},{"kind":"number","nativeSrc":"14471:2:32","nodeType":"YulLiteral","src":"14471:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14456:3:32","nodeType":"YulIdentifier","src":"14456:3:32"},"nativeSrc":"14456:18:32","nodeType":"YulFunctionCall","src":"14456:18:32"},{"name":"value1","nativeSrc":"14476:6:32","nodeType":"YulIdentifier","src":"14476:6:32"}],"functionName":{"name":"mstore","nativeSrc":"14449:6:32","nodeType":"YulIdentifier","src":"14449:6:32"},"nativeSrc":"14449:34:32","nodeType":"YulFunctionCall","src":"14449:34:32"},"nativeSrc":"14449:34:32","nodeType":"YulExpressionStatement","src":"14449:34:32"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nativeSrc":"14215:274:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14305:9:32","nodeType":"YulTypedName","src":"14305:9:32","type":""},{"name":"value1","nativeSrc":"14316:6:32","nodeType":"YulTypedName","src":"14316:6:32","type":""},{"name":"value0","nativeSrc":"14324:6:32","nodeType":"YulTypedName","src":"14324:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"14335:4:32","nodeType":"YulTypedName","src":"14335:4:32","type":""}],"src":"14215:274:32"},{"body":{"nativeSrc":"14630:130:32","nodeType":"YulBlock","src":"14630:130:32","statements":[{"nativeSrc":"14640:26:32","nodeType":"YulAssignment","src":"14640:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"14652:9:32","nodeType":"YulIdentifier","src":"14652:9:32"},{"kind":"number","nativeSrc":"14663:2:32","nodeType":"YulLiteral","src":"14663:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14648:3:32","nodeType":"YulIdentifier","src":"14648:3:32"},"nativeSrc":"14648:18:32","nodeType":"YulFunctionCall","src":"14648:18:32"},"variableNames":[{"name":"tail","nativeSrc":"14640:4:32","nodeType":"YulIdentifier","src":"14640:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"14682:9:32","nodeType":"YulIdentifier","src":"14682:9:32"},{"arguments":[{"name":"value0","nativeSrc":"14697:6:32","nodeType":"YulIdentifier","src":"14697:6:32"},{"kind":"number","nativeSrc":"14705:4:32","nodeType":"YulLiteral","src":"14705:4:32","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"14693:3:32","nodeType":"YulIdentifier","src":"14693:3:32"},"nativeSrc":"14693:17:32","nodeType":"YulFunctionCall","src":"14693:17:32"}],"functionName":{"name":"mstore","nativeSrc":"14675:6:32","nodeType":"YulIdentifier","src":"14675:6:32"},"nativeSrc":"14675:36:32","nodeType":"YulFunctionCall","src":"14675:36:32"},"nativeSrc":"14675:36:32","nodeType":"YulExpressionStatement","src":"14675:36:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14731:9:32","nodeType":"YulIdentifier","src":"14731:9:32"},{"kind":"number","nativeSrc":"14742:2:32","nodeType":"YulLiteral","src":"14742:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14727:3:32","nodeType":"YulIdentifier","src":"14727:3:32"},"nativeSrc":"14727:18:32","nodeType":"YulFunctionCall","src":"14727:18:32"},{"name":"value1","nativeSrc":"14747:6:32","nodeType":"YulIdentifier","src":"14747:6:32"}],"functionName":{"name":"mstore","nativeSrc":"14720:6:32","nodeType":"YulIdentifier","src":"14720:6:32"},"nativeSrc":"14720:34:32","nodeType":"YulFunctionCall","src":"14720:34:32"},"nativeSrc":"14720:34:32","nodeType":"YulExpressionStatement","src":"14720:34:32"}]},"name":"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed","nativeSrc":"14494:266:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14591:9:32","nodeType":"YulTypedName","src":"14591:9:32","type":""},{"name":"value1","nativeSrc":"14602:6:32","nodeType":"YulTypedName","src":"14602:6:32","type":""},{"name":"value0","nativeSrc":"14610:6:32","nodeType":"YulTypedName","src":"14610:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"14621:4:32","nodeType":"YulTypedName","src":"14621:4:32","type":""}],"src":"14494:266:32"},{"body":{"nativeSrc":"14813:134:32","nodeType":"YulBlock","src":"14813:134:32","statements":[{"nativeSrc":"14823:59:32","nodeType":"YulAssignment","src":"14823:59:32","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"14839:1:32","nodeType":"YulIdentifier","src":"14839:1:32"},{"kind":"number","nativeSrc":"14842:14:32","nodeType":"YulLiteral","src":"14842:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"14835:3:32","nodeType":"YulIdentifier","src":"14835:3:32"},"nativeSrc":"14835:22:32","nodeType":"YulFunctionCall","src":"14835:22:32"},{"arguments":[{"name":"y","nativeSrc":"14863:1:32","nodeType":"YulIdentifier","src":"14863:1:32"},{"kind":"number","nativeSrc":"14866:14:32","nodeType":"YulLiteral","src":"14866:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"14859:3:32","nodeType":"YulIdentifier","src":"14859:3:32"},"nativeSrc":"14859:22:32","nodeType":"YulFunctionCall","src":"14859:22:32"}],"functionName":{"name":"sub","nativeSrc":"14831:3:32","nodeType":"YulIdentifier","src":"14831:3:32"},"nativeSrc":"14831:51:32","nodeType":"YulFunctionCall","src":"14831:51:32"},"variableNames":[{"name":"diff","nativeSrc":"14823:4:32","nodeType":"YulIdentifier","src":"14823:4:32"}]},{"body":{"nativeSrc":"14919:22:32","nodeType":"YulBlock","src":"14919:22:32","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14921:16:32","nodeType":"YulIdentifier","src":"14921:16:32"},"nativeSrc":"14921:18:32","nodeType":"YulFunctionCall","src":"14921:18:32"},"nativeSrc":"14921:18:32","nodeType":"YulExpressionStatement","src":"14921:18:32"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"14897:4:32","nodeType":"YulIdentifier","src":"14897:4:32"},{"kind":"number","nativeSrc":"14903:14:32","nodeType":"YulLiteral","src":"14903:14:32","type":"","value":"0xffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14894:2:32","nodeType":"YulIdentifier","src":"14894:2:32"},"nativeSrc":"14894:24:32","nodeType":"YulFunctionCall","src":"14894:24:32"},"nativeSrc":"14891:50:32","nodeType":"YulIf","src":"14891:50:32"}]},"name":"checked_sub_t_uint48","nativeSrc":"14765:182:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"14795:1:32","nodeType":"YulTypedName","src":"14795:1:32","type":""},{"name":"y","nativeSrc":"14798:1:32","nodeType":"YulTypedName","src":"14798:1:32","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"14804:4:32","nodeType":"YulTypedName","src":"14804:4:32","type":""}],"src":"14765:182:32"},{"body":{"nativeSrc":"15001:79:32","nodeType":"YulBlock","src":"15001:79:32","statements":[{"nativeSrc":"15011:17:32","nodeType":"YulAssignment","src":"15011:17:32","value":{"arguments":[{"name":"x","nativeSrc":"15023:1:32","nodeType":"YulIdentifier","src":"15023:1:32"},{"name":"y","nativeSrc":"15026:1:32","nodeType":"YulIdentifier","src":"15026:1:32"}],"functionName":{"name":"sub","nativeSrc":"15019:3:32","nodeType":"YulIdentifier","src":"15019:3:32"},"nativeSrc":"15019:9:32","nodeType":"YulFunctionCall","src":"15019:9:32"},"variableNames":[{"name":"diff","nativeSrc":"15011:4:32","nodeType":"YulIdentifier","src":"15011:4:32"}]},{"body":{"nativeSrc":"15052:22:32","nodeType":"YulBlock","src":"15052:22:32","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15054:16:32","nodeType":"YulIdentifier","src":"15054:16:32"},"nativeSrc":"15054:18:32","nodeType":"YulFunctionCall","src":"15054:18:32"},"nativeSrc":"15054:18:32","nodeType":"YulExpressionStatement","src":"15054:18:32"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"15043:4:32","nodeType":"YulIdentifier","src":"15043:4:32"},{"name":"x","nativeSrc":"15049:1:32","nodeType":"YulIdentifier","src":"15049:1:32"}],"functionName":{"name":"gt","nativeSrc":"15040:2:32","nodeType":"YulIdentifier","src":"15040:2:32"},"nativeSrc":"15040:11:32","nodeType":"YulFunctionCall","src":"15040:11:32"},"nativeSrc":"15037:37:32","nodeType":"YulIf","src":"15037:37:32"}]},"name":"checked_sub_t_uint256","nativeSrc":"14952:128:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"14983:1:32","nodeType":"YulTypedName","src":"14983:1:32","type":""},{"name":"y","nativeSrc":"14986:1:32","nodeType":"YulTypedName","src":"14986:1:32","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"14992:4:32","nodeType":"YulTypedName","src":"14992:4:32","type":""}],"src":"14952:128:32"},{"body":{"nativeSrc":"15117:95:32","nodeType":"YulBlock","src":"15117:95:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15134:1:32","nodeType":"YulLiteral","src":"15134:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15141:3:32","nodeType":"YulLiteral","src":"15141:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"15146:10:32","nodeType":"YulLiteral","src":"15146:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15137:3:32","nodeType":"YulIdentifier","src":"15137:3:32"},"nativeSrc":"15137:20:32","nodeType":"YulFunctionCall","src":"15137:20:32"}],"functionName":{"name":"mstore","nativeSrc":"15127:6:32","nodeType":"YulIdentifier","src":"15127:6:32"},"nativeSrc":"15127:31:32","nodeType":"YulFunctionCall","src":"15127:31:32"},"nativeSrc":"15127:31:32","nodeType":"YulExpressionStatement","src":"15127:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15174:1:32","nodeType":"YulLiteral","src":"15174:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"15177:4:32","nodeType":"YulLiteral","src":"15177:4:32","type":"","value":"0x31"}],"functionName":{"name":"mstore","nativeSrc":"15167:6:32","nodeType":"YulIdentifier","src":"15167:6:32"},"nativeSrc":"15167:15:32","nodeType":"YulFunctionCall","src":"15167:15:32"},"nativeSrc":"15167:15:32","nodeType":"YulExpressionStatement","src":"15167:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15198:1:32","nodeType":"YulLiteral","src":"15198:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"15201:4:32","nodeType":"YulLiteral","src":"15201:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15191:6:32","nodeType":"YulIdentifier","src":"15191:6:32"},"nativeSrc":"15191:15:32","nodeType":"YulFunctionCall","src":"15191:15:32"},"nativeSrc":"15191:15:32","nodeType":"YulExpressionStatement","src":"15191:15:32"}]},"name":"panic_error_0x31","nativeSrc":"15085:127:32","nodeType":"YulFunctionDefinition","src":"15085:127:32"}]},"contents":"{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint48__to_t_uint48__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint96(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffff))) { revert(0, 0) }\n value1 := value\n }\n function abi_encode_string_memory_ptr(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n mcopy(add(pos, 0x20), add(value, 0x20), length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string_memory_ptr(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := 0\n value := calldataload(add(headStart, 32))\n value1 := value\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let value := 0\n value := calldataload(add(headStart, 64))\n value2 := value\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n let value_1 := 0\n value_1 := calldataload(add(headStart, 32))\n value1 := value_1\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_string_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n value0 := add(_1, 32)\n value1 := length\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_uint48(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_uint48_t_uint48__to_t_uint48_t_uint48__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffff))\n mstore(add(headStart, 32), and(value1, 0xffffffffffff))\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let value := 0\n value := calldataload(add(headStart, 64))\n value2 := value\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_1)\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, length)\n if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_1, 32), length)\n mstore(add(add(memPtr, length), 32), 0)\n value3 := memPtr\n }\n function abi_encode_tuple_t_address_t_uint48__to_t_address_t_uint48__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), and(value1, 0xffffffffffff))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint96__to_t_uint96__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffff))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _1 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _1) { start := add(start, 1) }\n { sstore(start, 0) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(slot, src, len)\n {\n if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n let srcOffset := 0\n switch gt(len, 31)\n case 1 {\n let loopEnd := and(len, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) }\n {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 0x20)\n }\n if lt(loopEnd, len)\n {\n sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), not(0)))))\n }\n sstore(slot, add(shl(1, len), 1))\n }\n default {\n let value := 0\n if len\n {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n }\n }\n function abi_encode_tuple_t_string_memory_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_string_memory_ptr(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n mstore(tail_1, value2)\n calldatacopy(add(tail_1, 32), value1, value2)\n mstore(add(add(tail_1, value2), 32), 0)\n tail := add(add(tail_1, and(add(value2, 31), not(31))), 32)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mcopy(pos, add(value, 0x20), length)\n let _1 := add(pos, length)\n mstore(_1, 0)\n end := _1\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n end := abi_encode_string(value1, abi_encode_string(value0, pos))\n }\n function abi_encode_tuple_t_uint96_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function checked_add_t_uint48(x, y) -> sum\n {\n sum := add(and(x, 0xffffffffffff), and(y, 0xffffffffffff))\n if gt(sum, 0xffffffffffff) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string_memory_ptr(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xff))\n mstore(add(headStart, 32), value1)\n }\n function checked_sub_t_uint48(x, y) -> diff\n {\n diff := sub(and(x, 0xffffffffffff), and(y, 0xffffffffffff))\n if gt(diff, 0xffffffffffff) { panic_error_0x11() }\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}","id":32,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561000f575f80fd5b506004361061026b575f3560e01c80636c0360eb1161014b578063a22cb465116100bf578063cf6eefb711610084578063cf6eefb71461054e578063d53913931461057c578063d547741f146105a3578063d602b9fd146105b6578063e8a3d485146105be578063e985e9c5146105c6575f80fd5b8063a22cb46514610505578063b88d4fde14610518578063c87b56dd1461052b578063cc8463c81461053e578063cefc142914610546575f80fd5b806391d148541161011057806391d1485414610496578063938e3d7b146104a957806395d89b41146104bc578063a1448194146104c4578063a1eda53c146104d7578063a217fddf146104fe575f80fd5b80636c0360eb1461045a57806370a08231146104625780638456cb591461047557806384ef8ffc1461047d5780638da5cb5b1461048e575f80fd5b80632f2ff15d116101e25780634f6ccce7116101a75780634f6ccce7146103f057806355f804b3146104035780635c975abb14610416578063634e93da146104215780636352211e14610434578063649a5ec714610447575f80fd5b80632f2ff15d1461039c5780632f745c59146103af57806336568abe146103c25780633f4ba83a146103d557806342842e0e146103dd575f80fd5b8063095ea7b311610233578063095ea7b3146103085780630aa6220b1461031b57806318160ddd1461032357806323b872dd14610335578063248a9ca3146103485780632a55205a1461036a575f80fd5b806301ffc9a71461026f578063022d63fb1461029757806302fa7c47146102b357806306fdde03146102c8578063081812fc146102dd575b5f80fd5b61028261027d36600461205c565b6105d9565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff909116815260200161028e565b6102c66102c1366004612092565b6105e9565b005b6102d0610670565b60405161028e9190612100565b6102f06102eb366004612112565b6106ff565b6040516001600160a01b03909116815260200161028e565b6102c6610316366004612129565b610726565b6102c6610735565b6008545b60405190815260200161028e565b6102c6610343366004612151565b61074a565b610327610356366004612112565b5f908152600c602052604090206001015490565b61037d61037836600461218b565b6107d8565b604080516001600160a01b03909316835260208301919091520161028e565b6102c66103aa3660046121ab565b61085b565b6103276103bd366004612129565b610883565b6102c66103d03660046121ab565b6108e6565b6102c661098c565b6102c66103eb366004612151565b61099e565b6103276103fe366004612112565b6109bd565b6102c66104113660046121d5565b610a12565b600f5460ff16610282565b6102c661042f366004612243565b610afb565b6102f0610442366004612112565b610b0e565b6102c661045536600461225c565b610b18565b6102d0610b2b565b610327610470366004612243565b610b3a565b6102c6610b7f565b600e546001600160a01b03166102f0565b6102f0610b91565b6102826104a43660046121ab565b610ba9565b6102c66104b73660046121d5565b610bd3565b6102d0610cae565b6102c66104d2366004612129565b610cbd565b6104df610cf9565b6040805165ffffffffffff93841681529290911660208301520161028e565b6103275f81565b6102c6610513366004612281565b610d4b565b6102c66105263660046122c3565b610d56565b6102d0610539366004612112565b610d6e565b61029c610dd3565b6102c6610e31565b610556610e70565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161028e565b6103277f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102c66105b13660046121ab565b610e91565b6102c6610eb9565b6102d0610ecb565b6102826105d43660046123a0565b610eda565b5f6105e382610f07565b92915050565b5f6105f381610f2b565b6001600160a01b03831661061a5760405163d92e233d60e01b815260040160405180910390fd5b6106248383610f35565b6040516001600160601b03831681526001600160a01b038416907fe12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf49060200160405180910390a2505050565b60605f805461067e906123c8565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa906123c8565b80156106f55780601f106106cc576101008083540402835291602001916106f5565b820191905f5260205f20905b8154815290600101906020018083116106d857829003601f168201915b5050505050905090565b5f61070982610fd7565b505f828152600460205260409020546001600160a01b03166105e3565b61073182823361100f565b5050565b5f61073f81610f2b565b61074761101c565b50565b6001600160a01b03821661077857604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610784838333611028565b9050836001600160a01b0316816001600160a01b0316146107d2576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161076f565b50505050565b5f828152600b6020526040812080548291906001600160a01b03811690600160a01b90046001600160601b03168161082b575050600a546001600160a01b03811690600160a01b90046001600160601b03165b5f6127106108426001600160601b03841689612414565b61084c919061242b565b92989297509195505050505050565b8161087957604051631fe1e13d60e11b815260040160405180910390fd5b610731828261103c565b5f61088d83610b3a565b82106108be5760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161076f565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b811580156109015750600e546001600160a01b038281169116145b15610982575f80610910610e70565b90925090506001600160a01b038216151580610932575065ffffffffffff8116155b8061094557504265ffffffffffff821610155b1561096d576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161076f565b5050600d805465ffffffffffff60a01b191690555b6107318282611060565b5f61099681610f2b565b610747611093565b6109b883838360405180602001604052805f815250610d56565b505050565b5f6109c760085490565b82106109ef5760405163295f44f760e21b81525f60048201526024810183905260440161076f565b60088281548110610a0257610a0261244a565b905f5260205f2001549050919050565b5f610a1c81610f2b565b5f60108054610a2a906123c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a56906123c8565b8015610aa15780601f10610a7857610100808354040283529160200191610aa1565b820191905f5260205f20905b815481529060010190602001808311610a8457829003601f168201915b50505050509050838360109182610ab99291906124a2565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1818585604051610aed9392919061255c565b60405180910390a150505050565b5f610b0581610f2b565b610731826110e5565b5f6105e382610fd7565b5f610b2281610f2b565b61073182611157565b60606010805461067e906123c8565b5f6001600160a01b038216610b64576040516322718ad960e21b81525f600482015260240161076f565b506001600160a01b03165f9081526003602052604090205490565b5f610b8981610f2b565b6107476111c6565b5f610ba4600e546001600160a01b031690565b905090565b5f918252600c602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610bdd81610f2b565b5f60118054610beb906123c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610c17906123c8565b8015610c625780601f10610c3957610100808354040283529160200191610c62565b820191905f5260205f20905b815481529060010190602001808311610c4557829003601f168201915b50505050509050838360119182610c7a9291906124a2565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16818585604051610aed9392919061255c565b60606001805461067e906123c8565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610ce781610f2b565b610cef611203565b6109b88383611227565b600e545f90600160d01b900465ffffffffffff168015158015610d2457504265ffffffffffff821610155b610d2f575f80610d43565b600e54600160a01b900465ffffffffffff16815b915091509091565b610731338383611240565b610d6184848461074a565b6107d23385858585611307565b6060610d7982610fd7565b505f610d83610b2b565b90505f815111610da15760405180602001604052805f815250610dcc565b80610dab8461142f565b604051602001610dbc9291906125b7565b6040516020818303038152906040525b9392505050565b600e545f90600160d01b900465ffffffffffff168015158015610dfd57504265ffffffffffff8216105b610e1857600d54600160d01b900465ffffffffffff16610e2b565b600e54600160a01b900465ffffffffffff165b91505090565b5f610e3a610e70565b509050336001600160a01b03821614610e6857604051636116401160e11b815233600482015260240161076f565b6107476114bf565b600d546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610eaf57604051631fe1e13d60e11b815260040160405180910390fd5b6107318282611555565b5f610ec381610f2b565b610747611579565b60606011805461067e906123c8565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166318a4c3c360e11b14806105e357506105e382611583565b61074781336115a7565b6127106001600160601b038216811015610f7457604051636f483d0960e01b81526001600160601b03831660048201526024810182905260440161076f565b6001600160a01b038316610f9d57604051635b6cc80560e11b81525f600482015260240161076f565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b5f818152600260205260408120546001600160a01b0316806105e357604051637e27328960e01b81526004810184905260240161076f565b6109b883838360016115e0565b6110265f806116e4565b565b5f6110348484846117a3565b949350505050565b5f828152600c602052604090206001015461105681610f2b565b6107d2838361186e565b6001600160a01b03811633146110895760405163334bd91960e11b815260040160405180910390fd5b6109b882826118d4565b61109b611910565b600f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f6110ee610dd3565b6110f742611933565b61110191906125cb565b905061110d8282611969565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f611161826119e6565b61116a42611933565b61117491906125cb565b905061118082826116e4565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6111ce611203565b600f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110c83390565b600f5460ff16156110265760405163d93c066560e01b815260040160405180910390fd5b610731828260405180602001604052805f815250611a2d565b6001600160a01b0383166112695760405163a9fbf51f60e01b81525f600482015260240161076f565b6001600160a01b03821661129b57604051630b61174360e31b81526001600160a01b038316600482015260240161076f565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561142857604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906113499088908890879087906004016125e9565b6020604051808303815f875af1925050508015611383575060408051601f3d908101601f1916820190925261138091810190612625565b60015b6113ea573d8080156113b0576040519150601f19603f3d011682016040523d82523d5f602084013e6113b5565b606091505b5080515f036113e257604051633250574960e11b81526001600160a01b038516600482015260240161076f565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461142657604051633250574960e11b81526001600160a01b038516600482015260240161076f565b505b5050505050565b60605f61143b83611a44565b60010190505f8167ffffffffffffffff81111561145a5761145a6122af565b6040519080825280601f01601f191660200182016040528015611484576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461148e57509392505050565b5f806114c9610e70565b915091506114de8165ffffffffffff16151590565b15806114f257504265ffffffffffff821610155b1561151a576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161076f565b6115355f611530600e546001600160a01b031690565b6118d4565b506115405f8361186e565b5050600d80546001600160d01b031916905550565b5f828152600c602052604090206001015461156f81610f2b565b6107d283836118d4565b6110265f80611969565b5f6001600160e01b03198216637965db0b60e01b14806105e357506105e382611b1b565b6115b18282610ba9565b6107315760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161076f565b80806115f457506001600160a01b03821615155b156116b5575f61160384610fd7565b90506001600160a01b0383161580159061162f5750826001600160a01b0316816001600160a01b031614155b801561164257506116408184610eda565b155b1561166b5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161076f565b81156116b35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600e54600160d01b900465ffffffffffff168015611766574265ffffffffffff8216101561173d57600e54600d80546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611766565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600e80546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b5f806117b0858585611b3f565b90506001600160a01b03811661180c5761180784600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61182f565b846001600160a01b0316816001600160a01b03161461182f5761182f8185611c31565b6001600160a01b03851661184b5761184684611cae565b611034565b846001600160a01b0316816001600160a01b031614611034576110348585611d55565b5f826118ca575f611887600e546001600160a01b031690565b6001600160a01b0316146118ae57604051631fe1e13d60e11b815260040160405180910390fd5b600e80546001600160a01b0319166001600160a01b0384161790555b610dcc8383611da3565b5f821580156118f05750600e546001600160a01b038381169116145b1561190657600e80546001600160a01b03191690555b610dcc8383611e34565b600f5460ff1661102657604051638dfc202b60e01b815260040160405180910390fd5b5f65ffffffffffff821115611965576040516306dfcc6560e41b8152603060048201526024810183905260440161076f565b5090565b5f611972610e70565b600d805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b0388161717905591506119b490508165ffffffffffff16151590565b156109b8576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a1505050565b5f806119f0610dd3565b90508065ffffffffffff168365ffffffffffff1611611a1857611a138382612640565b610dcc565b610dcc65ffffffffffff841662069780611e9f565b611a378383611eae565b6109b8335f858585611307565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611a825772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611aae576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611acc57662386f26fc10000830492506010015b6305f5e1008310611ae4576305f5e100830492506008015b6127108310611af857612710830492506004015b60648310611b0a576064830492506002015b600a83106105e35760010192915050565b5f6001600160e01b0319821663152a902d60e11b14806105e357506105e382611f0f565b5f828152600260205260408120546001600160a01b0390811690831615611b6b57611b6b818486611f33565b6001600160a01b03811615611ba557611b865f855f806115e0565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611bd3576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f611c3b83610b3a565b5f838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314611c90575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f90611cbf9060019061265e565b5f8381526009602052604081205460088054939450909284908110611ce657611ce661244a565b905f5260205f20015490508060088381548110611d0557611d0561244a565b5f918252602080832090910192909255828152600990915260408082208490558582528120556008805480611d3c57611d3c612671565b600190038181905f5260205f20015f9055905550505050565b5f6001611d6184610b3a565b611d6b919061265e565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b5f611dae8383610ba9565b611e2d575f838152600c602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611de53390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e3565b505f6105e3565b5f611e3f8383610ba9565b15611e2d575f838152600c602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e3565b5f828218828410028218610dcc565b6001600160a01b038216611ed757604051633250574960e11b81525f600482015260240161076f565b5f611ee383835f611028565b90506001600160a01b038116156109b8576040516339e3563760e11b81525f600482015260240161076f565b5f6001600160e01b0319821663780e9d6360e01b14806105e357506105e382611f97565b611f3e838383611fe6565b6109b8576001600160a01b038316611f6c57604051637e27328960e01b81526004810182905260240161076f565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161076f565b5f6001600160e01b031982166380ac58cd60e01b1480611fc757506001600160e01b03198216635b5e139f60e01b145b806105e357506301ffc9a760e01b6001600160e01b03198316146105e3565b5f6001600160a01b038316158015906110345750826001600160a01b0316846001600160a01b0316148061201f575061201f8484610eda565b806110345750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610747575f80fd5b5f6020828403121561206c575f80fd5b8135610dcc81612047565b80356001600160a01b038116811461208d575f80fd5b919050565b5f80604083850312156120a3575f80fd5b6120ac83612077565b915060208301356001600160601b03811681146120c7575f80fd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dcc60208301846120d2565b5f60208284031215612122575f80fd5b5035919050565b5f806040838503121561213a575f80fd5b61214383612077565b946020939093013593505050565b5f805f60608486031215612163575f80fd5b61216c84612077565b925061217a60208501612077565b929592945050506040919091013590565b5f806040838503121561219c575f80fd5b50508035926020909101359150565b5f80604083850312156121bc575f80fd5b823591506121cc60208401612077565b90509250929050565b5f80602083850312156121e6575f80fd5b823567ffffffffffffffff8111156121fc575f80fd5b8301601f8101851361220c575f80fd5b803567ffffffffffffffff811115612222575f80fd5b856020828401011115612233575f80fd5b6020919091019590945092505050565b5f60208284031215612253575f80fd5b610dcc82612077565b5f6020828403121561226c575f80fd5b813565ffffffffffff81168114610dcc575f80fd5b5f8060408385031215612292575f80fd5b61229b83612077565b9150602083013580151581146120c7575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f80608085870312156122d6575f80fd5b6122df85612077565b93506122ed60208601612077565b925060408501359150606085013567ffffffffffffffff81111561230f575f80fd5b8501601f8101871361231f575f80fd5b803567ffffffffffffffff811115612339576123396122af565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612368576123686122af565b60405281815282820160200189101561237f575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f80604083850312156123b1575f80fd5b6123ba83612077565b91506121cc60208401612077565b600181811c908216806123dc57607f821691505b6020821081036123fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105e3576105e3612400565b5f8261244557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b601f8211156109b857805f5260205f20601f840160051c810160208510156124835750805b601f840160051c820191505b81811015611428575f815560010161248f565b67ffffffffffffffff8311156124ba576124ba6122af565b6124ce836124c883546123c8565b8361245e565b5f601f8411600181146124ff575f85156124e85750838201355b5f19600387901b1c1916600186901b178355611428565b5f83815260208120601f198716915b8281101561252e578685013582556020948501946001909201910161250e565b508682101561254a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f61256e60408301866120d2565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f6110346125c583866125a0565b846125a0565b65ffffffffffff81811683821601908111156105e3576105e3612400565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061261b908301846120d2565b9695505050505050565b5f60208284031215612635575f80fd5b8151610dcc81612047565b65ffffffffffff82811682821603908111156105e3576105e3612400565b818103818111156105e3576105e3612400565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212204dfc414c3f7c881c72a70636389dd9e0c274b6ba5a9f6fa5fea06c294e82584a64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x26B JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C0360EB GT PUSH2 0x14B JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0xBF JUMPI DUP1 PUSH4 0xCF6EEFB7 GT PUSH2 0x84 JUMPI DUP1 PUSH4 0xCF6EEFB7 EQ PUSH2 0x54E JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5A3 JUMPI DUP1 PUSH4 0xD602B9FD EQ PUSH2 0x5B6 JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x5BE JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x5C6 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x518 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0xCC8463C8 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xCEFC1429 EQ PUSH2 0x546 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x110 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x938E3D7B EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4BC JUMPI DUP1 PUSH4 0xA1448194 EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0xA1EDA53C EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x4FE JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x45A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x84EF8FFC EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x48E JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x55F804B3 EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x634E93DA EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0x649A5EC7 EQ PUSH2 0x447 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x3DD JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x233 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0xAA6220B EQ PUSH2 0x31B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x36A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x22D63FB EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x2FA7C47 EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2DD JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x282 PUSH2 0x27D CALLDATASIZE PUSH1 0x4 PUSH2 0x205C JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x69780 JUMPDEST PUSH1 0x40 MLOAD PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x2C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2092 JUMP JUMPDEST PUSH2 0x5E9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D0 PUSH2 0x670 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x2EB CALLDATASIZE PUSH1 0x4 PUSH2 0x2112 JUMP JUMPDEST PUSH2 0x6FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x2129 JUMP JUMPDEST PUSH2 0x726 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x735 JUMP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x343 CALLDATASIZE PUSH1 0x4 PUSH2 0x2151 JUMP JUMPDEST PUSH2 0x74A JUMP JUMPDEST PUSH2 0x327 PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x2112 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x37D PUSH2 0x378 CALLDATASIZE PUSH1 0x4 PUSH2 0x218B JUMP JUMPDEST PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x3AA CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0x85B JUMP JUMPDEST PUSH2 0x327 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2129 JUMP JUMPDEST PUSH2 0x883 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x3D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x98C JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x3EB CALLDATASIZE PUSH1 0x4 PUSH2 0x2151 JUMP JUMPDEST PUSH2 0x99E JUMP JUMPDEST PUSH2 0x327 PUSH2 0x3FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2112 JUMP JUMPDEST PUSH2 0x9BD JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x411 CALLDATASIZE PUSH1 0x4 PUSH2 0x21D5 JUMP JUMPDEST PUSH2 0xA12 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND PUSH2 0x282 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x42F CALLDATASIZE PUSH1 0x4 PUSH2 0x2243 JUMP JUMPDEST PUSH2 0xAFB JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x442 CALLDATASIZE PUSH1 0x4 PUSH2 0x2112 JUMP JUMPDEST PUSH2 0xB0E JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x455 CALLDATASIZE PUSH1 0x4 PUSH2 0x225C JUMP JUMPDEST PUSH2 0xB18 JUMP JUMPDEST PUSH2 0x2D0 PUSH2 0xB2B JUMP JUMPDEST PUSH2 0x327 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x2243 JUMP JUMPDEST PUSH2 0xB3A JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2F0 JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0xB91 JUMP JUMPDEST PUSH2 0x282 PUSH2 0x4A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x4B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x21D5 JUMP JUMPDEST PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x2D0 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x4D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2129 JUMP JUMPDEST PUSH2 0xCBD JUMP JUMPDEST PUSH2 0x4DF PUSH2 0xCF9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x327 PUSH0 DUP2 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x513 CALLDATASIZE PUSH1 0x4 PUSH2 0x2281 JUMP JUMPDEST PUSH2 0xD4B JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x526 CALLDATASIZE PUSH1 0x4 PUSH2 0x22C3 JUMP JUMPDEST PUSH2 0xD56 JUMP JUMPDEST PUSH2 0x2D0 PUSH2 0x539 CALLDATASIZE PUSH1 0x4 PUSH2 0x2112 JUMP JUMPDEST PUSH2 0xD6E JUMP JUMPDEST PUSH2 0x29C PUSH2 0xDD3 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x556 PUSH2 0xE70 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x327 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x5B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x21AB JUMP JUMPDEST PUSH2 0xE91 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0xEB9 JUMP JUMPDEST PUSH2 0x2D0 PUSH2 0xECB JUMP JUMPDEST PUSH2 0x282 PUSH2 0x5D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x23A0 JUMP JUMPDEST PUSH2 0xEDA JUMP JUMPDEST PUSH0 PUSH2 0x5E3 DUP3 PUSH2 0xF07 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5F3 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x61A JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x624 DUP4 DUP4 PUSH2 0xF35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xE12D7D5BDB8218A22277DCA8F854DD4573A1CEA3D3E4808DC567DF9EB1C14BF4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 SLOAD PUSH2 0x67E SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6AA SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6F5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6CC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6F5 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6D8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x709 DUP3 PUSH2 0xFD7 JUMP JUMPDEST POP PUSH0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5E3 JUMP JUMPDEST PUSH2 0x731 DUP3 DUP3 CALLER PUSH2 0x100F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x73F DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x747 PUSH2 0x101C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x778 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x784 DUP4 DUP4 CALLER PUSH2 0x1028 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x76F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x82B JUMPI POP POP PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST PUSH0 PUSH2 0x2710 PUSH2 0x842 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND DUP10 PUSH2 0x2414 JUMP JUMPDEST PUSH2 0x84C SWAP2 SWAP1 PUSH2 0x242B JUMP JUMPDEST SWAP3 SWAP9 SWAP3 SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x879 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH2 0x103C JUMP JUMPDEST PUSH0 PUSH2 0x88D DUP4 PUSH2 0xB3A JUMP JUMPDEST DUP3 LT PUSH2 0x8BE JUMPI PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x901 JUMPI POP PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x982 JUMPI PUSH0 DUP1 PUSH2 0x910 PUSH2 0xE70 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x932 JUMPI POP PUSH6 0xFFFFFFFFFFFF DUP2 AND ISZERO JUMPDEST DUP1 PUSH2 0x945 JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH4 0x19CA5EBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST POP POP PUSH1 0xD DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH2 0x1060 JUMP JUMPDEST PUSH0 PUSH2 0x996 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x747 PUSH2 0x1093 JUMP JUMPDEST PUSH2 0x9B8 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0xD56 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9C7 PUSH1 0x8 SLOAD SWAP1 JUMP JUMPDEST DUP3 LT PUSH2 0x9EF JUMPI PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST PUSH1 0x8 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xA02 JUMPI PUSH2 0xA02 PUSH2 0x244A JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xA1C DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH0 PUSH1 0x10 DUP1 SLOAD PUSH2 0xA2A SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA56 SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAA1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA78 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAA1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA84 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 DUP4 PUSH1 0x10 SWAP2 DUP3 PUSH2 0xAB9 SWAP3 SWAP2 SWAP1 PUSH2 0x24A2 JUMP JUMPDEST POP PUSH32 0x309B29DED109B9E28FB9885757B3E0096EB75C51D23AA4635D68BCD569F6ADC1 DUP2 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xAED SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x255C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xB05 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x731 DUP3 PUSH2 0x10E5 JUMP JUMPDEST PUSH0 PUSH2 0x5E3 DUP3 PUSH2 0xFD7 JUMP JUMPDEST PUSH0 PUSH2 0xB22 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x731 DUP3 PUSH2 0x1157 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x10 DUP1 SLOAD PUSH2 0x67E SWAP1 PUSH2 0x23C8 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB64 JUMPI PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xB89 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x747 PUSH2 0x11C6 JUMP JUMPDEST PUSH0 PUSH2 0xBA4 PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xBDD DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH0 PUSH1 0x11 DUP1 SLOAD PUSH2 0xBEB SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xC17 SWAP1 PUSH2 0x23C8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC62 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC39 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC62 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC45 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP4 DUP4 PUSH1 0x11 SWAP2 DUP3 PUSH2 0xC7A SWAP3 SWAP2 SWAP1 PUSH2 0x24A2 JUMP JUMPDEST POP PUSH32 0xC9C7C3FE08B88B4DF9D4D47EF47D2C43D55C025A0BA88CA442580ED9E7348A16 DUP2 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xAED SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x255C JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x67E SWAP1 PUSH2 0x23C8 JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0xCE7 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0xCEF PUSH2 0x1203 JUMP JUMPDEST PUSH2 0x9B8 DUP4 DUP4 PUSH2 0x1227 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 ISZERO PUSH2 0xD24 JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST PUSH2 0xD2F JUMPI PUSH0 DUP1 PUSH2 0xD43 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP2 JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x731 CALLER DUP4 DUP4 PUSH2 0x1240 JUMP JUMPDEST PUSH2 0xD61 DUP5 DUP5 DUP5 PUSH2 0x74A JUMP JUMPDEST PUSH2 0x7D2 CALLER DUP6 DUP6 DUP6 DUP6 PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD79 DUP3 PUSH2 0xFD7 JUMP JUMPDEST POP PUSH0 PUSH2 0xD83 PUSH2 0xB2B JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 MLOAD GT PUSH2 0xDA1 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0xDCC JUMP JUMPDEST DUP1 PUSH2 0xDAB DUP5 PUSH2 0x142F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xDBC SWAP3 SWAP2 SWAP1 PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 ISZERO PUSH2 0xDFD JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT JUMPDEST PUSH2 0xE18 JUMPI PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND PUSH2 0xE2B JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xE3A PUSH2 0xE70 JUMP JUMPDEST POP SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0xE68 JUMPI PUSH1 0x40 MLOAD PUSH4 0x61164011 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH2 0x747 PUSH2 0x14BF JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH6 0xFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0xEAF JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH2 0x1555 JUMP JUMPDEST PUSH0 PUSH2 0xEC3 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x747 PUSH2 0x1579 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x11 DUP1 SLOAD PUSH2 0x67E SWAP1 PUSH2 0x23C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x18A4C3C3 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x5E3 JUMPI POP PUSH2 0x5E3 DUP3 PUSH2 0x1583 JUMP JUMPDEST PUSH2 0x747 DUP2 CALLER PUSH2 0x15A7 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND DUP2 LT ISZERO PUSH2 0xF74 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6F483D09 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xF9D JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B6CC805 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 MUL OR PUSH1 0xA SSTORE JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x5E3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH2 0x9B8 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x15E0 JUMP JUMPDEST PUSH2 0x1026 PUSH0 DUP1 PUSH2 0x16E4 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x1034 DUP5 DUP5 DUP5 PUSH2 0x17A3 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x1056 DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x7D2 DUP4 DUP4 PUSH2 0x186E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x1089 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9B8 DUP3 DUP3 PUSH2 0x18D4 JUMP JUMPDEST PUSH2 0x109B PUSH2 0x1910 JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH0 PUSH2 0x10EE PUSH2 0xDD3 JUMP JUMPDEST PUSH2 0x10F7 TIMESTAMP PUSH2 0x1933 JUMP JUMPDEST PUSH2 0x1101 SWAP2 SWAP1 PUSH2 0x25CB JUMP JUMPDEST SWAP1 POP PUSH2 0x110D DUP3 DUP3 PUSH2 0x1969 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x3377DC44241E779DD06AFAB5B788A35CA5F3B778836E2990BDB26A2A4B2E5ED6 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1161 DUP3 PUSH2 0x19E6 JUMP JUMPDEST PUSH2 0x116A TIMESTAMP PUSH2 0x1933 JUMP JUMPDEST PUSH2 0x1174 SWAP2 SWAP1 PUSH2 0x25CB JUMP JUMPDEST SWAP1 POP PUSH2 0x1180 DUP3 DUP3 PUSH2 0x16E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xF1038C18CF84A56E432FDBFAF746924B7EA511DFE03A6506A0CEBA4888788D9B SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x11CE PUSH2 0x1203 JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x10C8 CALLER SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1026 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1269 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x129B JUMPI PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x1428 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1349 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x25E9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1383 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1380 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2625 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x13EA JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x13B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x13B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH0 SUB PUSH2 0x13E2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0x1426 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x143B DUP4 PUSH2 0x1A44 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x145A JUMPI PUSH2 0x145A PUSH2 0x22AF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1484 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0x148E JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x14C9 PUSH2 0xE70 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x14DE DUP2 PUSH6 0xFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO DUP1 PUSH2 0x14F2 JUMPI POP TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x151A JUMPI PUSH1 0x40 MLOAD PUSH4 0x19CA5EBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH2 0x1535 PUSH0 PUSH2 0x1530 PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x18D4 JUMP JUMPDEST POP PUSH2 0x1540 PUSH0 DUP4 PUSH2 0x186E JUMP JUMPDEST POP POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x156F DUP2 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x7D2 DUP4 DUP4 PUSH2 0x18D4 JUMP JUMPDEST PUSH2 0x1026 PUSH0 DUP1 PUSH2 0x1969 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x5E3 JUMPI POP PUSH2 0x5E3 DUP3 PUSH2 0x1B1B JUMP JUMPDEST PUSH2 0x15B1 DUP3 DUP3 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x731 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST DUP1 DUP1 PUSH2 0x15F4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x16B5 JUMPI PUSH0 PUSH2 0x1603 DUP5 PUSH2 0xFD7 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x162F JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1642 JUMPI POP PUSH2 0x1640 DUP2 DUP5 PUSH2 0xEDA JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x166B JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST DUP2 ISZERO PUSH2 0x16B3 JUMPI DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0xD0 SHL SWAP1 DIV PUSH6 0xFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0x1766 JUMPI TIMESTAMP PUSH6 0xFFFFFFFFFFFF DUP3 AND LT ISZERO PUSH2 0x173D JUMPI PUSH1 0xE SLOAD PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV PUSH6 0xFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xD0 SHL MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1766 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2B1FA2EDAFE6F7B9E97C1A9E0C3660E645BEB2DCAA2D45BDBF9BEAF5472E1EC5 SWAP1 PUSH0 SWAP1 LOG1 JUMPDEST POP PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH6 0xFFFFFFFFFFFF SWAP5 DUP6 AND MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND OR PUSH1 0x1 PUSH1 0xD0 SHL SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x17B0 DUP6 DUP6 DUP6 PUSH2 0x1B3F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180C JUMPI PUSH2 0x1807 DUP5 PUSH1 0x8 DUP1 SLOAD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xF3F7A9FE364FAAB93B216DA50A3214154F22A0A2B415B23A84C8169E8B636EE3 ADD SSTORE JUMP JUMPDEST PUSH2 0x182F JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x182F JUMPI PUSH2 0x182F DUP2 DUP6 PUSH2 0x1C31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x184B JUMPI PUSH2 0x1846 DUP5 PUSH2 0x1CAE JUMP JUMPDEST PUSH2 0x1034 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1034 JUMPI PUSH2 0x1034 DUP6 DUP6 PUSH2 0x1D55 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x18CA JUMPI PUSH0 PUSH2 0x1887 PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x18AE JUMPI PUSH1 0x40 MLOAD PUSH4 0x1FE1E13D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0xDCC DUP4 DUP4 PUSH2 0x1DA3 JUMP JUMPDEST PUSH0 DUP3 ISZERO DUP1 ISZERO PUSH2 0x18F0 JUMPI POP PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x1906 JUMPI PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMPDEST PUSH2 0xDCC DUP4 DUP4 PUSH2 0x1E34 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND PUSH2 0x1026 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1965 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x30 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1972 PUSH2 0xE70 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF DUP7 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND OR OR SWAP1 SSTORE SWAP2 POP PUSH2 0x19B4 SWAP1 POP DUP2 PUSH6 0xFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8886EBFC4259ABDBC16601DD8FB5678E54878F47B3C34836CFC51154A9605109 SWAP1 PUSH0 SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x19F0 PUSH2 0xDD3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH6 0xFFFFFFFFFFFF AND DUP4 PUSH6 0xFFFFFFFFFFFF AND GT PUSH2 0x1A18 JUMPI PUSH2 0x1A13 DUP4 DUP3 PUSH2 0x2640 JUMP JUMPDEST PUSH2 0xDCC JUMP JUMPDEST PUSH2 0xDCC PUSH6 0xFFFFFFFFFFFF DUP5 AND PUSH3 0x69780 PUSH2 0x1E9F JUMP JUMPDEST PUSH2 0x1A37 DUP4 DUP4 PUSH2 0x1EAE JUMP JUMPDEST PUSH2 0x9B8 CALLER PUSH0 DUP6 DUP6 DUP6 PUSH2 0x1307 JUMP JUMPDEST PUSH0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0x1A82 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1AAE JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1ACC JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1AE4 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x1AF8 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1B0A JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x5E3 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x152A902D PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x5E3 JUMPI POP PUSH2 0x5E3 DUP3 PUSH2 0x1F0F JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND ISZERO PUSH2 0x1B6B JUMPI PUSH2 0x1B6B DUP2 DUP5 DUP7 PUSH2 0x1F33 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x1BA5 JUMPI PUSH2 0x1B86 PUSH0 DUP6 PUSH0 DUP1 PUSH2 0x15E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x1BD3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP8 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1C3B DUP4 PUSH2 0xB3A JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE PUSH1 0x6 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 DUP4 EQ PUSH2 0x1C90 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP6 DUP5 MSTORE DUP2 DUP5 KECCAK256 DUP2 SWAP1 SSTORE DUP4 MSTORE PUSH1 0x7 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST PUSH0 SWAP4 DUP5 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 DUP7 SWAP1 SSTORE SWAP4 DUP6 MSTORE MSTORE POP DUP2 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH0 SWAP1 PUSH2 0x1CBF SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x265E JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x8 DUP1 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 DUP5 SWAP1 DUP2 LT PUSH2 0x1CE6 JUMPI PUSH2 0x1CE6 PUSH2 0x244A JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 PUSH1 0x8 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1D05 JUMPI PUSH2 0x1D05 PUSH2 0x244A JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE DUP6 DUP3 MSTORE DUP2 KECCAK256 SSTORE PUSH1 0x8 DUP1 SLOAD DUP1 PUSH2 0x1D3C JUMPI PUSH2 0x1D3C PUSH2 0x2671 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0x1D61 DUP5 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0x1D6B SWAP2 SWAP1 PUSH2 0x265E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x7 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x1DAE DUP4 DUP4 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x1E2D JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x1DE5 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH0 PUSH2 0x5E3 JUMP JUMPDEST PUSH0 PUSH2 0x1E3F DUP4 DUP4 PUSH2 0xBA9 JUMP JUMPDEST ISZERO PUSH2 0x1E2D JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP7 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x5E3 JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xDCC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1ED7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH0 PUSH2 0x1EE3 DUP4 DUP4 PUSH0 PUSH2 0x1028 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x780E9D63 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x5E3 JUMPI POP PUSH2 0x5E3 DUP3 PUSH2 0x1F97 JUMP JUMPDEST PUSH2 0x1F3E DUP4 DUP4 DUP4 PUSH2 0x1FE6 JUMP JUMPDEST PUSH2 0x9B8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1F6C JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x76F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x76F JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x1FC7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x5E3 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x5E3 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1034 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x201F JUMPI POP PUSH2 0x201F DUP5 DUP5 PUSH2 0xEDA JUMP JUMPDEST DUP1 PUSH2 0x1034 JUMPI POP POP PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x747 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x206C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDCC DUP2 PUSH2 0x2047 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x208D JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20A3 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x20AC DUP4 PUSH2 0x2077 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x20C7 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xDCC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x20D2 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2122 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x213A JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x2143 DUP4 PUSH2 0x2077 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2163 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x216C DUP5 PUSH2 0x2077 JUMP JUMPDEST SWAP3 POP PUSH2 0x217A PUSH1 0x20 DUP6 ADD PUSH2 0x2077 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x219C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21BC JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x21CC PUSH1 0x20 DUP5 ADD PUSH2 0x2077 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21E6 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x21FC JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x220C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2222 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x2233 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2253 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xDCC DUP3 PUSH2 0x2077 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x226C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDCC JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2292 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x229B DUP4 PUSH2 0x2077 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x20C7 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x22D6 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x22DF DUP6 PUSH2 0x2077 JUMP JUMPDEST SWAP4 POP PUSH2 0x22ED PUSH1 0x20 DUP7 ADD PUSH2 0x2077 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x230F JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x231F JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2339 JUMPI PUSH2 0x2339 PUSH2 0x22AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2368 JUMPI PUSH2 0x2368 PUSH2 0x22AF JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP10 LT ISZERO PUSH2 0x237F JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23B1 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x23BA DUP4 PUSH2 0x2077 JUMP JUMPDEST SWAP2 POP PUSH2 0x21CC PUSH1 0x20 DUP5 ADD PUSH2 0x2077 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x23DC JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x23FA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x5E3 JUMPI PUSH2 0x5E3 PUSH2 0x2400 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x2445 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x9B8 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2483 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1428 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x248F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x24BA JUMPI PUSH2 0x24BA PUSH2 0x22AF JUMP JUMPDEST PUSH2 0x24CE DUP4 PUSH2 0x24C8 DUP4 SLOAD PUSH2 0x23C8 JUMP JUMPDEST DUP4 PUSH2 0x245E JUMP JUMPDEST PUSH0 PUSH1 0x1F DUP5 GT PUSH1 0x1 DUP2 EQ PUSH2 0x24FF JUMPI PUSH0 DUP6 ISZERO PUSH2 0x24E8 JUMPI POP DUP4 DUP3 ADD CALLDATALOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP7 SWAP1 SHL OR DUP4 SSTORE PUSH2 0x1428 JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP8 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x252E JUMPI DUP7 DUP6 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x250E JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x254A JUMPI PUSH0 NOT PUSH1 0xF8 DUP9 PUSH1 0x3 SHL AND SHR NOT DUP5 DUP8 ADD CALLDATALOAD AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP6 PUSH1 0x1 SHL ADD DUP4 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x256E PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x20D2 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE DUP4 DUP2 MSTORE DUP4 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP7 ADD AND DUP3 ADD ADD SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 PUSH1 0x20 DUP5 ADD DUP6 MCOPY PUSH0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1034 PUSH2 0x25C5 DUP4 DUP7 PUSH2 0x25A0 JUMP JUMPDEST DUP5 PUSH2 0x25A0 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x5E3 JUMPI PUSH2 0x5E3 PUSH2 0x2400 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x261B SWAP1 DUP4 ADD DUP5 PUSH2 0x20D2 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2635 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xDCC DUP2 PUSH2 0x2047 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x5E3 JUMPI PUSH2 0x5E3 PUSH2 0x2400 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x5E3 JUMPI PUSH2 0x5E3 PUSH2 0x2400 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4D 0xFC COINBASE 0x4C EXTCODEHASH PUSH29 0x881C72A70636389DD9E0C274B6BA5A9F6FA5FEA06C294E82584A64736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"768:7315:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7835:246;;;;;;:::i;:::-;;:::i;:::-;;;565:14:32;;558:22;540:41;;528:2;513:18;7835:246:29;;;;;;;;7766:108:4;7861:6;7766:108;;;766:14:32;754:27;;;736:46;;724:2;709:18;7766:108:4;592:196:32;5584:284:29;;;;;;:::i;:::-;;:::i;:::-;;2263:89:9;;;:::i;:::-;;;;;;;:::i;3299:154::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2278:32:32;;;2260:51;;2248:2;2233:18;3299:154:9;2114:203:32;3152:113:9;;;;;;:::i;:::-;;:::i;10852:126:4:-;;;:::i;1967:102:12:-;2045:10;:17;1967:102;;;2773:25:32;;;2761:2;2746:18;1967:102:12;2627:177:32;3852:578:9;;;;;;:::i;:::-;;:::i;3776:120:0:-;;;;;;:::i;:::-;3841:7;3867:12;;;:6;:12;;;;;:22;;;;3776:120;2330:657:16;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;4144:32:32;;;4126:51;;4208:2;4193:18;;4186:34;;;;4099:18;2330:657:16;3952:274:32;3300:265:4;;;;;;:::i;:::-;;:::i;1668:255:12:-;;;;;;:::i;:::-;;:::i;4617:566:4:-;;;;;;:::i;:::-;;:::i;6053:84:29:-;;;:::i;4464:132:9:-;;;;;;:::i;:::-;;:::i;2113:226:12:-;;;;;;:::i;:::-;;:::i;4680:228:29:-;;;;;;:::i;:::-;;:::i;1726:84:20:-;1796:7;;;;1726:84;;8053:150:4;;;;;;:::i;:::-;;:::i;2103:118:9:-;;;;;;:::i;:::-;;:::i;10236:145:4:-;;;;;;:::i;:::-;;:::i;6588:94:29:-;;;:::i;1861:208:9:-;;;;;;:::i;:::-;;:::i;5933:80:29:-;;;:::i;6767:106:4:-;6846:20;;-1:-1:-1;;;;;6846:20:4;6767:106;;3044:93;;;:::i;2820:136:0:-;;;;;;:::i;:::-;;:::i;5070:286:29:-;;;;;;:::i;:::-;;:::i;2394:93:9:-;;;:::i;4228:131:29:-;;;;;;:::i;:::-;;:::i;7447:261:4:-;;;:::i;:::-;;;;5804:14:32;5792:27;;;5774:46;;5856:27;;;;5851:2;5836:18;;5829:55;5747:18;7447:261:4;5604:286:32;2187:49:0;;2232:4;2187:49;;3487:144:9;;;;;;:::i;:::-;;:::i;4630:233::-;;;;;;:::i;:::-;;:::i;2529:255::-;;;;;;:::i;:::-;;:::i;7160:229:4:-;;;:::i;9101:344::-;;;:::i;6931:171::-;;;:::i;:::-;;;;-1:-1:-1;;;;;7781:32:32;;;7763:51;;7862:14;7850:27;;;7845:2;7830:18;;7823:55;7736:18;6931:171:4;7591:293:32;1144:62:29;;1182:24;1144:62;;3665:267:4;;;;;;:::i;:::-;;:::i;8676:128::-;;;:::i;6401:105:29:-;;;:::i;3665:153:9:-;;;;;;:::i;:::-;;:::i;7835:246:29:-;8011:4;8038:36;8062:11;8038:23;:36::i;:::-;8031:43;7835:246;-1:-1:-1;;7835:246:29:o;5584:284::-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;-1:-1:-1;;;;;5701:22:29;::::1;5697:48;;5732:13;;-1:-1:-1::0;;;5732:13:29::1;;;;;;;;;;;5697:48;5755:44;5774:8;5784:14;5755:18;:44::i;:::-;5814:47;::::0;-1:-1:-1;;;;;8316:39:32;;8298:58;;-1:-1:-1;;;;;5814:47:29;::::1;::::0;::::1;::::0;8286:2:32;8271:18;5814:47:29::1;;;;;;;5584:284:::0;;;:::o;2263:89:9:-;2308:13;2340:5;2333:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2263:89;:::o;3299:154::-;3366:7;3385:22;3399:7;3385:13;:22::i;:::-;-1:-1:-1;5679:7:9;5705:24;;;:15;:24;;;;;;-1:-1:-1;;;;;5705:24:9;3425:21;5609:127;3152:113;3223:35;3232:2;3236:7;735:10:18;3223:8:9;:35::i;:::-;3152:113;;:::o;10852:126:4:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;10943:28:4::1;:26;:28::i;:::-;10852:126:::0;:::o;3852:578:9:-;-1:-1:-1;;;;;3946:16:9;;3942:87;;3985:33;;-1:-1:-1;;;3985:33:9;;4015:1;3985:33;;;2260:51:32;2233:18;;3985:33:9;;;;;;;;3942:87;4247:21;4271:34;4279:2;4283:7;735:10:18;4271:7:9;:34::i;:::-;4247:58;;4336:4;-1:-1:-1;;;;;4319:21:9;:13;-1:-1:-1;;;;;4319:21:9;;4315:109;;4363:50;;-1:-1:-1;;;4363:50:9;;-1:-1:-1;;;;;8972:32:32;;;4363:50:9;;;8954:51:32;9021:18;;;9014:34;;;9084:32;;9064:18;;;9057:60;8927:18;;4363:50:9;8752:371:32;4315:109:9;3932:498;3852:578;;;:::o;2330:657:16:-;2438:16;2517:26;;;:17;:26;;;;;2579:21;;2438:16;;2517:26;-1:-1:-1;;;;;2579:21:16;;;-1:-1:-1;;;2635:28:16;;-1:-1:-1;;;;;2635:28:16;2579:21;2674:173;;-1:-1:-1;;2741:19:16;:28;-1:-1:-1;;;;;2741:28:16;;;-1:-1:-1;;;2801:35:16;;-1:-1:-1;;;;;2801:35:16;2674:173;2857:21;3345:5;2882:27;-1:-1:-1;;;;;2882:27:16;;:9;:27;:::i;:::-;2881:49;;;;:::i;:::-;2949:15;;;;-1:-1:-1;2330:657:16;;-1:-1:-1;;;;;;2330:657:16:o;3300:265:4:-;3419:4;3415:104;;3468:40;;-1:-1:-1;;;3468:40:4;;;;;;;;;;;3415:104;3528:30;3544:4;3550:7;3528:15;:30::i;1668:255:12:-;1756:7;1788:16;1798:5;1788:9;:16::i;:::-;1779:5;:25;1775:99;;1827:36;;-1:-1:-1;;;1827:36:12;;-1:-1:-1;;;;;4144:32:32;;1827:36:12;;;4126:51:32;4193:18;;;4186:34;;;4099:18;;1827:36:12;3952:274:32;1775:99:12;-1:-1:-1;;;;;;1890:19:12;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;1668:255::o;4617:566:4:-;4739:26;;:55;;;;-1:-1:-1;6846:20:4;;-1:-1:-1;;;;;4769:25:4;;;6846:20;;4769:25;4739:55;4735:399;;;4811:23;4836:15;4855:21;:19;:21::i;:::-;4810:66;;-1:-1:-1;4810:66:4;-1:-1:-1;;;;;;4894:29:4;;;;;:58;;-1:-1:-1;14485:13:4;;;;4894:58;:91;;;-1:-1:-1;14712:15:4;14701:26;;;;4956:29;4894:91;4890:185;;;5012:48;;-1:-1:-1;;;5012:48:4;;766:14:32;754:27;;5012:48:4;;;736:46:32;709:18;;5012:48:4;592:196:32;4890:185:4;-1:-1:-1;;5095:28:4;5088:35;;-1:-1:-1;;;;5088:35:4;;;4735:399;5143:33;5162:4;5168:7;5143:18;:33::i;6053:84:29:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;6120:10:29::1;:8;:10::i;4464:132:9:-:0;4550:39;4567:4;4573:2;4577:7;4550:39;;;;;;;;;;;;:16;:39::i;:::-;4464:132;;;:::o;2113:226:12:-;2179:7;2211:13;2045:10;:17;;1967:102;2211:13;2202:5;:22;2198:101;;2247:41;;-1:-1:-1;;;2247:41:12;;2278:1;2247:41;;;4126:51:32;4193:18;;;4186:34;;;4099:18;;2247:41:12;3952:274:32;2198:101:12;2315:10;2326:5;2315:17;;;;;;;;:::i;:::-;;;;;;;;;2308:24;;2113:226;;;:::o;4680:228:29:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;4774:25:29::1;4802:13;4774:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:8;;4825:13;:24;;;;;;;:::i;:::-;;4864:37;4879:11;4892:8;;4864:37;;;;;;;;:::i;:::-;;;;;;;;4764:144;4680:228:::0;;;:::o;8053:150:4:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;8160:36:4::1;8187:8;8160:26;:36::i;2103:118:9:-:0;2166:7;2192:22;2206:7;2192:13;:22::i;10236:145:4:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;10340:34:4::1;10365:8;10340:24;:34::i;6588:94:29:-:0;6630:13;6662;6655:20;;;;;:::i;1861:208:9:-;1924:7;-1:-1:-1;;;;;1947:19:9;;1943:87;;1989:30;;-1:-1:-1;;;1989:30:9;;2016:1;1989:30;;;2260:51:32;2233:18;;1989:30:9;2114:203:32;1943:87:9;-1:-1:-1;;;;;;2046:16:9;;;;;:9;:16;;;;;;;1861:208::o;5933:80:29:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;5998:8:29::1;:6;:8::i;3044:93:4:-:0;3090:7;3116:14;6846:20;;-1:-1:-1;;;;;6846:20:4;;6767:106;3116:14;3109:21;;3044:93;:::o;2820:136:0:-;2897:4;2920:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;2920:29:0;;;;;;;;;;;;;;;2820:136::o;5070:286:29:-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;5180:25:29::1;5208:20;5180:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5261:20;;5238;:43;;;;;;;:::i;:::-;;5296:53;5315:11;5328:20;;5296:53;;;;;;;;:::i;2394:93:9:-:0;2441:13;2473:7;2466:14;;;;;:::i;4228:131:29:-;1182:24;2464:16:0;2475:4;2464:10;:16::i;:::-;1350:19:20::1;:17;:19::i;:::-;4330:22:29::2;4340:2;4344:7;4330:9;:22::i;7447:261:4:-:0;7567:21;;7512:15;;-1:-1:-1;;;7567:21:4;;;;14485:13;;;7606:57;;;;-1:-1:-1;14712:15:4;14701:26;;;;7634:29;7606:57;7605:96;;7696:1;7699;7605:96;;;7668:13;;-1:-1:-1;;;7668:13:4;;;;7683:8;7605:96;7598:103;;;;7447:261;;:::o;3487:144:9:-;3572:52;735:10:18;3605:8:9;3615;3572:18;:52::i;4630:233::-;4743:31;4756:4;4762:2;4766:7;4743:12;:31::i;:::-;4784:72;735:10:18;4832:4:9;4838:2;4842:7;4851:4;4784:33;:72::i;2529:255::-;2593:13;2618:22;2632:7;2618:13;:22::i;:::-;;2651:21;2675:10;:8;:10::i;:::-;2651:34;;2726:1;2708:7;2702:21;:25;:75;;;;;;;;;;;;;;;;;2744:7;2753:18;:7;:16;:18::i;:::-;2730:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2702:75;2695:82;2529:255;-1:-1:-1;;;2529:255:9:o;7160:229:4:-;7254:21;;7218:6;;-1:-1:-1;;;7254:21:4;;;;14485:13;;;7293:56;;;;-1:-1:-1;14712:15:4;14701:26;;;;7321:28;7292:90;;7369:13;;-1:-1:-1;;;7369:13:4;;;;7292:90;;;7353:13;;-1:-1:-1;;;7353:13:4;;;;7292:90;7285:97;;;7160:229;:::o;9101:344::-;9165:23;9194:21;:19;:21::i;:::-;-1:-1:-1;9164:51:4;-1:-1:-1;735:10:18;-1:-1:-1;;;;;9229:31:4;;;9225:175;;9343:46;;-1:-1:-1;;;9343:46:4;;735:10:18;9343:46:4;;;2260:51:32;2233:18;;9343:46:4;2114:203:32;9225:175:4;9409:29;:27;:29::i;6931:171::-;7044:20;;-1:-1:-1;;;;;7044:20:4;;;-1:-1:-1;;;7066:28:4;;;;;;6931:171::o;3665:267::-;3785:4;3781:104;;3834:40;;-1:-1:-1;;;3834:40:4;;;;;;;;;;;3781:104;3894:31;3911:4;3917:7;3894:16;:31::i;8676:128::-;2232:4:0;2464:16;2232:4;2464:10;:16::i;:::-;8768:29:4::1;:27;:29::i;6401:105:29:-:0;6447:13;6479:20;6472:27;;;;;:::i;3665:153:9:-;-1:-1:-1;;;;;3776:25:9;;;3753:4;3776:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3665:153::o;2790:219:4:-;2875:4;-1:-1:-1;;;;;;2898:64:4;;-1:-1:-1;;;2898:64:4;;:104;;;2966:36;2990:11;2966:23;:36::i;3165:103:0:-;3231:30;3242:4;735:10:18;3231::0;:30::i;3618:507:16:-;3345:5;-1:-1:-1;;;;;3765:26:16;;;-1:-1:-1;3761:173:16;;;3868:55;;-1:-1:-1;;;3868:55:16;;-1:-1:-1;;;;;13182:39:32;;3868:55:16;;;13164:58:32;13238:18;;;13231:34;;;13137:18;;3868:55:16;12991:280:32;3761:173:16;-1:-1:-1;;;;;3947:22:16;;3943:108;;3992:48;;-1:-1:-1;;;3992:48:16;;4037:1;3992:48;;;2260:51:32;2233:18;;3992:48:16;2114:203:32;3943:108:16;-1:-1:-1;4083:35:16;;;;;;;;;-1:-1:-1;;;;;4083:35:16;;;;;;-1:-1:-1;;;;;4083:35:16;;;;;;;;;;-1:-1:-1;;;4061:57:16;;;;:19;:57;3618:507::o;15957:241:9:-;16020:7;5470:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5470:16:9;;16082:88;;16128:31;;-1:-1:-1;;;16128:31:9;;;;;2773:25:32;;;2746:18;;16128:31:9;2627:177:32;14138:120:9;14218:33;14227:2;14231:7;14240:4;14246;14218:8;:33::i;11105:94:4:-;11170:22;11187:1;11190;11170:16;:22::i;:::-;11105:94::o;7147:206:29:-;7284:7;7314:32;7328:2;7332:7;7341:4;7314:13;:32::i;:::-;7307:39;7147:206;-1:-1:-1;;;;7147:206:29:o;4192:136:0:-;3841:7;3867:12;;;:6;:12;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4296:25:::1;4307:4;4313:7;4296:10;:25::i;5294:245::-:0;-1:-1:-1;;;;;5387:34:0;;735:10:18;5387:34:0;5383:102;;5444:30;;-1:-1:-1;;;5444:30:0;;;;;;;;;;;5383:102;5495:37;5507:4;5513:18;5495:11;:37::i;2586:117:20:-;1597:16;:14;:16::i;:::-;2644:7:::1;:15:::0;;-1:-1:-1;;2644:15:20::1;::::0;;2674:22:::1;735:10:18::0;2683:12:20::1;2674:22;::::0;-1:-1:-1;;;;;2278:32:32;;;2260:51;;2248:2;2233:18;2674:22:20::1;;;;;;;2586:117::o:0;8330:288:4:-;8411:18;8469:19;:17;:19::i;:::-;8432:34;8450:15;8432:17;:34::i;:::-;:56;;;;:::i;:::-;8411:77;;8498:46;8522:8;8532:11;8498:23;:46::i;:::-;8559:52;;766:14:32;754:27;;736:46;;-1:-1:-1;;;;;8559:52:4;;;;;724:2:32;709:18;8559:52:4;;;;;;;8401:217;8330:288;:::o;10506:::-;10584:18;10642:26;10659:8;10642:16;:26::i;:::-;10605:34;10623:15;10605:17;:34::i;:::-;:63;;;;:::i;:::-;10584:84;;10678:39;10695:8;10705:11;10678:16;:39::i;:::-;10732:55;;;5804:14:32;5792:27;;;5774:46;;5856:27;;5851:2;5836:18;;5829:55;10732::4;;5747:18:32;10732:55:4;;;;;;;10574:220;10506:288;:::o;2339:115:20:-;1350:19;:17;:19::i;:::-;2398:7:::1;:14:::0;;-1:-1:-1;;2398:14:20::1;2408:4;2398:14;::::0;;2427:20:::1;2434:12;735:10:18::0;;656:96;1878:128:20;1796:7;;;;1939:61;;;1974:15;;-1:-1:-1;;;1974:15:20;;;;;;;;;;;10302:100:9;10369:26;10379:2;10383:7;10369:26;;;;;;;;;;;;:9;:26::i;15311:411::-;-1:-1:-1;;;;;15418:19:9;;15414:90;;15460:33;;-1:-1:-1;;;15460:33:9;;15490:1;15460:33;;;2260:51:32;2233:18;;15460:33:9;2114:203:32;15414:90:9;-1:-1:-1;;;;;15517:22:9;;15513:91;;15562:31;;-1:-1:-1;;;15562:31:9;;-1:-1:-1;;;;;2278:32:32;;15562:31:9;;;2260:51:32;2233:18;;15562:31:9;2114:203:32;15513:91:9;-1:-1:-1;;;;;15613:25:9;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15613:46:9;;;;;;;;;;15674:41;;540::32;;;15674::9;;513:18:32;15674:41:9;;;;;;;15311:411;;;:::o;994:926:15:-;-1:-1:-1;;;;;1174:14:15;;;:18;1170:744;;1212:67;;-1:-1:-1;;;1212:67:15;;-1:-1:-1;;;;;1212:36:15;;;;;:67;;1249:8;;1259:4;;1265:7;;1274:4;;1212:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1212:67:15;;;;;;;;-1:-1:-1;;1212:67:15;;;;;;;;;;;;:::i;:::-;;;1208:696;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1569:6;:13;1586:1;1569:18;1565:325;;1673:39;;-1:-1:-1;;;1673:39:15;;-1:-1:-1;;;;;2278:32:32;;1673:39:15;;;2260:51:32;2233:18;;1673:39:15;2114:203:32;1565:325:15;1842:6;1836:13;1829:4;1821:6;1817:17;1810:40;1208:696;-1:-1:-1;;;;;;1326:51:15;;-1:-1:-1;;;1326:51:15;1322:182;;1446:39;;-1:-1:-1;;;1446:39:15;;-1:-1:-1;;;;;2278:32:32;;1446:39:15;;;2260:51:32;2233:18;;1446:39:15;2114:203:32;1322:182:15;1280:238;1208:696;994:926;;;;;:::o;1251:634:23:-;1307:13;1356:14;1373:17;1384:5;1373:10;:17::i;:::-;1393:1;1373:21;1356:38;;1408:20;1442:6;1431:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1431:18:23;-1:-1:-1;1408:41:23;-1:-1:-1;1538:30:23;;;1554:4;1538:30;1595:247;-1:-1:-1;;1626:5:23;-1:-1:-1;;;1725:2:23;1714:14;;1709:32;1626:5;1696:46;1786:2;1777:11;;;-1:-1:-1;1806:21:23;1595:247;1806:21;-1:-1:-1;1862:6:23;1251:634;-1:-1:-1;;;1251:634:23:o;9573:474:4:-;9640:16;9658:15;9677:21;:19;:21::i;:::-;9639:59;;;;9713:24;9728:8;14485:13;;;;;14399:106;9713:24;9712:25;:58;;;-1:-1:-1;14712:15:4;14701:26;;;;9741:29;9712:58;9708:144;;;9793:48;;-1:-1:-1;;;9793:48:4;;766:14:32;754:27;;9793:48:4;;;736:46:32;709:18;;9793:48:4;592:196:32;9708:144:4;9861:47;2232:4:0;9893:14:4;6846:20;;-1:-1:-1;;;;;6846:20:4;;6767:106;9893:14;9861:11;:47::i;:::-;-1:-1:-1;9918:40:4;2232:4:0;9949:8:4;9918:10;:40::i;:::-;-1:-1:-1;;9975:20:4;9968:27;;-1:-1:-1;;;;;;10005:35:4;;;-1:-1:-1;9573:474:4:o;4608:138:0:-;3841:7;3867:12;;;:6;:12;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4713:26:::1;4725:4;4731:7;4713:11;:26::i;8932:111:4:-:0;8998:38;9030:1;9034;8998:23;:38::i;2531:202:0:-;2616:4;-1:-1:-1;;;;;;2639:47:0;;-1:-1:-1;;;2639:47:0;;:87;;;2690:36;2714:11;2690:23;:36::i;3398:197::-;3486:22;3494:4;3500:7;3486;:22::i;:::-;3481:108;;3531:47;;-1:-1:-1;;;3531:47:0;;-1:-1:-1;;;;;4144:32:32;;3531:47:0;;;4126:51:32;4193:18;;;4186:34;;;4099:18;;3531:47:0;3952:274:32;14440:662:9;14600:9;:31;;;-1:-1:-1;;;;;;14613:18:9;;;;14600:31;14596:460;;;14647:13;14663:22;14677:7;14663:13;:22::i;:::-;14647:38;-1:-1:-1;;;;;;14813:18:9;;;;;;:35;;;14844:4;-1:-1:-1;;;;;14835:13:9;:5;-1:-1:-1;;;;;14835:13:9;;;14813:35;:69;;;;;14853:29;14870:5;14877:4;14853:16;:29::i;:::-;14852:30;14813:69;14809:142;;;14909:27;;-1:-1:-1;;;14909:27:9;;-1:-1:-1;;;;;2278:32:32;;14909:27:9;;;2260:51:32;2233:18;;14909:27:9;2114:203:32;14809:142:9;14969:9;14965:81;;;15023:7;15019:2;-1:-1:-1;;;;;15003:28:9;15012:5;-1:-1:-1;;;;;15003:28:9;;;;;;;;;;;14965:81;14633:423;14596:460;-1:-1:-1;;15066:24:9;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15066:29:9;-1:-1:-1;;;;;15066:29:9;;;;;;;;;;14440:662::o;13670:585:4:-;13772:21;;-1:-1:-1;;;13772:21:4;;;;14485:13;;13804:365;;14712:15;14701:26;;;;13851:308;;;13969:13;;13953;:29;;-1:-1:-1;;;;;13953:29:4;-1:-1:-1;;;13969:13:4;;;;;-1:-1:-1;;;13953:29:4;;;;;;;13851:308;;;14111:33;;;;;;;13851:308;-1:-1:-1;14179:13:4;:24;;-1:-1:-1;;;;;14213:35:4;-1:-1:-1;;;14179:24:4;;;;;-1:-1:-1;;;;;14213:35:4;;-1:-1:-1;;;14213:35:4;;;;;;;;;;;;;;13670:585::o;2372:625:12:-;2467:7;2486:21;2510:32;2524:2;2528:7;2537:4;2510:13;:32::i;:::-;2486:56;-1:-1:-1;;;;;;2557:27:12;;2553:210;;2600:40;2632:7;3803:10;:17;;3776:24;;;;:15;:24;;;;;:44;;;3830:24;;;;;;;;;;;;3700:161;2600:40;2553:210;;;2678:2;-1:-1:-1;;;;;2661:19:12;:13;-1:-1:-1;;;;;2661:19:12;;2657:106;;2696:56;2729:13;2744:7;2696:32;:56::i;:::-;-1:-1:-1;;;;;2776:16:12;;2772:188;;2808:45;2845:7;2808:36;:45::i;:::-;2772:188;;;2891:2;-1:-1:-1;;;;;2874:19:12;:13;-1:-1:-1;;;;;2874:19:12;;2870:90;;2909:40;2937:2;2941:7;2909:27;:40::i;5611:370:4:-;5697:4;5717;5713:214;;5789:1;5763:14;6846:20;;-1:-1:-1;;;;;6846:20:4;;6767:106;5763:14;-1:-1:-1;;;;;5763:28:4;;5759:114;;5818:40;;-1:-1:-1;;;5818:40:4;;;;;;;;;;;5759:114;5886:20;:30;;-1:-1:-1;;;;;;5886:30:4;-1:-1:-1;;;;;5886:30:4;;;;;5713:214;5943:31;5960:4;5966:7;5943:16;:31::i;6021:271::-;6108:4;6128:26;;:55;;;;-1:-1:-1;6846:20:4;;-1:-1:-1;;;;;6158:25:4;;;6846:20;;6158:25;6128:55;6124:113;;;6206:20;6199:27;;-1:-1:-1;;;;;;6199:27:4;;;6124:113;6253:32;6271:4;6277:7;6253:17;:32::i;2078:126:20:-;1796:7;;;;2136:62;;2172:15;;-1:-1:-1;;;2172:15:20;;;;;;;;;;;14293:213:27;14349:6;14379:16;14371:24;;14367:103;;;14418:41;;-1:-1:-1;;;14418:41:27;;14449:2;14418:41;;;14675:36:32;14727:18;;;14720:34;;;14648:18;;14418:41:27;14494:266:32;14367:103:27;-1:-1:-1;14493:5:27;14293:213::o;12989:525:4:-;13081:18;13103:21;:19;:21::i;:::-;13135:20;:31;;13176:42;;;-1:-1:-1;;;13176:42:4;-1:-1:-1;;;;;;13176:42:4;;;-1:-1:-1;;;;;13135:31:4;;13176:42;;;;13078:46;-1:-1:-1;13330:27:4;;-1:-1:-1;13078:46:4;14485:13;;;;;14399:106;13330:27;13326:182;;;13467:30;;;;;;;13068:446;12989:525;;:::o;11546:1249::-;11620:6;11638:19;11660;:17;:19::i;:::-;11638:41;;12609:12;12598:23;;:8;:23;;;:190;;12765:23;12780:8;12765:12;:23;:::i;:::-;12598:190;;;12647:51;;;;7861:6;12647:8;:51::i;10623:207:9:-;10717:18;10723:2;10727:7;10717:5;:18::i;:::-;10745:78;735:10:18;10801:1:9;10805:2;10809:7;10818:4;10745:33;:78::i;29471:916:26:-;29524:7;;-1:-1:-1;;;29599:17:26;;29595:103;;-1:-1:-1;;;29636:17:26;;;-1:-1:-1;29681:2:26;29671:12;29595:103;29724:8;29715:5;:17;29711:103;;29761:8;29752:17;;;-1:-1:-1;29797:2:26;29787:12;29711:103;29840:8;29831:5;:17;29827:103;;29877:8;29868:17;;;-1:-1:-1;29913:2:26;29903:12;29827:103;29956:7;29947:5;:16;29943:100;;29992:7;29983:16;;;-1:-1:-1;30027:1:26;30017:11;29943:100;30069:7;30060:5;:16;30056:100;;30105:7;30096:16;;;-1:-1:-1;30140:1:26;30130:11;30056:100;30182:7;30173:5;:16;30169:100;;30218:7;30209:16;;;-1:-1:-1;30253:1:26;30243:11;30169:100;30295:7;30286:5;:16;30282:66;;30332:1;30322:11;30374:6;29471:916;-1:-1:-1;;29471:916:26:o;2082:213:16:-;2184:4;-1:-1:-1;;;;;;2207:41:16;;-1:-1:-1;;;2207:41:16;;:81;;;2252:36;2276:11;2252:23;:36::i;8507:795:9:-;8593:7;5470:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5470:16:9;;;;8704:18;;;8700:86;;8738:37;8755:4;8761;8767:7;8738:16;:37::i;:::-;-1:-1:-1;;;;;8830:18:9;;;8826:256;;8946:48;8963:1;8967:7;8984:1;8988:5;8946:8;:48::i;:::-;-1:-1:-1;;;;;9037:15:9;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9037:20:9;;;8826:256;-1:-1:-1;;;;;9096:16:9;;;9092:107;;-1:-1:-1;;;;;9156:13:9;;;;;;:9;:13;;;;;:18;;9173:1;9156:18;;;9092:107;9209:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9209:21:9;-1:-1:-1;;;;;9209:21:9;;;;;;;;;9246:27;;9209:16;;9246:27;;;;;;;9291:4;8507:795;-1:-1:-1;;;;8507:795:9:o;4478:1055:12:-;4740:22;4765:15;4775:4;4765:9;:15::i;:::-;4790:18;4811:26;;;:17;:26;;;;;;;;;-1:-1:-1;;;;;4912:18:12;;;;:12;:18;;;;;;4740:40;;-1:-1:-1;4811:26:12;5034:28;;;5030:325;;5078:19;5100:35;;;;;;;;;;;;5150:31;;;;;;:45;;;5267:30;;:17;:30;;;;;:43;;;5030:325;5448:26;;;;:17;:26;;;;;;;;5441:33;;;5491:35;;;;-1:-1:-1;5491:35:12;;5484:42;-1:-1:-1;4478:1055:12:o;5821:1061::-;6095:10;:17;6070:22;;6095:21;;6115:1;;6095:21;:::i;:::-;6126:18;6147:24;;;:15;:24;;;;;;6515:10;:26;;6070:46;;-1:-1:-1;6147:24:12;;6070:46;;6515:26;;;;;;:::i;:::-;;;;;;;;;6493:48;;6577:11;6552:10;6563;6552:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;6656:28;;;:15;:28;;;;;;;:41;;;6825:24;;;;;6818:31;6859:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5892:990;;;5821:1061;:::o;3291:214::-;3375:14;3408:1;3392:13;3402:2;3392:9;:13::i;:::-;:17;;;;:::i;:::-;-1:-1:-1;;;;;3419:16:12;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;3463:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;3291:214:12:o;6145:316:0:-;6222:4;6243:22;6251:4;6257:7;6243;:22::i;:::-;6238:217;;6281:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6281:29:0;;;;;;;;;:36;;-1:-1:-1;;6281:36:0;6313:4;6281:36;;;6363:12;735:10:18;;656:96;6363:12:0;-1:-1:-1;;;;;6336:40:0;6354:7;-1:-1:-1;;;;;6336:40:0;6348:4;6336:40;;;;;;;;;;-1:-1:-1;6397:4:0;6390:11;;6238:217;-1:-1:-1;6439:5:0;6432:12;;6698:317;6776:4;6796:22;6804:4;6810:7;6796;:22::i;:::-;6792:217;;;6866:5;6834:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6834:29:0;;;;;;;;;;:37;;-1:-1:-1;;6834:37:0;;;6890:40;735:10:18;;6834:12:0;;6890:40;;6866:5;6890:40;-1:-1:-1;6951:4:0;6944:11;;5633:111:26;5691:7;5328:5;;;5725;;;5327:36;5322:42;;5717:20;5087:294;9624:327:9;-1:-1:-1;;;;;9691:16:9;;9687:87;;9730:33;;-1:-1:-1;;;9730:33:9;;9760:1;9730:33;;;2260:51:32;2233:18;;9730:33:9;2114:203:32;9687:87:9;9783:21;9807:32;9815:2;9819:7;9836:1;9807:7;:32::i;:::-;9783:56;-1:-1:-1;;;;;;9853:27:9;;;9849:96;;9903:31;;-1:-1:-1;;;9903:31:9;;9931:1;9903:31;;;2260:51:32;2233:18;;9903:31:9;2114:203:32;1402:222:12;1504:4;-1:-1:-1;;;;;;1527:50:12;;-1:-1:-1;;;1527:50:12;;:90;;;1581:36;1605:11;1581:23;:36::i;6751:368:9:-;6863:38;6877:5;6884:7;6893;6863:13;:38::i;:::-;6858:255;;-1:-1:-1;;;;;6921:19:9;;6917:186;;6967:31;;-1:-1:-1;;;6967:31:9;;;;;2773:25:32;;;2746:18;;6967:31:9;2627:177:32;6917:186:9;7044:44;;-1:-1:-1;;;7044:44:9;;-1:-1:-1;;;;;4144:32:32;;7044:44:9;;;4126:51:32;4193:18;;;4186:34;;;4099:18;;7044:44:9;3952:274:32;1527:300:9;1629:4;-1:-1:-1;;;;;;1664:40:9;;-1:-1:-1;;;1664:40:9;;:104;;-1:-1:-1;;;;;;;1720:48:9;;-1:-1:-1;;;1720:48:9;1664:104;:156;;;-1:-1:-1;;;;;;;;;;829:40:24;;;1784:36:9;730:146:24;6047:272:9;6150:4;-1:-1:-1;;;;;6185:21:9;;;;;;:127;;;6232:7;-1:-1:-1;;;;;6223:16:9;:5;-1:-1:-1;;;;;6223:16:9;;:52;;;;6243:32;6260:5;6267:7;6243:16;:32::i;:::-;6223:88;;;-1:-1:-1;;5679:7:9;5705:24;;;:15;:24;;;;;;-1:-1:-1;;;;;5705:24:9;;;6279:32;;;;;-1:-1:-1;6047:272:9:o;14:131:32:-;-1:-1:-1;;;;;;88:32:32;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;793:173::-;861:20;;-1:-1:-1;;;;;910:31:32;;900:42;;890:70;;956:1;953;946:12;890:70;793:173;;;:::o;971:366::-;1038:6;1046;1099:2;1087:9;1078:7;1074:23;1070:32;1067:52;;;1115:1;1112;1105:12;1067:52;1138:29;1157:9;1138:29;:::i;:::-;1128:39;;1217:2;1206:9;1202:18;1189:32;-1:-1:-1;;;;;1254:5:32;1250:38;1243:5;1240:49;1230:77;;1303:1;1300;1293:12;1230:77;1326:5;1316:15;;;971:366;;;;;:::o;1342:300::-;1395:3;1433:5;1427:12;1460:6;1455:3;1448:19;1516:6;1509:4;1502:5;1498:16;1491:4;1486:3;1482:14;1476:47;1568:1;1561:4;1552:6;1547:3;1543:16;1539:27;1532:38;1631:4;1624:2;1620:7;1615:2;1607:6;1603:15;1599:29;1594:3;1590:39;1586:50;1579:57;;;1342:300;;;;:::o;1647:231::-;1796:2;1785:9;1778:21;1759:4;1816:56;1868:2;1857:9;1853:18;1845:6;1816:56;:::i;1883:226::-;1942:6;1995:2;1983:9;1974:7;1970:23;1966:32;1963:52;;;2011:1;2008;2001:12;1963:52;-1:-1:-1;2056:23:32;;1883:226;-1:-1:-1;1883:226:32:o;2322:300::-;2390:6;2398;2451:2;2439:9;2430:7;2426:23;2422:32;2419:52;;;2467:1;2464;2457:12;2419:52;2490:29;2509:9;2490:29;:::i;:::-;2480:39;2588:2;2573:18;;;;2560:32;;-1:-1:-1;;;2322:300:32:o;2809:374::-;2886:6;2894;2902;2955:2;2943:9;2934:7;2930:23;2926:32;2923:52;;;2971:1;2968;2961:12;2923:52;2994:29;3013:9;2994:29;:::i;:::-;2984:39;;3042:38;3076:2;3065:9;3061:18;3042:38;:::i;:::-;2809:374;;3032:48;;-1:-1:-1;;;3149:2:32;3134:18;;;;3121:32;;2809:374::o;3601:346::-;3669:6;3677;3730:2;3718:9;3709:7;3705:23;3701:32;3698:52;;;3746:1;3743;3736:12;3698:52;-1:-1:-1;;3791:23:32;;;3911:2;3896:18;;;3883:32;;-1:-1:-1;3601:346:32:o;4231:300::-;4299:6;4307;4360:2;4348:9;4339:7;4335:23;4331:32;4328:52;;;4376:1;4373;4366:12;4328:52;4421:23;;;-1:-1:-1;4487:38:32;4521:2;4506:18;;4487:38;:::i;:::-;4477:48;;4231:300;;;;;:::o;4536:587::-;4607:6;4615;4668:2;4656:9;4647:7;4643:23;4639:32;4636:52;;;4684:1;4681;4674:12;4636:52;4724:9;4711:23;4757:18;4749:6;4746:30;4743:50;;;4789:1;4786;4779:12;4743:50;4812:22;;4865:4;4857:13;;4853:27;-1:-1:-1;4843:55:32;;4894:1;4891;4884:12;4843:55;4934:2;4921:16;4960:18;4952:6;4949:30;4946:50;;;4992:1;4989;4982:12;4946:50;5037:7;5032:2;5023:6;5019:2;5015:15;5011:24;5008:37;5005:57;;;5058:1;5055;5048:12;5005:57;5089:2;5081:11;;;;;5111:6;;-1:-1:-1;4536:587:32;-1:-1:-1;;;4536:587:32:o;5128:186::-;5187:6;5240:2;5228:9;5219:7;5215:23;5211:32;5208:52;;;5256:1;5253;5246:12;5208:52;5279:29;5298:9;5279:29;:::i;5319:280::-;5377:6;5430:2;5418:9;5409:7;5405:23;5401:32;5398:52;;;5446:1;5443;5436:12;5398:52;5485:9;5472:23;5535:14;5528:5;5524:26;5517:5;5514:37;5504:65;;5565:1;5562;5555:12;5895:347;5960:6;5968;6021:2;6009:9;6000:7;5996:23;5992:32;5989:52;;;6037:1;6034;6027:12;5989:52;6060:29;6079:9;6060:29;:::i;:::-;6050:39;;6139:2;6128:9;6124:18;6111:32;6186:5;6179:13;6172:21;6165:5;6162:32;6152:60;;6208:1;6205;6198:12;6247:127;6308:10;6303:3;6299:20;6296:1;6289:31;6339:4;6336:1;6329:15;6363:4;6360:1;6353:15;6379:1207;6474:6;6482;6490;6498;6551:3;6539:9;6530:7;6526:23;6522:33;6519:53;;;6568:1;6565;6558:12;6519:53;6591:29;6610:9;6591:29;:::i;:::-;6581:39;;6639:38;6673:2;6662:9;6658:18;6639:38;:::i;:::-;6629:48;-1:-1:-1;6746:2:32;6731:18;;6718:32;;-1:-1:-1;6825:2:32;6810:18;;6797:32;6852:18;6841:30;;6838:50;;;6884:1;6881;6874:12;6838:50;6907:22;;6960:4;6952:13;;6948:27;-1:-1:-1;6938:55:32;;6989:1;6986;6979:12;6938:55;7029:2;7016:16;7055:18;7047:6;7044:30;7041:56;;;7077:18;;:::i;:::-;7126:2;7120:9;7218:2;7180:17;;-1:-1:-1;;7176:31:32;;;7209:2;7172:40;7168:54;7156:67;;7253:18;7238:34;;7274:22;;;7235:62;7232:88;;;7300:18;;:::i;:::-;7336:2;7329:22;7360;;;7401:15;;;7418:2;7397:24;7394:37;-1:-1:-1;7391:57:32;;;7444:1;7441;7434:12;7391:57;7500:6;7495:2;7491;7487:11;7482:2;7474:6;7470:15;7457:50;7553:1;7548:2;7539:6;7531;7527:19;7523:28;7516:39;7574:6;7564:16;;;;;6379:1207;;;;;;;:::o;7889:260::-;7957:6;7965;8018:2;8006:9;7997:7;7993:23;7989:32;7986:52;;;8034:1;8031;8024:12;7986:52;8057:29;8076:9;8057:29;:::i;:::-;8047:39;;8105:38;8139:2;8128:9;8124:18;8105:38;:::i;8367:380::-;8446:1;8442:12;;;;8489;;;8510:61;;8564:4;8556:6;8552:17;8542:27;;8510:61;8617:2;8609:6;8606:14;8586:18;8583:38;8580:161;;8663:10;8658:3;8654:20;8651:1;8644:31;8698:4;8695:1;8688:15;8726:4;8723:1;8716:15;8580:161;;8367:380;;;:::o;9128:127::-;9189:10;9184:3;9180:20;9177:1;9170:31;9220:4;9217:1;9210:15;9244:4;9241:1;9234:15;9260:168;9333:9;;;9364;;9381:15;;;9375:22;;9361:37;9351:71;;9402:18;;:::i;9565:217::-;9605:1;9631;9621:132;;9675:10;9670:3;9666:20;9663:1;9656:31;9710:4;9707:1;9700:15;9738:4;9735:1;9728:15;9621:132;-1:-1:-1;9767:9:32;;9565:217::o;9787:127::-;9848:10;9843:3;9839:20;9836:1;9829:31;9879:4;9876:1;9869:15;9903:4;9900:1;9893:15;10045:518;10147:2;10142:3;10139:11;10136:421;;;10183:5;10180:1;10173:16;10227:4;10224:1;10214:18;10297:2;10285:10;10281:19;10278:1;10274:27;10268:4;10264:38;10333:4;10321:10;10318:20;10315:47;;;-1:-1:-1;10356:4:32;10315:47;10411:2;10406:3;10402:12;10399:1;10395:20;10389:4;10385:31;10375:41;;10466:81;10484:2;10477:5;10474:13;10466:81;;;10543:1;10529:16;;10510:1;10499:13;10466:81;;10739:1198;10863:18;10858:3;10855:27;10852:53;;;10885:18;;:::i;:::-;10914:94;11004:3;10964:38;10996:4;10990:11;10964:38;:::i;:::-;10958:4;10914:94;:::i;:::-;11034:1;11059:2;11054:3;11051:11;11076:1;11071:608;;;;11723:1;11740:3;11737:93;;;-1:-1:-1;11796:19:32;;;11783:33;11737:93;-1:-1:-1;;10696:1:32;10692:11;;;10688:24;10684:29;10674:40;10720:1;10716:11;;;10671:57;11843:78;;11044:887;;11071:608;9992:1;9985:14;;;10029:4;10016:18;;-1:-1:-1;;11107:17:32;;;11222:229;11236:7;11233:1;11230:14;11222:229;;;11325:19;;;11312:33;11297:49;;11432:4;11417:20;;;;11385:1;11373:14;;;;11252:12;11222:229;;;11226:3;11479;11470:7;11467:16;11464:159;;;11603:1;11599:6;11593:3;11587;11584:1;11580:11;11576:21;11572:34;11568:39;11555:9;11550:3;11546:19;11533:33;11529:79;11521:6;11514:95;11464:159;;;11666:1;11660:3;11657:1;11653:11;11649:19;11643:4;11636:33;11044:887;;10739:1198;;;:::o;11942:555::-;12149:2;12138:9;12131:21;12112:4;12175:56;12227:2;12216:9;12212:18;12204:6;12175:56;:::i;:::-;12279:9;12271:6;12267:22;12262:2;12251:9;12247:18;12240:50;12314:6;12306;12299:22;12368:6;12360;12355:2;12347:6;12343:15;12330:45;12421:1;12416:2;12407:6;12399;12395:19;12391:28;12384:39;12488:2;12481;12477:7;12472:2;12464:6;12460:15;12456:29;12448:6;12444:42;12440:51;12432:59;;;11942:555;;;;;;:::o;12502:212::-;12544:3;12582:5;12576:12;12626:6;12619:4;12612:5;12608:16;12603:3;12597:36;12688:1;12652:16;;12677:13;;;-1:-1:-1;12652:16:32;;12502:212;-1:-1:-1;12502:212:32:o;12719:267::-;12898:3;12923:57;12949:30;12975:3;12967:6;12949:30;:::i;:::-;12941:6;12923:57;:::i;13276:179::-;13375:14;13344:22;;;13368;;;13340:51;;13403:23;;13400:49;;;13429:18;;:::i;13460:496::-;-1:-1:-1;;;;;13691:32:32;;;13673:51;;13760:32;;13755:2;13740:18;;13733:60;13824:2;13809:18;;13802:34;;;13872:3;13867:2;13852:18;;13845:31;;;-1:-1:-1;;13893:57:32;;13930:19;;13922:6;13893:57;:::i;:::-;13885:65;13460:496;-1:-1:-1;;;;;;13460:496:32:o;13961:249::-;14030:6;14083:2;14071:9;14062:7;14058:23;14054:32;14051:52;;;14099:1;14096;14089:12;14051:52;14131:9;14125:16;14150:30;14174:5;14150:30;:::i;14765:182::-;14866:14;14859:22;;;14835;;;14831:51;;14894:24;;14891:50;;;14921:18;;:::i;14952:128::-;15019:9;;;15040:11;;;15037:37;;;15054:18;;:::i;15085:127::-;15146:10;15141:3;15137:20;15134:1;15127:31;15177:4;15174:1;15167:15;15201:4;15198:1;15191:15"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MINTER_ROLE()":"d5391393","acceptDefaultAdminTransfer()":"cefc1429","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","beginDefaultAdminTransfer(address)":"634e93da","cancelDefaultAdminTransfer()":"d602b9fd","changeDefaultAdminDelay(uint48)":"649a5ec7","contractURI()":"e8a3d485","defaultAdmin()":"84ef8ffc","defaultAdminDelay()":"cc8463c8","defaultAdminDelayIncreaseWait()":"022d63fb","getApproved(uint256)":"081812fc","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","pause()":"8456cb59","paused()":"5c975abb","pendingDefaultAdmin()":"cf6eefb7","pendingDefaultAdminDelay()":"a1eda53c","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rollbackDefaultAdminDelay()":"0aa6220b","royaltyInfo(uint256,uint256)":"2a55205a","safeMint(address,uint256)":"a1448194","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","setBaseURI(string)":"55f804b3","setContractURI(string)":"938e3d7b","setRoyaltyInfo(address,uint96)":"02fa7c47","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","unpause()":"3f4ba83a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"contractMetadataURI_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"royaltyReceiver_\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"royaltyFeeBasisPoints_\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"initialAdmin_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialMinter_\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"defaultAdminDelay_\",\"type\":\"uint48\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"name\":\"AccessControlEnforcedDefaultAdminDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessControlEnforcedDefaultAdminRules\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"}],\"name\":\"AccessControlInvalidDefaultAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"ERC2981InvalidDefaultRoyalty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC2981InvalidDefaultRoyaltyReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"ERC2981InvalidTokenRoyalty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC2981InvalidTokenRoyaltyReceiver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC721EnumerableForbiddenBatchMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ERC721OutOfBoundsIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"previousURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newURI\",\"type\":\"string\"}],\"name\":\"BaseURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"previousURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newURI\",\"type\":\"string\"}],\"name\":\"ContractURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminDelayChangeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminDelayChangeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminTransferCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminTransferScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"feeBasisPoints\",\"type\":\"uint96\"}],\"name\":\"DefaultRoyaltyUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"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\":\"acceptDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"beginDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"}],\"name\":\"changeDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelayIncreaseWait\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollbackDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"}],\"name\":\"setBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractMetadataURI_\",\"type\":\"string\"}],\"name\":\"setContractURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"feeBasisPoints\",\"type\":\"uint96\"}],\"name\":\"setRoyaltyInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Does not include staking logic \\u2014 staking is handled by TricksforBoosterStaking.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlEnforcedDefaultAdminDelay(uint48)\":[{\"details\":\"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\"}],\"AccessControlEnforcedDefaultAdminRules()\":[{\"details\":\"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\"}],\"AccessControlInvalidDefaultAdmin(address)\":[{\"details\":\"The new default admin is not a valid default admin.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"ERC2981InvalidDefaultRoyalty(uint256,uint256)\":[{\"details\":\"The default royalty set is invalid (eg. (numerator / denominator) >= 1).\"}],\"ERC2981InvalidDefaultRoyaltyReceiver(address)\":[{\"details\":\"The default royalty receiver is invalid.\"}],\"ERC2981InvalidTokenRoyalty(uint256,uint256,uint256)\":[{\"details\":\"The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1).\"}],\"ERC2981InvalidTokenRoyaltyReceiver(uint256,address)\":[{\"details\":\"The royalty receiver for `tokenId` is invalid.\"}],\"ERC721EnumerableForbiddenBatchMint()\":[{\"details\":\"Batch mint is not allowed.\"}],\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721OutOfBoundsIndex(address,uint256)\":[{\"details\":\"An `owner`'s token query was out of bounds for `index`. NOTE: The owner being `address(0)` indicates a global out of bounds index.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in a uint of `bits` size.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"DefaultAdminDelayChangeCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\"},\"DefaultAdminDelayChangeScheduled(uint48,uint48)\":{\"details\":\"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed.\"},\"DefaultAdminTransferCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\"},\"DefaultAdminTransferScheduled(address,uint48)\":{\"details\":\"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"acceptDefaultAdminTransfer()\":{\"details\":\"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\"},\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"beginDefaultAdminTransfer(address)\":{\"details\":\"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminTransferScheduled} event.\"},\"cancelDefaultAdminTransfer()\":{\"details\":\"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminTransferCanceled} event.\"},\"changeDefaultAdminDelay(uint48)\":{\"details\":\"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event.\"},\"constructor\":{\"params\":{\"baseURI_\":\"Base URI for token metadata (appended with tokenId)\",\"contractMetadataURI_\":\"URI for OpenSea collection-level metadata\",\"defaultAdminDelay_\":\"Delay in seconds for default-admin transfers\",\"initialAdmin_\":\"Initial default administrator\",\"initialMinter_\":\"Initial account authorized to mint\",\"name_\":\"ERC-721 collection name\",\"royaltyFeeBasisPoints_\":\"Royalty fee in basis points (10 000 = 100%)\",\"royaltyReceiver_\":\"Address that receives royalty payments\",\"symbol_\":\"ERC-721 collection symbol\"}},\"defaultAdmin()\":{\"details\":\"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\"},\"defaultAdminDelay()\":{\"details\":\"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}.\"},\"defaultAdminDelayIncreaseWait()\":{\"details\":\"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overridden for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"owner()\":{\"details\":\"Gets the address of the owner.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"pendingDefaultAdmin()\":{\"details\":\"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\"},\"pendingDefaultAdminDelay()\":{\"details\":\"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule.\"},\"renounceRole(bytes32,address)\":{\"details\":\"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role.\"},\"revokeRole(bytes32,address)\":{\"details\":\"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"rollbackDefaultAdminDelay()\":{\"details\":\"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a {DefaultAdminDelayChangeCanceled} event.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange. NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers.\"},\"safeMint(address,uint256)\":{\"params\":{\"to\":\"Recipient address for the minted token.\",\"tokenId\":\"Token ID to mint. Must not already exist.\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"setBaseURI(string)\":{\"params\":{\"baseURI_\":\"New base URI string.\"}},\"setContractURI(string)\":{\"params\":{\"contractMetadataURI_\":\"New collection metadata URI.\"}},\"setRoyaltyInfo(address,uint96)\":{\"params\":{\"feeBasisPoints\":\"Royalty fee in basis points (10 000 = 100%).\",\"receiver\":\"Address that receives royalty payments.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"TricksforBoosterNFT\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddress()\":[{\"notice\":\"Zero address supplied where a non-zero address is required.\"}]},\"kind\":\"user\",\"methods\":{\"MINTER_ROLE()\":{\"notice\":\"Role that authorizes an account to call safeMint.\"},\"baseURI()\":{\"notice\":\"Returns the base URI used to construct token metadata URLs.\"},\"contractURI()\":{\"notice\":\"Returns the collection-level metadata URI (OpenSea extension).\"},\"pause()\":{\"notice\":\"Pauses minting. Does not affect transfers.\"},\"safeMint(address,uint256)\":{\"notice\":\"Mints a token with the given ID to the specified address. The caller must hold MINTER_ROLE. Reverts when paused.\"},\"setBaseURI(string)\":{\"notice\":\"Updates the base URI used to construct per-token metadata URIs.\"},\"setContractURI(string)\":{\"notice\":\"Updates the collection-level metadata URI (OpenSea contractURI extension).\"},\"setRoyaltyInfo(address,uint96)\":{\"notice\":\"Updates the default royalty receiver and fee for all tokens.\"},\"unpause()\":{\"notice\":\"Unpauses minting.\"}},\"notice\":\"ERC-721 Enumerable NFT collection for Tricksfor Booster items. OpenSea-compatible: supports tokenURI, contractURI, and ERC-2981 royalties. Minting is role-gated (MINTER_ROLE) and can be paused by the default admin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TricksforBoosterNFT.sol\":\"TricksforBoosterNFT\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4686ec784d75f95beaf2bf5b5f26e5f946d4c864aaee9c3c62bdc18381f5e017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26710ca191913f3c9df542079c4a6dcff02968e92d4f7357daefef9fbe72a19c\",\"dweb:/ipfs/QmanHbeWuBbVEqXySHa1zhm2rExjYpChDBubBaJNTCa2JB\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x5e57537d20a1706f81517842eb09b48a564d5cfc15131537bef76d9c8c100938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c08027cac4185cca5bd35924409cb91aaa43a3fd5629d80c65edbab7c4ee2671\",\"dweb:/ipfs/QmYEhwh5mQZ5NqCaqUm2qLJ1NLcRpwEz87MM7bzXrtCfvD\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x5d8c755a8bfec7cb44cff075c206d642478ebc10c780494bc540cf90f3f25771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a18c2615920ab40a406d658dc7d9f0df0447eddf7c689b29720243a623fea72e\",\"dweb:/ipfs/QmXqCRrcx9A5MhBojvSEsiGhqKDnJjfVaJuF7by3YsKWwf\"]},\"@openzeppelin/contracts/interfaces/IERC2981.sol\":{\"keccak256\":\"0xafab0e6c71905303c47dd254168cb31efc91f0ae284cde609b0202f97f85469e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://824d05aec56eb82a2a3c28eece530dc0792d3a008b09d01444e57cf4aceb0445\",\"dweb:/ipfs/QmVvqmJ5UobuRU9Q4JMyXxBfzKs2cpjbWXMNpxX4binTX8\"]},\"@openzeppelin/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf6bb0dc431a9c50e25756412ec14cfcd4dc61dd40b8dc0e1b58ec09fce6d5564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb87fef7e8ed754b8600cd5d42e4f23128059006368ffd19e4d50cc166471ee5\",\"dweb:/ipfs/Qmc1vy1cevKreGUsG7S79gyhNvDtPnNz9qG47eYVHmMKLs\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0x68cc639388c16ad78d3a8e031f525e74ae05713fc7a75254f4627fc66fee1078\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b0e8219411f017a1f87c4554cb21c093bdbd59e667c5d1318bc309439f6f1f8\",\"dweb:/ipfs/Qmf5wwg7BT8GLJCUH4Qw4QQfDwjYLzUvzLmbsDafQmmnVr\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xaa3852717be1903bf8b8a66c7ce323f70ac93227769c450f2b332fdd16bd9198\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09ce2e4a5b1064a392594c0d5efeb3ccd8eacf431e55a85574cafb6bfb72ba69\",\"dweb:/ipfs/QmUbT5UomYpwwMrNMzzuNcGb4sxuMZ4jz8mMPZewX8mEPn\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0xf46268c37522320bb2119a5a394bc5c739a95c0c574c8d08e8c643f4d06e5c76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://517e4b295f35b9947c72ad7379a6089439ece7bb6f4a2ea0a159da13046c039e\",\"dweb:/ipfs/QmZXzkSfLUbvujig3zVbpDHykpHhqLpvQtdiN3B5j4TA3u\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0xc7efbc23214ad7dced8bf2249460f4bda114d57f6a0079f84040654280f455bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f5bd44efca8c8c0d74439e7b808d1f9c4af1df78f91fef8e8bbca8104645435\",\"dweb:/ipfs/Qmb42XSd8MKsEitp42sZkSFGqDRigk6QgGXtiJyJqUZJJ6\"]},\"@openzeppelin/contracts/token/common/ERC2981.sol\":{\"keccak256\":\"0xa33062c6e0675a74a27b06a4ae4c6ad4d3b7219e27d9c146a4ac57295096d393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://777543d88013fdd0ee7f47ac619fb13a1993bb667675d8816fde024f73cfbf2d\",\"dweb:/ipfs/QmfDS9uL1XZ2oUe1PH8eRCRyu3Hf98cK8ksGf4Ww7kg5zv\"]},\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"contracts/TricksforBoosterNFT.sol\":{\"keccak256\":\"0x3fbcfcc50cbbc5abe8c0b9999c10af3def965a7613a5fa06f80e0facf0a52cde\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7d2f530ac28ec8fd193de510adab0d84b51e596ad5974c1dab7d7117c13f803\",\"dweb:/ipfs/QmNkABbrsot8t1VW3SPFxzmhikosAd3NB2V1X5aXQ5PJ6Z\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":1630,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":1632,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":1636,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":1640,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":1644,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":1650,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":2723,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_ownedTokens","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_uint256,t_uint256))"},{"astId":2727,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_ownedTokensIndex","offset":0,"slot":"7","type":"t_mapping(t_uint256,t_uint256)"},{"astId":2730,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_allTokens","offset":0,"slot":"8","type":"t_array(t_uint256)dyn_storage"},{"astId":2734,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_allTokensIndex","offset":0,"slot":"9","type":"t_mapping(t_uint256,t_uint256)"},{"astId":3247,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_defaultRoyaltyInfo","offset":0,"slot":"10","type":"t_struct(RoyaltyInfo)3244_storage"},{"astId":3252,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_tokenRoyaltyInfo","offset":0,"slot":"11","type":"t_mapping(t_uint256,t_struct(RoyaltyInfo)3244_storage)"},{"astId":26,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_roles","offset":0,"slot":"12","type":"t_mapping(t_bytes32,t_struct(RoleData)21_storage)"},{"astId":636,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_pendingDefaultAdmin","offset":0,"slot":"13","type":"t_address"},{"astId":638,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_pendingDefaultAdminSchedule","offset":20,"slot":"13","type":"t_uint48"},{"astId":640,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_currentDelay","offset":26,"slot":"13","type":"t_uint48"},{"astId":642,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_currentDefaultAdmin","offset":0,"slot":"14","type":"t_address"},{"astId":644,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_pendingDelay","offset":20,"slot":"14","type":"t_uint48"},{"astId":646,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_pendingDelaySchedule","offset":26,"slot":"14","type":"t_uint48"},{"astId":4386,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_paused","offset":0,"slot":"15","type":"t_bool"},{"astId":9881,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_baseTokenURI","offset":0,"slot":"16","type":"t_string_storage"},{"astId":9883,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"_contractMetadataURI","offset":0,"slot":"17","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)dyn_storage":{"base":"t_uint256","encoding":"dynamic_array","label":"uint256[]","numberOfBytes":"32"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_mapping(t_uint256,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => uint256))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_struct(RoleData)21_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct AccessControl.RoleData)","numberOfBytes":"32","value":"t_struct(RoleData)21_storage"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_struct(RoyaltyInfo)3244_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct ERC2981.RoyaltyInfo)","numberOfBytes":"32","value":"t_struct(RoyaltyInfo)3244_storage"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(RoleData)21_storage":{"encoding":"inplace","label":"struct AccessControl.RoleData","members":[{"astId":18,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"hasRole","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":20,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"adminRole","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(RoyaltyInfo)3244_storage":{"encoding":"inplace","label":"struct ERC2981.RoyaltyInfo","members":[{"astId":3241,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"receiver","offset":0,"slot":"0","type":"t_address"},{"astId":3243,"contract":"contracts/TricksforBoosterNFT.sol:TricksforBoosterNFT","label":"royaltyFraction","offset":20,"slot":"0","type":"t_uint96"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint48":{"encoding":"inplace","label":"uint48","numberOfBytes":"6"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"errors":{"ZeroAddress()":[{"notice":"Zero address supplied where a non-zero address is required."}]},"kind":"user","methods":{"MINTER_ROLE()":{"notice":"Role that authorizes an account to call safeMint."},"baseURI()":{"notice":"Returns the base URI used to construct token metadata URLs."},"contractURI()":{"notice":"Returns the collection-level metadata URI (OpenSea extension)."},"pause()":{"notice":"Pauses minting. Does not affect transfers."},"safeMint(address,uint256)":{"notice":"Mints a token with the given ID to the specified address. The caller must hold MINTER_ROLE. Reverts when paused."},"setBaseURI(string)":{"notice":"Updates the base URI used to construct per-token metadata URIs."},"setContractURI(string)":{"notice":"Updates the collection-level metadata URI (OpenSea contractURI extension)."},"setRoyaltyInfo(address,uint96)":{"notice":"Updates the default royalty receiver and fee for all tokens."},"unpause()":{"notice":"Unpauses minting."}},"notice":"ERC-721 Enumerable NFT collection for Tricksfor Booster items. OpenSea-compatible: supports tokenURI, contractURI, and ERC-2981 royalties. Minting is role-gated (MINTER_ROLE) and can be paused by the default admin.","version":1}}},"contracts/TricksforBoosterStaking.sol":{"TricksforBoosterStaking":{"abi":[{"inputs":[{"internalType":"address","name":"nftContract_","type":"address"},{"internalType":"address","name":"initialOwner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"InvalidEmergencyRecipient","type":"error"},{"inputs":[],"name":"NotOriginalStaker","type":"error"},{"inputs":[],"name":"NotTokenOwner","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"TokenAlreadyStaked","type":"error"},{"inputs":[],"name":"TokenIsTracked","type":"error"},{"inputs":[],"name":"TokenNotHeld","type":"error"},{"inputs":[],"name":"TokenNotStaked","type":"error"},{"inputs":[],"name":"UnsupportedNFTContract","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"originalStaker","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"withdrawnAt","type":"uint256"}],"name":"EmergencyWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakedAt","type":"uint256"}],"name":"TokenStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unstakedAt","type":"uint256"}],"name":"TokenUnstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rescuedAt","type":"uint256"}],"name":"UntrackedTokenRescued","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getWalletStakedTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"isStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftContract","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueUntrackedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stakedAtOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stakedOwnerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Pause gates new staking only. Unstaking is always available so players can always recover their assets. emergencyWithdraw is an explicit, named, and event-emitting admin path — it is not hidden.","errors":{"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}]},"events":{"EmergencyWithdrawn(address,uint256,address,uint256)":{"params":{"originalStaker":"The wallet that originally staked the token.","recipient":"The address that received the token.","tokenId":"The affected NFT token ID.","withdrawnAt":"Block timestamp at the moment of the withdrawal."}},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"TokenStaked(address,uint256,uint256)":{"params":{"stakedAt":"Block timestamp at the moment of staking.","staker":"The wallet address that owns and staked the token.","tokenId":"The staked NFT token ID."}},"TokenUnstaked(address,uint256,uint256)":{"params":{"staker":"The wallet address that originally staked (and receives back) the token.","tokenId":"The unstaked NFT token ID.","unstakedAt":"Block timestamp at the moment of unstaking."}},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"constructor":{"params":{"initialOwner_":"Initial contract owner. Mainnet deployments should use a multisig.","nftContract_":"Address of the TricksforBoosterNFT contract."}},"emergencyWithdraw(uint256,address)":{"params":{"recipient":"The address to send the token to.","tokenId":"The token ID to withdraw."}},"getWalletStakedTokens(address)":{"details":"Ordering is not guaranteed. Tokens are stored in an array with swap-and-pop removal: when a token is unstaked or emergency-withdrawn, the last element in the array takes its position. Do not rely on index stability across state-changing transactions.","params":{"wallet":"The address to query."}},"isStaked(uint256)":{"params":{"tokenId":"The token ID to query."}},"onERC721Received(address,address,uint256,bytes)":{"params":{"from":"The address that previously owned the token (recorded as staker).","tokenId":"The token ID being transferred."},"returns":{"_0":"The ERC-721 receiver magic value confirming acceptance."}},"owner()":{"details":"Returns the address of the current owner."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"rescueUntrackedToken(uint256,address)":{"params":{"recipient":"The non-zero address that receives the recovered token.","tokenId":"The untracked token held by this contract."}},"stake(uint256)":{"params":{"tokenId":"The token ID to stake."}},"stakedAtOf(uint256)":{"params":{"tokenId":"The token ID to query."}},"stakedOwnerOf(uint256)":{"params":{"tokenId":"The token ID to query."}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"unstake(uint256)":{"params":{"tokenId":"The token ID to unstake."}}},"stateVariables":{"_stakedAt":{"details":"Maps tokenId → block.timestamp at which the token was staked."},"_stakedBy":{"details":"Maps tokenId → original staker address. Zero address means not staked."},"_walletTokenIds":{"details":"Maps staker address → list of currently staked token IDs."},"_walletTokenIndex":{"details":"Maps tokenId → index in _walletTokenIds[staker] for O(1) removal."}},"title":"TricksforBoosterStaking","version":1},"evm":{"bytecode":{"functionDebugData":{"@_10308":{"entryPoint":null,"id":10308,"parameterSlots":2,"returnSlots":0},"@_429":{"entryPoint":null,"id":429,"parameterSlots":1,"returnSlots":0},"@_4517":{"entryPoint":null,"id":4517,"parameterSlots":0,"returnSlots":0},"@_reentrancyGuardStorageSlot_4597":{"entryPoint":null,"id":4597,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_525":{"entryPoint":243,"id":525,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_587":{"entryPoint":215,"id":587,"parameterSlots":1,"returnSlots":0},"@getUint256Slot_4666":{"entryPoint":null,"id":4666,"parameterSlots":1,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":322,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":349,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:699:32","nodeType":"YulBlock","src":"0:699:32","statements":[{"nativeSrc":"6:3:32","nodeType":"YulBlock","src":"6:3:32","statements":[]},{"body":{"nativeSrc":"74:117:32","nodeType":"YulBlock","src":"74:117:32","statements":[{"nativeSrc":"84:22:32","nodeType":"YulAssignment","src":"84:22:32","value":{"arguments":[{"name":"offset","nativeSrc":"99:6:32","nodeType":"YulIdentifier","src":"99:6:32"}],"functionName":{"name":"mload","nativeSrc":"93:5:32","nodeType":"YulIdentifier","src":"93:5:32"},"nativeSrc":"93:13:32","nodeType":"YulFunctionCall","src":"93:13:32"},"variableNames":[{"name":"value","nativeSrc":"84:5:32","nodeType":"YulIdentifier","src":"84:5:32"}]},{"body":{"nativeSrc":"169:16:32","nodeType":"YulBlock","src":"169:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"178:1:32","nodeType":"YulLiteral","src":"178:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"181:1:32","nodeType":"YulLiteral","src":"181:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"171:6:32","nodeType":"YulIdentifier","src":"171:6:32"},"nativeSrc":"171:12:32","nodeType":"YulFunctionCall","src":"171:12:32"},"nativeSrc":"171:12:32","nodeType":"YulExpressionStatement","src":"171:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"128:5:32","nodeType":"YulIdentifier","src":"128:5:32"},{"arguments":[{"name":"value","nativeSrc":"139:5:32","nodeType":"YulIdentifier","src":"139:5:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"154:3:32","nodeType":"YulLiteral","src":"154:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"159:1:32","nodeType":"YulLiteral","src":"159:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"150:3:32","nodeType":"YulIdentifier","src":"150:3:32"},"nativeSrc":"150:11:32","nodeType":"YulFunctionCall","src":"150:11:32"},{"kind":"number","nativeSrc":"163:1:32","nodeType":"YulLiteral","src":"163:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"146:3:32","nodeType":"YulIdentifier","src":"146:3:32"},"nativeSrc":"146:19:32","nodeType":"YulFunctionCall","src":"146:19:32"}],"functionName":{"name":"and","nativeSrc":"135:3:32","nodeType":"YulIdentifier","src":"135:3:32"},"nativeSrc":"135:31:32","nodeType":"YulFunctionCall","src":"135:31:32"}],"functionName":{"name":"eq","nativeSrc":"125:2:32","nodeType":"YulIdentifier","src":"125:2:32"},"nativeSrc":"125:42:32","nodeType":"YulFunctionCall","src":"125:42:32"}],"functionName":{"name":"iszero","nativeSrc":"118:6:32","nodeType":"YulIdentifier","src":"118:6:32"},"nativeSrc":"118:50:32","nodeType":"YulFunctionCall","src":"118:50:32"},"nativeSrc":"115:70:32","nodeType":"YulIf","src":"115:70:32"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"14:177:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"53:6:32","nodeType":"YulTypedName","src":"53:6:32","type":""}],"returnVariables":[{"name":"value","nativeSrc":"64:5:32","nodeType":"YulTypedName","src":"64:5:32","type":""}],"src":"14:177:32"},{"body":{"nativeSrc":"294:195:32","nodeType":"YulBlock","src":"294:195:32","statements":[{"body":{"nativeSrc":"340:16:32","nodeType":"YulBlock","src":"340:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"349:1:32","nodeType":"YulLiteral","src":"349:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"352:1:32","nodeType":"YulLiteral","src":"352:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"342:6:32","nodeType":"YulIdentifier","src":"342:6:32"},"nativeSrc":"342:12:32","nodeType":"YulFunctionCall","src":"342:12:32"},"nativeSrc":"342:12:32","nodeType":"YulExpressionStatement","src":"342:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"315:7:32","nodeType":"YulIdentifier","src":"315:7:32"},{"name":"headStart","nativeSrc":"324:9:32","nodeType":"YulIdentifier","src":"324:9:32"}],"functionName":{"name":"sub","nativeSrc":"311:3:32","nodeType":"YulIdentifier","src":"311:3:32"},"nativeSrc":"311:23:32","nodeType":"YulFunctionCall","src":"311:23:32"},{"kind":"number","nativeSrc":"336:2:32","nodeType":"YulLiteral","src":"336:2:32","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"307:3:32","nodeType":"YulIdentifier","src":"307:3:32"},"nativeSrc":"307:32:32","nodeType":"YulFunctionCall","src":"307:32:32"},"nativeSrc":"304:52:32","nodeType":"YulIf","src":"304:52:32"},{"nativeSrc":"365:50:32","nodeType":"YulAssignment","src":"365:50:32","value":{"arguments":[{"name":"headStart","nativeSrc":"405:9:32","nodeType":"YulIdentifier","src":"405:9:32"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"375:29:32","nodeType":"YulIdentifier","src":"375:29:32"},"nativeSrc":"375:40:32","nodeType":"YulFunctionCall","src":"375:40:32"},"variableNames":[{"name":"value0","nativeSrc":"365:6:32","nodeType":"YulIdentifier","src":"365:6:32"}]},{"nativeSrc":"424:59:32","nodeType":"YulAssignment","src":"424:59:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"468:9:32","nodeType":"YulIdentifier","src":"468:9:32"},{"kind":"number","nativeSrc":"479:2:32","nodeType":"YulLiteral","src":"479:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"464:3:32","nodeType":"YulIdentifier","src":"464:3:32"},"nativeSrc":"464:18:32","nodeType":"YulFunctionCall","src":"464:18:32"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"434:29:32","nodeType":"YulIdentifier","src":"434:29:32"},"nativeSrc":"434:49:32","nodeType":"YulFunctionCall","src":"434:49:32"},"variableNames":[{"name":"value1","nativeSrc":"424:6:32","nodeType":"YulIdentifier","src":"424:6:32"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nativeSrc":"196:293:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"252:9:32","nodeType":"YulTypedName","src":"252:9:32","type":""},{"name":"dataEnd","nativeSrc":"263:7:32","nodeType":"YulTypedName","src":"263:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"275:6:32","nodeType":"YulTypedName","src":"275:6:32","type":""},{"name":"value1","nativeSrc":"283:6:32","nodeType":"YulTypedName","src":"283:6:32","type":""}],"src":"196:293:32"},{"body":{"nativeSrc":"595:102:32","nodeType":"YulBlock","src":"595:102:32","statements":[{"nativeSrc":"605:26:32","nodeType":"YulAssignment","src":"605:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"617:9:32","nodeType":"YulIdentifier","src":"617:9:32"},{"kind":"number","nativeSrc":"628:2:32","nodeType":"YulLiteral","src":"628:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"613:3:32","nodeType":"YulIdentifier","src":"613:3:32"},"nativeSrc":"613:18:32","nodeType":"YulFunctionCall","src":"613:18:32"},"variableNames":[{"name":"tail","nativeSrc":"605:4:32","nodeType":"YulIdentifier","src":"605:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"647:9:32","nodeType":"YulIdentifier","src":"647:9:32"},{"arguments":[{"name":"value0","nativeSrc":"662:6:32","nodeType":"YulIdentifier","src":"662:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"678:3:32","nodeType":"YulLiteral","src":"678:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"683:1:32","nodeType":"YulLiteral","src":"683:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"674:3:32","nodeType":"YulIdentifier","src":"674:3:32"},"nativeSrc":"674:11:32","nodeType":"YulFunctionCall","src":"674:11:32"},{"kind":"number","nativeSrc":"687:1:32","nodeType":"YulLiteral","src":"687:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"670:3:32","nodeType":"YulIdentifier","src":"670:3:32"},"nativeSrc":"670:19:32","nodeType":"YulFunctionCall","src":"670:19:32"}],"functionName":{"name":"and","nativeSrc":"658:3:32","nodeType":"YulIdentifier","src":"658:3:32"},"nativeSrc":"658:32:32","nodeType":"YulFunctionCall","src":"658:32:32"}],"functionName":{"name":"mstore","nativeSrc":"640:6:32","nodeType":"YulIdentifier","src":"640:6:32"},"nativeSrc":"640:51:32","nodeType":"YulFunctionCall","src":"640:51:32"},"nativeSrc":"640:51:32","nodeType":"YulExpressionStatement","src":"640:51:32"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"494:203:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"564:9:32","nodeType":"YulTypedName","src":"564:9:32","type":""},{"name":"value0","nativeSrc":"575:6:32","nodeType":"YulTypedName","src":"575:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"586:4:32","nodeType":"YulTypedName","src":"586:4:32","type":""}],"src":"494:203:32"}]},"contents":"{\n { }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address_fromMemory(headStart)\n value1 := abi_decode_address_fromMemory(add(headStart, 32))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n}","id":32,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561000f575f80fd5b5060405161132638038061132683398101604081905261002e9161015d565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610065816100d7565b5060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b03821615806100a757506001600160a01b038116155b156100c55760405163d92e233d60e01b815260040160405180910390fd5b506001600160a01b031660805261018e565b600180546001600160a01b03191690556100f0816100f3565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114610158575f80fd5b919050565b5f806040838503121561016e575f80fd5b61017783610142565b915061018560208401610142565b90509250929050565b60805161114f6101d75f395f818161029e0152818161037001528181610417015281816104f7015281816106f70152818161086e01528181610a050152610ad8015261114f5ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063715018a61161009e578063a694fc3a1161006e578063a694fc3a1461025c578063baa51f861461026f578063d56d229d14610299578063e30c3978146102c0578063f2fde38b146102d1575f80fd5b8063715018a61461023457806379ba50971461023c5780638456cb59146102445780638da5cb5b1461024c575f80fd5b80632b4bc300116100e45780632b4bc300146101c85780632e17de78146101e85780632f940c70146101fb5780633f4ba83a1461020e5780635c975abb14610216575f80fd5b80630fa6f64214610115578063150b7a021461012a5780631b3253b01461015b5780631dcac94d14610188575b5f80fd5b610128610123366004610f2b565b6102e4565b005b61013d610138366004610f59565b6104db565b6040516001600160e01b031990911681526020015b60405180910390f35b61017a610169366004610ff2565b5f9081526003602052604090205490565b604051908152602001610152565b6101b0610196366004610ff2565b5f908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b6101db6101d6366004611009565b610607565b604051610152919061102b565b6101286101f6366004610ff2565b610670565b610128610209366004610f2b565b6107af565b610128610939565b600154600160a01b900460ff165b6040519015158152602001610152565b61012861094b565b61012861095c565b6101286109a2565b5f546001600160a01b03166101b0565b61012861026a366004610ff2565b6109b2565b61022461027d366004610ff2565b5f908152600260205260409020546001600160a01b0316151590565b6101b07f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b03166101b0565b6101286102df366004611009565b610b7a565b6102ec610bea565b6102f4610c16565b6001600160a01b03811661031b5760405163d92e233d60e01b815260040160405180910390fd5b5f828152600260205260409020546001600160a01b031615610350576040516382d272e360e01b815260040160405180910390fd5b6040516331a9108f60e11b81526004810183905230906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156103b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d9919061106d565b6001600160a01b03161461040057604051636bcd243760e11b815260040160405180910390fd5b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061045090309085908790600401611088565b5f604051808303815f87803b158015610467575f80fd5b505af1158015610479573d5f803e3d5ffd5b5050505081816001600160a01b03167fc27a1277308b3908a0fb998812a60b1da8911b8583f20bf8f98e5246db8c47ef426040516104b991815260200190565b60405180910390a36104d760015f805160206110fa83398151915255565b5050565b5f6104e4610c16565b6104ec610c31565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105355760405163de1db39560e01b815260040160405180910390fd5b6001600160a01b03851661055c5760405163d92e233d60e01b815260040160405180910390fd5b5f848152600260205260409020546001600160a01b031615610591576040516316e9ad8f60e01b815260040160405180910390fd5b61059b8585610c5c565b83856001600160a01b03167f6173e4d2d9dd52aae0ed37afed3adcf924a490639b759ca93d32dc43366c17d2426040516105d791815260200190565b60405180910390a350630a85bd0160e11b6105fe60015f805160206110fa83398151915255565b95945050505050565b6001600160a01b0381165f9081526004602090815260409182902080548351818402810184019094528084526060939283018282801561066457602002820191905f5260205f20905b815481526020019060010190808311610650575b50505050509050919050565b610678610c16565b5f818152600260205260409020546001600160a01b0316806106ad57604051630a49bbc360e21b815260040160405180910390fd5b6001600160a01b03811633146106d6576040516332dc95cb60e01b815260040160405180910390fd5b6106e08183610cc0565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061073090309033908790600401611088565b5f604051808303815f87803b158015610747575f80fd5b505af1158015610759573d5f803e3d5ffd5b50506040514281528492503391507f563fc70fca9d440d883299c76a721644d5aca7c45df98aeb5292c4cb823579bf906020015b60405180910390a3506107ac60015f805160206110fa83398151915255565b50565b6107b7610bea565b6107bf610c16565b5f828152600260205260409020546001600160a01b0316806107f457604051630a49bbc360e21b815260040160405180910390fd5b6001600160a01b03821661081b5760405163d92e233d60e01b815260040160405180910390fd5b806001600160a01b0316826001600160a01b03161461084d5760405163c56a390560e01b815260040160405180910390fd5b6108578184610cc0565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906108a790309086908890600401611088565b5f604051808303815f87803b1580156108be575f80fd5b505af11580156108d0573d5f803e3d5ffd5b50505050816001600160a01b031683826001600160a01b03167ff4408f2b7cb3bb2b43ddb3715579eae68a12af5f2e6d938537db2be5e72f5f7d4260405161091a91815260200190565b60405180910390a4506104d760015f805160206110fa83398151915255565b610941610bea565b610949610cf0565b565b610953610bea565b6109495f610d45565b60015433906001600160a01b031681146109995760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6107ac81610d45565b6109aa610bea565b610949610d5e565b6109ba610c16565b6109c2610c31565b5f8181526002602052604090205433906001600160a01b0316156109f9576040516316e9ad8f60e01b815260040160405180910390fd5b806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e846040518263ffffffff1660e01b8152600401610a5191815260200190565b602060405180830381865afa158015610a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a90919061106d565b6001600160a01b031614610ab7576040516359dc379f60e01b815260040160405180910390fd5b610ac18183610c5c565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610b1190849030908790600401611088565b5f604051808303815f87803b158015610b28575f80fd5b505af1158015610b3a573d5f803e3d5ffd5b5050505081816001600160a01b03167f6173e4d2d9dd52aae0ed37afed3adcf924a490639b759ca93d32dc43366c17d24260405161078d91815260200190565b610b82610bea565b600180546001600160a01b0383166001600160a01b03199091168117909155610bb25f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f546001600160a01b031633146109495760405163118cdaa760e01b8152336004820152602401610990565b610c1e610da1565b60025f805160206110fa83398151915255565b600154600160a01b900460ff16156109495760405163d93c066560e01b815260040160405180910390fd5b5f81815260026020908152604080832080546001600160a01b039096166001600160a01b0319909616861790556003825280832042905593825260048082528483208054858552600584529584208690559082526001850181558252902090910155565b5f81815260026020908152604080832080546001600160a01b031916905560039091528120556104d78282610dd0565b610cf8610e9e565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600180546001600160a01b03191690556107ac81610ec8565b610d66610c31565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d283390565b5f805160206110fa8339815191525460020361094957604051633ee5aeb560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526004602090815260408083208484526005909252822054815491929091610e07906001906110ac565b9050808214610e60575f838281548110610e2357610e236110d1565b905f5260205f200154905080848481548110610e4157610e416110d1565b5f91825260208083209091019290925591825260059052604090208290555b82805480610e7057610e706110e5565b600190038181905f5260205f20015f9055905560055f8581526020019081526020015f205f90555050505050565b600154600160a01b900460ff1661094957604051638dfc202b60e01b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146107ac575f80fd5b5f8060408385031215610f3c575f80fd5b823591506020830135610f4e81610f17565b809150509250929050565b5f805f805f60808688031215610f6d575f80fd5b8535610f7881610f17565b94506020860135610f8881610f17565b935060408601359250606086013567ffffffffffffffff811115610faa575f80fd5b8601601f81018813610fba575f80fd5b803567ffffffffffffffff811115610fd0575f80fd5b886020828401011115610fe1575f80fd5b959894975092955050506020019190565b5f60208284031215611002575f80fd5b5035919050565b5f60208284031215611019575f80fd5b813561102481610f17565b9392505050565b602080825282518282018190525f918401906040840190835b81811015611062578351835260209384019390920191600101611044565b509095945050505050565b5f6020828403121561107d575f80fd5b815161102481610f17565b6001600160a01b039384168152919092166020820152604081019190915260600190565b818103818111156110cb57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220f8e5afe3df2897c05bd05e17e152d07acba805eed0e132300174b368b573437b64736f6c634300081a0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1326 CODESIZE SUB DUP1 PUSH2 0x1326 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x15D JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5C JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x65 DUP2 PUSH2 0xD7 JUMP JUMPDEST POP PUSH1 0x1 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO DUP1 PUSH2 0xA7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0xC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0xF0 DUP2 PUSH2 0xF3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x158 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x16E JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x177 DUP4 PUSH2 0x142 JUMP JUMPDEST SWAP2 POP PUSH2 0x185 PUSH1 0x20 DUP5 ADD PUSH2 0x142 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x114F PUSH2 0x1D7 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x29E ADD MSTORE DUP2 DUP2 PUSH2 0x370 ADD MSTORE DUP2 DUP2 PUSH2 0x417 ADD MSTORE DUP2 DUP2 PUSH2 0x4F7 ADD MSTORE DUP2 DUP2 PUSH2 0x6F7 ADD MSTORE DUP2 DUP2 PUSH2 0x86E ADD MSTORE DUP2 DUP2 PUSH2 0xA05 ADD MSTORE PUSH2 0xAD8 ADD MSTORE PUSH2 0x114F PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x111 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x9E JUMPI DUP1 PUSH4 0xA694FC3A GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xA694FC3A EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xBAA51F86 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xD56D229D EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2D1 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x24C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2B4BC300 GT PUSH2 0xE4 JUMPI DUP1 PUSH4 0x2B4BC300 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x2E17DE78 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x216 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xFA6F642 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0x1B3253B0 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0x1DCAC94D EQ PUSH2 0x188 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0xF59 JUMP JUMPDEST PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17A PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x1B0 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1009 JUMP JUMPDEST PUSH2 0x607 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x152 SWAP2 SWAP1 PUSH2 0x102B JUMP JUMPDEST PUSH2 0x128 PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x670 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x7AF JUMP JUMPDEST PUSH2 0x128 PUSH2 0x939 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x94B JUMP JUMPDEST PUSH2 0x128 PUSH2 0x95C JUMP JUMPDEST PUSH2 0x128 PUSH2 0x9A2 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x9B2 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x27D CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1B0 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x1009 JUMP JUMPDEST PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x2EC PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0xC16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x31B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x350 JUMPI PUSH1 0x40 MLOAD PUSH4 0x82D272E3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D9 SWAP2 SWAP1 PUSH2 0x106D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x400 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6BCD2437 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x450 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x467 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x479 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC27A1277308B3908A0FB998812A60B1DA8911B8583F20BF8F98E5246DB8C47EF TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x4B9 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x4D7 PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4E4 PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x4EC PUSH2 0xC31 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x535 JUMPI PUSH1 0x40 MLOAD PUSH4 0xDE1DB395 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x55C JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x591 JUMPI PUSH1 0x40 MLOAD PUSH4 0x16E9AD8F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x59B DUP6 DUP6 PUSH2 0xC5C JUMP JUMPDEST DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6173E4D2D9DD52AAE0ED37AFED3ADCF924A490639B759CA93D32DC43366C17D2 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x5D7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x5FE PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x650 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x678 PUSH2 0xC16 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH4 0xA49BBC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x6D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32DC95CB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6E0 DUP2 DUP4 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x730 SWAP1 ADDRESS SWAP1 CALLER SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x747 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x759 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD TIMESTAMP DUP2 MSTORE DUP5 SWAP3 POP CALLER SWAP2 POP PUSH32 0x563FC70FCA9D440D883299C76A721644D5ACA7C45DF98AEB5292C4CB823579BF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x7AC PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x7B7 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x7BF PUSH2 0xC16 JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x7F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA49BBC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x81B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x84D JUMPI PUSH1 0x40 MLOAD PUSH4 0xC56A3905 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x857 DUP2 DUP5 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x8A7 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8D0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF4408F2B7CB3BB2B43DDB3715579EAE68A12AF5F2E6D938537DB2BE5E72F5F7D TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x91A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH2 0x4D7 PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH2 0x941 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH2 0xCF0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x953 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH0 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x1 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 EQ PUSH2 0x999 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7AC DUP2 PUSH2 0xD45 JUMP JUMPDEST PUSH2 0x9AA PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x9BA PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x9C2 PUSH2 0xC31 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x16E9AD8F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6352211E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA51 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA6C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA90 SWAP2 SWAP1 PUSH2 0x106D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x59DC379F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAC1 DUP2 DUP4 PUSH2 0xC5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0xB11 SWAP1 DUP5 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB28 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6173E4D2D9DD52AAE0ED37AFED3ADCF924A490639B759CA93D32DC43366C17D2 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x78D SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xB82 PUSH2 0xBEA JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0xBB2 PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x990 JUMP JUMPDEST PUSH2 0xC1E PUSH2 0xDA1 JUMP JUMPDEST PUSH1 0x2 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP7 AND DUP7 OR SWAP1 SSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 TIMESTAMP SWAP1 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD DUP6 DUP6 MSTORE PUSH1 0x5 DUP5 MSTORE SWAP6 DUP5 KECCAK256 DUP7 SWAP1 SSTORE SWAP1 DUP3 MSTORE PUSH1 0x1 DUP6 ADD DUP2 SSTORE DUP3 MSTORE SWAP1 KECCAK256 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SSTORE PUSH2 0x4D7 DUP3 DUP3 PUSH2 0xDD0 JUMP JUMPDEST PUSH2 0xCF8 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x7AC DUP2 PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0xD66 PUSH2 0xC31 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0xD28 CALLER SWAP1 JUMP JUMPDEST PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x2 SUB PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD DUP2 SLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH2 0xE07 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x10AC JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0xE60 JUMPI PUSH0 DUP4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE23 JUMPI PUSH2 0xE23 PUSH2 0x10D1 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xE41 JUMPI PUSH2 0xE41 PUSH2 0x10D1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST DUP3 DUP1 SLOAD DUP1 PUSH2 0xE70 JUMPI PUSH2 0xE70 PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x5 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7AC JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF3C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xF4E DUP2 PUSH2 0xF17 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xF6D JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xF78 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xF88 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFAA JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x1F DUP2 ADD DUP9 SGT PUSH2 0xFBA JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFD0 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xFE1 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 POP POP POP PUSH1 0x20 ADD SWAP2 SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1002 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1019 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1024 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1062 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1044 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x107D JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1024 DUP2 PUSH2 0xF17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x10CB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID SWAP12 PUSH24 0x9B17422D0DF92223018B32B4D1FA46E071723D6817E2486D STOP EXTCODESIZE 0xEC 0xC5 PUSH0 STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0xE5 0xAF 0xE3 0xDF 0x28 SWAP8 0xC0 JUMPDEST 0xD0 MCOPY OR 0xE1 MSTORE 0xD0 PUSH27 0xCBA805EED0E132300174B368B573437B64736F6C634300081A0033 ","sourceMap":"1462:12831:30:-:0;;;5705:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5770:13;-1:-1:-1;;;;;1273:26:2;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:2;;1350:1;1322:31;;;640:51:32;613:18;;1322:31:2;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;2365:1:21;1505:66;2539;-1:-1:-1;;;;;5799:26:30;::::1;::::0;;:57:::1;;-1:-1:-1::0;;;;;;5829:27:30;::::1;::::0;5799:57:::1;5795:83;;;5865:13;;-1:-1:-1::0;;;5865:13:30::1;;;;;;;;;;;5795:83;-1:-1:-1::0;;;;;;5888:35:30::1;;::::0;1462:12831;;2011:153:3;2100:13;2093:20;;-1:-1:-1;;;;;;2093:20:3;;;2123:34;2148:8;2123:24;:34::i;:::-;2011:153;:::o;2912:187:2:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:2;;;-1:-1:-1;;;;;;3020:17:2;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:177:32:-;93:13;;-1:-1:-1;;;;;135:31:32;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:203::-;1462:12831:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_checkOwner_463":{"entryPoint":3050,"id":463,"parameterSlots":0,"returnSlots":0},"@_clearStake_10771":{"entryPoint":3264,"id":10771,"parameterSlots":2,"returnSlots":0},"@_msgSender_4307":{"entryPoint":null,"id":4307,"parameterSlots":0,"returnSlots":1},"@_nonReentrantAfter_4574":{"entryPoint":null,"id":4574,"parameterSlots":0,"returnSlots":0},"@_nonReentrantBeforeView_4547":{"entryPoint":3489,"id":4547,"parameterSlots":0,"returnSlots":0},"@_nonReentrantBefore_4562":{"entryPoint":3094,"id":4562,"parameterSlots":0,"returnSlots":0},"@_pause_4468":{"entryPoint":3422,"id":4468,"parameterSlots":0,"returnSlots":0},"@_recordStake_10747":{"entryPoint":3164,"id":10747,"parameterSlots":2,"returnSlots":0},"@_reentrancyGuardEntered_4589":{"entryPoint":null,"id":4589,"parameterSlots":0,"returnSlots":1},"@_reentrancyGuardStorageSlot_4597":{"entryPoint":null,"id":4597,"parameterSlots":0,"returnSlots":1},"@_removeFromWallet_10835":{"entryPoint":3536,"id":10835,"parameterSlots":2,"returnSlots":0},"@_requireNotPaused_4439":{"entryPoint":3121,"id":4439,"parameterSlots":0,"returnSlots":0},"@_requirePaused_4452":{"entryPoint":3742,"id":4452,"parameterSlots":0,"returnSlots":0},"@_transferOwnership_525":{"entryPoint":3784,"id":525,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_587":{"entryPoint":3397,"id":587,"parameterSlots":1,"returnSlots":0},"@_unpause_4484":{"entryPoint":3312,"id":4484,"parameterSlots":0,"returnSlots":0},"@acceptOwnership_611":{"entryPoint":2396,"id":611,"parameterSlots":0,"returnSlots":0},"@emergencyWithdraw_10565":{"entryPoint":1967,"id":10565,"parameterSlots":2,"returnSlots":0},"@getUint256Slot_4666":{"entryPoint":null,"id":4666,"parameterSlots":1,"returnSlots":1},"@getWalletStakedTokens_10709":{"entryPoint":1543,"id":10709,"parameterSlots":1,"returnSlots":1},"@isStaked_10669":{"entryPoint":null,"id":10669,"parameterSlots":1,"returnSlots":1},"@nftContract_10252":{"entryPoint":null,"id":10252,"parameterSlots":0,"returnSlots":0},"@onERC721Received_10437":{"entryPoint":1243,"id":10437,"parameterSlots":5,"returnSlots":1},"@owner_446":{"entryPoint":null,"id":446,"parameterSlots":0,"returnSlots":1},"@pause_10641":{"entryPoint":2466,"id":10641,"parameterSlots":0,"returnSlots":0},"@paused_4427":{"entryPoint":null,"id":4427,"parameterSlots":0,"returnSlots":1},"@pendingOwner_550":{"entryPoint":null,"id":550,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_477":{"entryPoint":2379,"id":477,"parameterSlots":0,"returnSlots":0},"@rescueUntrackedToken_10631":{"entryPoint":740,"id":10631,"parameterSlots":2,"returnSlots":0},"@stake_10369":{"entryPoint":2482,"id":10369,"parameterSlots":1,"returnSlots":0},"@stakedAtOf_10695":{"entryPoint":null,"id":10695,"parameterSlots":1,"returnSlots":1},"@stakedOwnerOf_10682":{"entryPoint":null,"id":10682,"parameterSlots":1,"returnSlots":1},"@transferOwnership_570":{"entryPoint":2938,"id":570,"parameterSlots":1,"returnSlots":0},"@unpause_10651":{"entryPoint":2361,"id":10651,"parameterSlots":0,"returnSlots":0},"@unstake_10495":{"entryPoint":1648,"id":10495,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":4105,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4205,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr":{"entryPoint":3929,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint256":{"entryPoint":4082,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":3883,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":4232,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":4139,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IERC721_$2686__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":4268,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x31":{"entryPoint":4325,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4305,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3863,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:4745:32","nodeType":"YulBlock","src":"0:4745:32","statements":[{"nativeSrc":"6:3:32","nodeType":"YulBlock","src":"6:3:32","statements":[]},{"body":{"nativeSrc":"59:86:32","nodeType":"YulBlock","src":"59:86:32","statements":[{"body":{"nativeSrc":"123:16:32","nodeType":"YulBlock","src":"123:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:32","nodeType":"YulLiteral","src":"132:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:32","nodeType":"YulLiteral","src":"135:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:32","nodeType":"YulIdentifier","src":"125:6:32"},"nativeSrc":"125:12:32","nodeType":"YulFunctionCall","src":"125:12:32"},"nativeSrc":"125:12:32","nodeType":"YulExpressionStatement","src":"125:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"82:5:32","nodeType":"YulIdentifier","src":"82:5:32"},{"arguments":[{"name":"value","nativeSrc":"93:5:32","nodeType":"YulIdentifier","src":"93:5:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"108:3:32","nodeType":"YulLiteral","src":"108:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"113:1:32","nodeType":"YulLiteral","src":"113:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"104:3:32","nodeType":"YulIdentifier","src":"104:3:32"},"nativeSrc":"104:11:32","nodeType":"YulFunctionCall","src":"104:11:32"},{"kind":"number","nativeSrc":"117:1:32","nodeType":"YulLiteral","src":"117:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"100:3:32","nodeType":"YulIdentifier","src":"100:3:32"},"nativeSrc":"100:19:32","nodeType":"YulFunctionCall","src":"100:19:32"}],"functionName":{"name":"and","nativeSrc":"89:3:32","nodeType":"YulIdentifier","src":"89:3:32"},"nativeSrc":"89:31:32","nodeType":"YulFunctionCall","src":"89:31:32"}],"functionName":{"name":"eq","nativeSrc":"79:2:32","nodeType":"YulIdentifier","src":"79:2:32"},"nativeSrc":"79:42:32","nodeType":"YulFunctionCall","src":"79:42:32"}],"functionName":{"name":"iszero","nativeSrc":"72:6:32","nodeType":"YulIdentifier","src":"72:6:32"},"nativeSrc":"72:50:32","nodeType":"YulFunctionCall","src":"72:50:32"},"nativeSrc":"69:70:32","nodeType":"YulIf","src":"69:70:32"}]},"name":"validator_revert_address","nativeSrc":"14:131:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"48:5:32","nodeType":"YulTypedName","src":"48:5:32","type":""}],"src":"14:131:32"},{"body":{"nativeSrc":"237:280:32","nodeType":"YulBlock","src":"237:280:32","statements":[{"body":{"nativeSrc":"283:16:32","nodeType":"YulBlock","src":"283:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"292:1:32","nodeType":"YulLiteral","src":"292:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"295:1:32","nodeType":"YulLiteral","src":"295:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"285:6:32","nodeType":"YulIdentifier","src":"285:6:32"},"nativeSrc":"285:12:32","nodeType":"YulFunctionCall","src":"285:12:32"},"nativeSrc":"285:12:32","nodeType":"YulExpressionStatement","src":"285:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"258:7:32","nodeType":"YulIdentifier","src":"258:7:32"},{"name":"headStart","nativeSrc":"267:9:32","nodeType":"YulIdentifier","src":"267:9:32"}],"functionName":{"name":"sub","nativeSrc":"254:3:32","nodeType":"YulIdentifier","src":"254:3:32"},"nativeSrc":"254:23:32","nodeType":"YulFunctionCall","src":"254:23:32"},{"kind":"number","nativeSrc":"279:2:32","nodeType":"YulLiteral","src":"279:2:32","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"250:3:32","nodeType":"YulIdentifier","src":"250:3:32"},"nativeSrc":"250:32:32","nodeType":"YulFunctionCall","src":"250:32:32"},"nativeSrc":"247:52:32","nodeType":"YulIf","src":"247:52:32"},{"nativeSrc":"308:14:32","nodeType":"YulVariableDeclaration","src":"308:14:32","value":{"kind":"number","nativeSrc":"321:1:32","nodeType":"YulLiteral","src":"321:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"312:5:32","nodeType":"YulTypedName","src":"312:5:32","type":""}]},{"nativeSrc":"331:32:32","nodeType":"YulAssignment","src":"331:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"353:9:32","nodeType":"YulIdentifier","src":"353:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"340:12:32","nodeType":"YulIdentifier","src":"340:12:32"},"nativeSrc":"340:23:32","nodeType":"YulFunctionCall","src":"340:23:32"},"variableNames":[{"name":"value","nativeSrc":"331:5:32","nodeType":"YulIdentifier","src":"331:5:32"}]},{"nativeSrc":"372:15:32","nodeType":"YulAssignment","src":"372:15:32","value":{"name":"value","nativeSrc":"382:5:32","nodeType":"YulIdentifier","src":"382:5:32"},"variableNames":[{"name":"value0","nativeSrc":"372:6:32","nodeType":"YulIdentifier","src":"372:6:32"}]},{"nativeSrc":"396:47:32","nodeType":"YulVariableDeclaration","src":"396:47:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"428:9:32","nodeType":"YulIdentifier","src":"428:9:32"},{"kind":"number","nativeSrc":"439:2:32","nodeType":"YulLiteral","src":"439:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"424:3:32","nodeType":"YulIdentifier","src":"424:3:32"},"nativeSrc":"424:18:32","nodeType":"YulFunctionCall","src":"424:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"411:12:32","nodeType":"YulIdentifier","src":"411:12:32"},"nativeSrc":"411:32:32","nodeType":"YulFunctionCall","src":"411:32:32"},"variables":[{"name":"value_1","nativeSrc":"400:7:32","nodeType":"YulTypedName","src":"400:7:32","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"477:7:32","nodeType":"YulIdentifier","src":"477:7:32"}],"functionName":{"name":"validator_revert_address","nativeSrc":"452:24:32","nodeType":"YulIdentifier","src":"452:24:32"},"nativeSrc":"452:33:32","nodeType":"YulFunctionCall","src":"452:33:32"},"nativeSrc":"452:33:32","nodeType":"YulExpressionStatement","src":"452:33:32"},{"nativeSrc":"494:17:32","nodeType":"YulAssignment","src":"494:17:32","value":{"name":"value_1","nativeSrc":"504:7:32","nodeType":"YulIdentifier","src":"504:7:32"},"variableNames":[{"name":"value1","nativeSrc":"494:6:32","nodeType":"YulIdentifier","src":"494:6:32"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"150:367:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"195:9:32","nodeType":"YulTypedName","src":"195:9:32","type":""},{"name":"dataEnd","nativeSrc":"206:7:32","nodeType":"YulTypedName","src":"206:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"218:6:32","nodeType":"YulTypedName","src":"218:6:32","type":""},{"name":"value1","nativeSrc":"226:6:32","nodeType":"YulTypedName","src":"226:6:32","type":""}],"src":"150:367:32"},{"body":{"nativeSrc":"662:843:32","nodeType":"YulBlock","src":"662:843:32","statements":[{"body":{"nativeSrc":"709:16:32","nodeType":"YulBlock","src":"709:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"718:1:32","nodeType":"YulLiteral","src":"718:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"721:1:32","nodeType":"YulLiteral","src":"721:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"711:6:32","nodeType":"YulIdentifier","src":"711:6:32"},"nativeSrc":"711:12:32","nodeType":"YulFunctionCall","src":"711:12:32"},"nativeSrc":"711:12:32","nodeType":"YulExpressionStatement","src":"711:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"683:7:32","nodeType":"YulIdentifier","src":"683:7:32"},{"name":"headStart","nativeSrc":"692:9:32","nodeType":"YulIdentifier","src":"692:9:32"}],"functionName":{"name":"sub","nativeSrc":"679:3:32","nodeType":"YulIdentifier","src":"679:3:32"},"nativeSrc":"679:23:32","nodeType":"YulFunctionCall","src":"679:23:32"},{"kind":"number","nativeSrc":"704:3:32","nodeType":"YulLiteral","src":"704:3:32","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"675:3:32","nodeType":"YulIdentifier","src":"675:3:32"},"nativeSrc":"675:33:32","nodeType":"YulFunctionCall","src":"675:33:32"},"nativeSrc":"672:53:32","nodeType":"YulIf","src":"672:53:32"},{"nativeSrc":"734:36:32","nodeType":"YulVariableDeclaration","src":"734:36:32","value":{"arguments":[{"name":"headStart","nativeSrc":"760:9:32","nodeType":"YulIdentifier","src":"760:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"747:12:32","nodeType":"YulIdentifier","src":"747:12:32"},"nativeSrc":"747:23:32","nodeType":"YulFunctionCall","src":"747:23:32"},"variables":[{"name":"value","nativeSrc":"738:5:32","nodeType":"YulTypedName","src":"738:5:32","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"804:5:32","nodeType":"YulIdentifier","src":"804:5:32"}],"functionName":{"name":"validator_revert_address","nativeSrc":"779:24:32","nodeType":"YulIdentifier","src":"779:24:32"},"nativeSrc":"779:31:32","nodeType":"YulFunctionCall","src":"779:31:32"},"nativeSrc":"779:31:32","nodeType":"YulExpressionStatement","src":"779:31:32"},{"nativeSrc":"819:15:32","nodeType":"YulAssignment","src":"819:15:32","value":{"name":"value","nativeSrc":"829:5:32","nodeType":"YulIdentifier","src":"829:5:32"},"variableNames":[{"name":"value0","nativeSrc":"819:6:32","nodeType":"YulIdentifier","src":"819:6:32"}]},{"nativeSrc":"843:47:32","nodeType":"YulVariableDeclaration","src":"843:47:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"875:9:32","nodeType":"YulIdentifier","src":"875:9:32"},{"kind":"number","nativeSrc":"886:2:32","nodeType":"YulLiteral","src":"886:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"871:3:32","nodeType":"YulIdentifier","src":"871:3:32"},"nativeSrc":"871:18:32","nodeType":"YulFunctionCall","src":"871:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"858:12:32","nodeType":"YulIdentifier","src":"858:12:32"},"nativeSrc":"858:32:32","nodeType":"YulFunctionCall","src":"858:32:32"},"variables":[{"name":"value_1","nativeSrc":"847:7:32","nodeType":"YulTypedName","src":"847:7:32","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"924:7:32","nodeType":"YulIdentifier","src":"924:7:32"}],"functionName":{"name":"validator_revert_address","nativeSrc":"899:24:32","nodeType":"YulIdentifier","src":"899:24:32"},"nativeSrc":"899:33:32","nodeType":"YulFunctionCall","src":"899:33:32"},"nativeSrc":"899:33:32","nodeType":"YulExpressionStatement","src":"899:33:32"},{"nativeSrc":"941:17:32","nodeType":"YulAssignment","src":"941:17:32","value":{"name":"value_1","nativeSrc":"951:7:32","nodeType":"YulIdentifier","src":"951:7:32"},"variableNames":[{"name":"value1","nativeSrc":"941:6:32","nodeType":"YulIdentifier","src":"941:6:32"}]},{"nativeSrc":"967:16:32","nodeType":"YulVariableDeclaration","src":"967:16:32","value":{"kind":"number","nativeSrc":"982:1:32","nodeType":"YulLiteral","src":"982:1:32","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"971:7:32","nodeType":"YulTypedName","src":"971:7:32","type":""}]},{"nativeSrc":"992:43:32","nodeType":"YulAssignment","src":"992:43:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1020:9:32","nodeType":"YulIdentifier","src":"1020:9:32"},{"kind":"number","nativeSrc":"1031:2:32","nodeType":"YulLiteral","src":"1031:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1016:3:32","nodeType":"YulIdentifier","src":"1016:3:32"},"nativeSrc":"1016:18:32","nodeType":"YulFunctionCall","src":"1016:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"1003:12:32","nodeType":"YulIdentifier","src":"1003:12:32"},"nativeSrc":"1003:32:32","nodeType":"YulFunctionCall","src":"1003:32:32"},"variableNames":[{"name":"value_2","nativeSrc":"992:7:32","nodeType":"YulIdentifier","src":"992:7:32"}]},{"nativeSrc":"1044:17:32","nodeType":"YulAssignment","src":"1044:17:32","value":{"name":"value_2","nativeSrc":"1054:7:32","nodeType":"YulIdentifier","src":"1054:7:32"},"variableNames":[{"name":"value2","nativeSrc":"1044:6:32","nodeType":"YulIdentifier","src":"1044:6:32"}]},{"nativeSrc":"1070:46:32","nodeType":"YulVariableDeclaration","src":"1070:46:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1101:9:32","nodeType":"YulIdentifier","src":"1101:9:32"},{"kind":"number","nativeSrc":"1112:2:32","nodeType":"YulLiteral","src":"1112:2:32","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1097:3:32","nodeType":"YulIdentifier","src":"1097:3:32"},"nativeSrc":"1097:18:32","nodeType":"YulFunctionCall","src":"1097:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"1084:12:32","nodeType":"YulIdentifier","src":"1084:12:32"},"nativeSrc":"1084:32:32","nodeType":"YulFunctionCall","src":"1084:32:32"},"variables":[{"name":"offset","nativeSrc":"1074:6:32","nodeType":"YulTypedName","src":"1074:6:32","type":""}]},{"body":{"nativeSrc":"1159:16:32","nodeType":"YulBlock","src":"1159:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1168:1:32","nodeType":"YulLiteral","src":"1168:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1171:1:32","nodeType":"YulLiteral","src":"1171:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1161:6:32","nodeType":"YulIdentifier","src":"1161:6:32"},"nativeSrc":"1161:12:32","nodeType":"YulFunctionCall","src":"1161:12:32"},"nativeSrc":"1161:12:32","nodeType":"YulExpressionStatement","src":"1161:12:32"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1131:6:32","nodeType":"YulIdentifier","src":"1131:6:32"},{"kind":"number","nativeSrc":"1139:18:32","nodeType":"YulLiteral","src":"1139:18:32","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1128:2:32","nodeType":"YulIdentifier","src":"1128:2:32"},"nativeSrc":"1128:30:32","nodeType":"YulFunctionCall","src":"1128:30:32"},"nativeSrc":"1125:50:32","nodeType":"YulIf","src":"1125:50:32"},{"nativeSrc":"1184:32:32","nodeType":"YulVariableDeclaration","src":"1184:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"1198:9:32","nodeType":"YulIdentifier","src":"1198:9:32"},{"name":"offset","nativeSrc":"1209:6:32","nodeType":"YulIdentifier","src":"1209:6:32"}],"functionName":{"name":"add","nativeSrc":"1194:3:32","nodeType":"YulIdentifier","src":"1194:3:32"},"nativeSrc":"1194:22:32","nodeType":"YulFunctionCall","src":"1194:22:32"},"variables":[{"name":"_1","nativeSrc":"1188:2:32","nodeType":"YulTypedName","src":"1188:2:32","type":""}]},{"body":{"nativeSrc":"1264:16:32","nodeType":"YulBlock","src":"1264:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1273:1:32","nodeType":"YulLiteral","src":"1273:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1276:1:32","nodeType":"YulLiteral","src":"1276:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1266:6:32","nodeType":"YulIdentifier","src":"1266:6:32"},"nativeSrc":"1266:12:32","nodeType":"YulFunctionCall","src":"1266:12:32"},"nativeSrc":"1266:12:32","nodeType":"YulExpressionStatement","src":"1266:12:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1243:2:32","nodeType":"YulIdentifier","src":"1243:2:32"},{"kind":"number","nativeSrc":"1247:4:32","nodeType":"YulLiteral","src":"1247:4:32","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1239:3:32","nodeType":"YulIdentifier","src":"1239:3:32"},"nativeSrc":"1239:13:32","nodeType":"YulFunctionCall","src":"1239:13:32"},{"name":"dataEnd","nativeSrc":"1254:7:32","nodeType":"YulIdentifier","src":"1254:7:32"}],"functionName":{"name":"slt","nativeSrc":"1235:3:32","nodeType":"YulIdentifier","src":"1235:3:32"},"nativeSrc":"1235:27:32","nodeType":"YulFunctionCall","src":"1235:27:32"}],"functionName":{"name":"iszero","nativeSrc":"1228:6:32","nodeType":"YulIdentifier","src":"1228:6:32"},"nativeSrc":"1228:35:32","nodeType":"YulFunctionCall","src":"1228:35:32"},"nativeSrc":"1225:55:32","nodeType":"YulIf","src":"1225:55:32"},{"nativeSrc":"1289:30:32","nodeType":"YulVariableDeclaration","src":"1289:30:32","value":{"arguments":[{"name":"_1","nativeSrc":"1316:2:32","nodeType":"YulIdentifier","src":"1316:2:32"}],"functionName":{"name":"calldataload","nativeSrc":"1303:12:32","nodeType":"YulIdentifier","src":"1303:12:32"},"nativeSrc":"1303:16:32","nodeType":"YulFunctionCall","src":"1303:16:32"},"variables":[{"name":"length","nativeSrc":"1293:6:32","nodeType":"YulTypedName","src":"1293:6:32","type":""}]},{"body":{"nativeSrc":"1362:16:32","nodeType":"YulBlock","src":"1362:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1371:1:32","nodeType":"YulLiteral","src":"1371:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1374:1:32","nodeType":"YulLiteral","src":"1374:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1364:6:32","nodeType":"YulIdentifier","src":"1364:6:32"},"nativeSrc":"1364:12:32","nodeType":"YulFunctionCall","src":"1364:12:32"},"nativeSrc":"1364:12:32","nodeType":"YulExpressionStatement","src":"1364:12:32"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1334:6:32","nodeType":"YulIdentifier","src":"1334:6:32"},{"kind":"number","nativeSrc":"1342:18:32","nodeType":"YulLiteral","src":"1342:18:32","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1331:2:32","nodeType":"YulIdentifier","src":"1331:2:32"},"nativeSrc":"1331:30:32","nodeType":"YulFunctionCall","src":"1331:30:32"},"nativeSrc":"1328:50:32","nodeType":"YulIf","src":"1328:50:32"},{"body":{"nativeSrc":"1428:16:32","nodeType":"YulBlock","src":"1428:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1437:1:32","nodeType":"YulLiteral","src":"1437:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1440:1:32","nodeType":"YulLiteral","src":"1440:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1430:6:32","nodeType":"YulIdentifier","src":"1430:6:32"},"nativeSrc":"1430:12:32","nodeType":"YulFunctionCall","src":"1430:12:32"},"nativeSrc":"1430:12:32","nodeType":"YulExpressionStatement","src":"1430:12:32"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1401:2:32","nodeType":"YulIdentifier","src":"1401:2:32"},{"name":"length","nativeSrc":"1405:6:32","nodeType":"YulIdentifier","src":"1405:6:32"}],"functionName":{"name":"add","nativeSrc":"1397:3:32","nodeType":"YulIdentifier","src":"1397:3:32"},"nativeSrc":"1397:15:32","nodeType":"YulFunctionCall","src":"1397:15:32"},{"kind":"number","nativeSrc":"1414:2:32","nodeType":"YulLiteral","src":"1414:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1393:3:32","nodeType":"YulIdentifier","src":"1393:3:32"},"nativeSrc":"1393:24:32","nodeType":"YulFunctionCall","src":"1393:24:32"},{"name":"dataEnd","nativeSrc":"1419:7:32","nodeType":"YulIdentifier","src":"1419:7:32"}],"functionName":{"name":"gt","nativeSrc":"1390:2:32","nodeType":"YulIdentifier","src":"1390:2:32"},"nativeSrc":"1390:37:32","nodeType":"YulFunctionCall","src":"1390:37:32"},"nativeSrc":"1387:57:32","nodeType":"YulIf","src":"1387:57:32"},{"nativeSrc":"1453:21:32","nodeType":"YulAssignment","src":"1453:21:32","value":{"arguments":[{"name":"_1","nativeSrc":"1467:2:32","nodeType":"YulIdentifier","src":"1467:2:32"},{"kind":"number","nativeSrc":"1471:2:32","nodeType":"YulLiteral","src":"1471:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1463:3:32","nodeType":"YulIdentifier","src":"1463:3:32"},"nativeSrc":"1463:11:32","nodeType":"YulFunctionCall","src":"1463:11:32"},"variableNames":[{"name":"value3","nativeSrc":"1453:6:32","nodeType":"YulIdentifier","src":"1453:6:32"}]},{"nativeSrc":"1483:16:32","nodeType":"YulAssignment","src":"1483:16:32","value":{"name":"length","nativeSrc":"1493:6:32","nodeType":"YulIdentifier","src":"1493:6:32"},"variableNames":[{"name":"value4","nativeSrc":"1483:6:32","nodeType":"YulIdentifier","src":"1483:6:32"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr","nativeSrc":"522:983:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"596:9:32","nodeType":"YulTypedName","src":"596:9:32","type":""},{"name":"dataEnd","nativeSrc":"607:7:32","nodeType":"YulTypedName","src":"607:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"619:6:32","nodeType":"YulTypedName","src":"619:6:32","type":""},{"name":"value1","nativeSrc":"627:6:32","nodeType":"YulTypedName","src":"627:6:32","type":""},{"name":"value2","nativeSrc":"635:6:32","nodeType":"YulTypedName","src":"635:6:32","type":""},{"name":"value3","nativeSrc":"643:6:32","nodeType":"YulTypedName","src":"643:6:32","type":""},{"name":"value4","nativeSrc":"651:6:32","nodeType":"YulTypedName","src":"651:6:32","type":""}],"src":"522:983:32"},{"body":{"nativeSrc":"1609:103:32","nodeType":"YulBlock","src":"1609:103:32","statements":[{"nativeSrc":"1619:26:32","nodeType":"YulAssignment","src":"1619:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"1631:9:32","nodeType":"YulIdentifier","src":"1631:9:32"},{"kind":"number","nativeSrc":"1642:2:32","nodeType":"YulLiteral","src":"1642:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1627:3:32","nodeType":"YulIdentifier","src":"1627:3:32"},"nativeSrc":"1627:18:32","nodeType":"YulFunctionCall","src":"1627:18:32"},"variableNames":[{"name":"tail","nativeSrc":"1619:4:32","nodeType":"YulIdentifier","src":"1619:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1661:9:32","nodeType":"YulIdentifier","src":"1661:9:32"},{"arguments":[{"name":"value0","nativeSrc":"1676:6:32","nodeType":"YulIdentifier","src":"1676:6:32"},{"arguments":[{"kind":"number","nativeSrc":"1688:3:32","nodeType":"YulLiteral","src":"1688:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"1693:10:32","nodeType":"YulLiteral","src":"1693:10:32","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"1684:3:32","nodeType":"YulIdentifier","src":"1684:3:32"},"nativeSrc":"1684:20:32","nodeType":"YulFunctionCall","src":"1684:20:32"}],"functionName":{"name":"and","nativeSrc":"1672:3:32","nodeType":"YulIdentifier","src":"1672:3:32"},"nativeSrc":"1672:33:32","nodeType":"YulFunctionCall","src":"1672:33:32"}],"functionName":{"name":"mstore","nativeSrc":"1654:6:32","nodeType":"YulIdentifier","src":"1654:6:32"},"nativeSrc":"1654:52:32","nodeType":"YulFunctionCall","src":"1654:52:32"},"nativeSrc":"1654:52:32","nodeType":"YulExpressionStatement","src":"1654:52:32"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"1510:202:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1578:9:32","nodeType":"YulTypedName","src":"1578:9:32","type":""},{"name":"value0","nativeSrc":"1589:6:32","nodeType":"YulTypedName","src":"1589:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1600:4:32","nodeType":"YulTypedName","src":"1600:4:32","type":""}],"src":"1510:202:32"},{"body":{"nativeSrc":"1787:156:32","nodeType":"YulBlock","src":"1787:156:32","statements":[{"body":{"nativeSrc":"1833:16:32","nodeType":"YulBlock","src":"1833:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1842:1:32","nodeType":"YulLiteral","src":"1842:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1845:1:32","nodeType":"YulLiteral","src":"1845:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1835:6:32","nodeType":"YulIdentifier","src":"1835:6:32"},"nativeSrc":"1835:12:32","nodeType":"YulFunctionCall","src":"1835:12:32"},"nativeSrc":"1835:12:32","nodeType":"YulExpressionStatement","src":"1835:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1808:7:32","nodeType":"YulIdentifier","src":"1808:7:32"},{"name":"headStart","nativeSrc":"1817:9:32","nodeType":"YulIdentifier","src":"1817:9:32"}],"functionName":{"name":"sub","nativeSrc":"1804:3:32","nodeType":"YulIdentifier","src":"1804:3:32"},"nativeSrc":"1804:23:32","nodeType":"YulFunctionCall","src":"1804:23:32"},{"kind":"number","nativeSrc":"1829:2:32","nodeType":"YulLiteral","src":"1829:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1800:3:32","nodeType":"YulIdentifier","src":"1800:3:32"},"nativeSrc":"1800:32:32","nodeType":"YulFunctionCall","src":"1800:32:32"},"nativeSrc":"1797:52:32","nodeType":"YulIf","src":"1797:52:32"},{"nativeSrc":"1858:14:32","nodeType":"YulVariableDeclaration","src":"1858:14:32","value":{"kind":"number","nativeSrc":"1871:1:32","nodeType":"YulLiteral","src":"1871:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1862:5:32","nodeType":"YulTypedName","src":"1862:5:32","type":""}]},{"nativeSrc":"1881:32:32","nodeType":"YulAssignment","src":"1881:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"1903:9:32","nodeType":"YulIdentifier","src":"1903:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"1890:12:32","nodeType":"YulIdentifier","src":"1890:12:32"},"nativeSrc":"1890:23:32","nodeType":"YulFunctionCall","src":"1890:23:32"},"variableNames":[{"name":"value","nativeSrc":"1881:5:32","nodeType":"YulIdentifier","src":"1881:5:32"}]},{"nativeSrc":"1922:15:32","nodeType":"YulAssignment","src":"1922:15:32","value":{"name":"value","nativeSrc":"1932:5:32","nodeType":"YulIdentifier","src":"1932:5:32"},"variableNames":[{"name":"value0","nativeSrc":"1922:6:32","nodeType":"YulIdentifier","src":"1922:6:32"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1717:226:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1753:9:32","nodeType":"YulTypedName","src":"1753:9:32","type":""},{"name":"dataEnd","nativeSrc":"1764:7:32","nodeType":"YulTypedName","src":"1764:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1776:6:32","nodeType":"YulTypedName","src":"1776:6:32","type":""}],"src":"1717:226:32"},{"body":{"nativeSrc":"2049:76:32","nodeType":"YulBlock","src":"2049:76:32","statements":[{"nativeSrc":"2059:26:32","nodeType":"YulAssignment","src":"2059:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2071:9:32","nodeType":"YulIdentifier","src":"2071:9:32"},{"kind":"number","nativeSrc":"2082:2:32","nodeType":"YulLiteral","src":"2082:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2067:3:32","nodeType":"YulIdentifier","src":"2067:3:32"},"nativeSrc":"2067:18:32","nodeType":"YulFunctionCall","src":"2067:18:32"},"variableNames":[{"name":"tail","nativeSrc":"2059:4:32","nodeType":"YulIdentifier","src":"2059:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2101:9:32","nodeType":"YulIdentifier","src":"2101:9:32"},{"name":"value0","nativeSrc":"2112:6:32","nodeType":"YulIdentifier","src":"2112:6:32"}],"functionName":{"name":"mstore","nativeSrc":"2094:6:32","nodeType":"YulIdentifier","src":"2094:6:32"},"nativeSrc":"2094:25:32","nodeType":"YulFunctionCall","src":"2094:25:32"},"nativeSrc":"2094:25:32","nodeType":"YulExpressionStatement","src":"2094:25:32"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"1948:177:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2018:9:32","nodeType":"YulTypedName","src":"2018:9:32","type":""},{"name":"value0","nativeSrc":"2029:6:32","nodeType":"YulTypedName","src":"2029:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2040:4:32","nodeType":"YulTypedName","src":"2040:4:32","type":""}],"src":"1948:177:32"},{"body":{"nativeSrc":"2231:102:32","nodeType":"YulBlock","src":"2231:102:32","statements":[{"nativeSrc":"2241:26:32","nodeType":"YulAssignment","src":"2241:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2253:9:32","nodeType":"YulIdentifier","src":"2253:9:32"},{"kind":"number","nativeSrc":"2264:2:32","nodeType":"YulLiteral","src":"2264:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2249:3:32","nodeType":"YulIdentifier","src":"2249:3:32"},"nativeSrc":"2249:18:32","nodeType":"YulFunctionCall","src":"2249:18:32"},"variableNames":[{"name":"tail","nativeSrc":"2241:4:32","nodeType":"YulIdentifier","src":"2241:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2283:9:32","nodeType":"YulIdentifier","src":"2283:9:32"},{"arguments":[{"name":"value0","nativeSrc":"2298:6:32","nodeType":"YulIdentifier","src":"2298:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2314:3:32","nodeType":"YulLiteral","src":"2314:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"2319:1:32","nodeType":"YulLiteral","src":"2319:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2310:3:32","nodeType":"YulIdentifier","src":"2310:3:32"},"nativeSrc":"2310:11:32","nodeType":"YulFunctionCall","src":"2310:11:32"},{"kind":"number","nativeSrc":"2323:1:32","nodeType":"YulLiteral","src":"2323:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2306:3:32","nodeType":"YulIdentifier","src":"2306:3:32"},"nativeSrc":"2306:19:32","nodeType":"YulFunctionCall","src":"2306:19:32"}],"functionName":{"name":"and","nativeSrc":"2294:3:32","nodeType":"YulIdentifier","src":"2294:3:32"},"nativeSrc":"2294:32:32","nodeType":"YulFunctionCall","src":"2294:32:32"}],"functionName":{"name":"mstore","nativeSrc":"2276:6:32","nodeType":"YulIdentifier","src":"2276:6:32"},"nativeSrc":"2276:51:32","nodeType":"YulFunctionCall","src":"2276:51:32"},"nativeSrc":"2276:51:32","nodeType":"YulExpressionStatement","src":"2276:51:32"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2130:203:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2200:9:32","nodeType":"YulTypedName","src":"2200:9:32","type":""},{"name":"value0","nativeSrc":"2211:6:32","nodeType":"YulTypedName","src":"2211:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2222:4:32","nodeType":"YulTypedName","src":"2222:4:32","type":""}],"src":"2130:203:32"},{"body":{"nativeSrc":"2408:177:32","nodeType":"YulBlock","src":"2408:177:32","statements":[{"body":{"nativeSrc":"2454:16:32","nodeType":"YulBlock","src":"2454:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2463:1:32","nodeType":"YulLiteral","src":"2463:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"2466:1:32","nodeType":"YulLiteral","src":"2466:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2456:6:32","nodeType":"YulIdentifier","src":"2456:6:32"},"nativeSrc":"2456:12:32","nodeType":"YulFunctionCall","src":"2456:12:32"},"nativeSrc":"2456:12:32","nodeType":"YulExpressionStatement","src":"2456:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2429:7:32","nodeType":"YulIdentifier","src":"2429:7:32"},{"name":"headStart","nativeSrc":"2438:9:32","nodeType":"YulIdentifier","src":"2438:9:32"}],"functionName":{"name":"sub","nativeSrc":"2425:3:32","nodeType":"YulIdentifier","src":"2425:3:32"},"nativeSrc":"2425:23:32","nodeType":"YulFunctionCall","src":"2425:23:32"},{"kind":"number","nativeSrc":"2450:2:32","nodeType":"YulLiteral","src":"2450:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2421:3:32","nodeType":"YulIdentifier","src":"2421:3:32"},"nativeSrc":"2421:32:32","nodeType":"YulFunctionCall","src":"2421:32:32"},"nativeSrc":"2418:52:32","nodeType":"YulIf","src":"2418:52:32"},{"nativeSrc":"2479:36:32","nodeType":"YulVariableDeclaration","src":"2479:36:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2505:9:32","nodeType":"YulIdentifier","src":"2505:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"2492:12:32","nodeType":"YulIdentifier","src":"2492:12:32"},"nativeSrc":"2492:23:32","nodeType":"YulFunctionCall","src":"2492:23:32"},"variables":[{"name":"value","nativeSrc":"2483:5:32","nodeType":"YulTypedName","src":"2483:5:32","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2549:5:32","nodeType":"YulIdentifier","src":"2549:5:32"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2524:24:32","nodeType":"YulIdentifier","src":"2524:24:32"},"nativeSrc":"2524:31:32","nodeType":"YulFunctionCall","src":"2524:31:32"},"nativeSrc":"2524:31:32","nodeType":"YulExpressionStatement","src":"2524:31:32"},{"nativeSrc":"2564:15:32","nodeType":"YulAssignment","src":"2564:15:32","value":{"name":"value","nativeSrc":"2574:5:32","nodeType":"YulIdentifier","src":"2574:5:32"},"variableNames":[{"name":"value0","nativeSrc":"2564:6:32","nodeType":"YulIdentifier","src":"2564:6:32"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2338:247:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2374:9:32","nodeType":"YulTypedName","src":"2374:9:32","type":""},{"name":"dataEnd","nativeSrc":"2385:7:32","nodeType":"YulTypedName","src":"2385:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2397:6:32","nodeType":"YulTypedName","src":"2397:6:32","type":""}],"src":"2338:247:32"},{"body":{"nativeSrc":"2741:460:32","nodeType":"YulBlock","src":"2741:460:32","statements":[{"nativeSrc":"2751:32:32","nodeType":"YulVariableDeclaration","src":"2751:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2769:9:32","nodeType":"YulIdentifier","src":"2769:9:32"},{"kind":"number","nativeSrc":"2780:2:32","nodeType":"YulLiteral","src":"2780:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2765:3:32","nodeType":"YulIdentifier","src":"2765:3:32"},"nativeSrc":"2765:18:32","nodeType":"YulFunctionCall","src":"2765:18:32"},"variables":[{"name":"tail_1","nativeSrc":"2755:6:32","nodeType":"YulTypedName","src":"2755:6:32","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2799:9:32","nodeType":"YulIdentifier","src":"2799:9:32"},{"kind":"number","nativeSrc":"2810:2:32","nodeType":"YulLiteral","src":"2810:2:32","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2792:6:32","nodeType":"YulIdentifier","src":"2792:6:32"},"nativeSrc":"2792:21:32","nodeType":"YulFunctionCall","src":"2792:21:32"},"nativeSrc":"2792:21:32","nodeType":"YulExpressionStatement","src":"2792:21:32"},{"nativeSrc":"2822:17:32","nodeType":"YulVariableDeclaration","src":"2822:17:32","value":{"name":"tail_1","nativeSrc":"2833:6:32","nodeType":"YulIdentifier","src":"2833:6:32"},"variables":[{"name":"pos","nativeSrc":"2826:3:32","nodeType":"YulTypedName","src":"2826:3:32","type":""}]},{"nativeSrc":"2848:27:32","nodeType":"YulVariableDeclaration","src":"2848:27:32","value":{"arguments":[{"name":"value0","nativeSrc":"2868:6:32","nodeType":"YulIdentifier","src":"2868:6:32"}],"functionName":{"name":"mload","nativeSrc":"2862:5:32","nodeType":"YulIdentifier","src":"2862:5:32"},"nativeSrc":"2862:13:32","nodeType":"YulFunctionCall","src":"2862:13:32"},"variables":[{"name":"length","nativeSrc":"2852:6:32","nodeType":"YulTypedName","src":"2852:6:32","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"2891:6:32","nodeType":"YulIdentifier","src":"2891:6:32"},{"name":"length","nativeSrc":"2899:6:32","nodeType":"YulIdentifier","src":"2899:6:32"}],"functionName":{"name":"mstore","nativeSrc":"2884:6:32","nodeType":"YulIdentifier","src":"2884:6:32"},"nativeSrc":"2884:22:32","nodeType":"YulFunctionCall","src":"2884:22:32"},"nativeSrc":"2884:22:32","nodeType":"YulExpressionStatement","src":"2884:22:32"},{"nativeSrc":"2915:25:32","nodeType":"YulAssignment","src":"2915:25:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2926:9:32","nodeType":"YulIdentifier","src":"2926:9:32"},{"kind":"number","nativeSrc":"2937:2:32","nodeType":"YulLiteral","src":"2937:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2922:3:32","nodeType":"YulIdentifier","src":"2922:3:32"},"nativeSrc":"2922:18:32","nodeType":"YulFunctionCall","src":"2922:18:32"},"variableNames":[{"name":"pos","nativeSrc":"2915:3:32","nodeType":"YulIdentifier","src":"2915:3:32"}]},{"nativeSrc":"2949:29:32","nodeType":"YulVariableDeclaration","src":"2949:29:32","value":{"arguments":[{"name":"value0","nativeSrc":"2967:6:32","nodeType":"YulIdentifier","src":"2967:6:32"},{"kind":"number","nativeSrc":"2975:2:32","nodeType":"YulLiteral","src":"2975:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2963:3:32","nodeType":"YulIdentifier","src":"2963:3:32"},"nativeSrc":"2963:15:32","nodeType":"YulFunctionCall","src":"2963:15:32"},"variables":[{"name":"srcPtr","nativeSrc":"2953:6:32","nodeType":"YulTypedName","src":"2953:6:32","type":""}]},{"nativeSrc":"2987:10:32","nodeType":"YulVariableDeclaration","src":"2987:10:32","value":{"kind":"number","nativeSrc":"2996:1:32","nodeType":"YulLiteral","src":"2996:1:32","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"2991:1:32","nodeType":"YulTypedName","src":"2991:1:32","type":""}]},{"body":{"nativeSrc":"3055:120:32","nodeType":"YulBlock","src":"3055:120:32","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"3076:3:32","nodeType":"YulIdentifier","src":"3076:3:32"},{"arguments":[{"name":"srcPtr","nativeSrc":"3087:6:32","nodeType":"YulIdentifier","src":"3087:6:32"}],"functionName":{"name":"mload","nativeSrc":"3081:5:32","nodeType":"YulIdentifier","src":"3081:5:32"},"nativeSrc":"3081:13:32","nodeType":"YulFunctionCall","src":"3081:13:32"}],"functionName":{"name":"mstore","nativeSrc":"3069:6:32","nodeType":"YulIdentifier","src":"3069:6:32"},"nativeSrc":"3069:26:32","nodeType":"YulFunctionCall","src":"3069:26:32"},"nativeSrc":"3069:26:32","nodeType":"YulExpressionStatement","src":"3069:26:32"},{"nativeSrc":"3108:19:32","nodeType":"YulAssignment","src":"3108:19:32","value":{"arguments":[{"name":"pos","nativeSrc":"3119:3:32","nodeType":"YulIdentifier","src":"3119:3:32"},{"kind":"number","nativeSrc":"3124:2:32","nodeType":"YulLiteral","src":"3124:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3115:3:32","nodeType":"YulIdentifier","src":"3115:3:32"},"nativeSrc":"3115:12:32","nodeType":"YulFunctionCall","src":"3115:12:32"},"variableNames":[{"name":"pos","nativeSrc":"3108:3:32","nodeType":"YulIdentifier","src":"3108:3:32"}]},{"nativeSrc":"3140:25:32","nodeType":"YulAssignment","src":"3140:25:32","value":{"arguments":[{"name":"srcPtr","nativeSrc":"3154:6:32","nodeType":"YulIdentifier","src":"3154:6:32"},{"kind":"number","nativeSrc":"3162:2:32","nodeType":"YulLiteral","src":"3162:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3150:3:32","nodeType":"YulIdentifier","src":"3150:3:32"},"nativeSrc":"3150:15:32","nodeType":"YulFunctionCall","src":"3150:15:32"},"variableNames":[{"name":"srcPtr","nativeSrc":"3140:6:32","nodeType":"YulIdentifier","src":"3140:6:32"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"3017:1:32","nodeType":"YulIdentifier","src":"3017:1:32"},{"name":"length","nativeSrc":"3020:6:32","nodeType":"YulIdentifier","src":"3020:6:32"}],"functionName":{"name":"lt","nativeSrc":"3014:2:32","nodeType":"YulIdentifier","src":"3014:2:32"},"nativeSrc":"3014:13:32","nodeType":"YulFunctionCall","src":"3014:13:32"},"nativeSrc":"3006:169:32","nodeType":"YulForLoop","post":{"nativeSrc":"3028:18:32","nodeType":"YulBlock","src":"3028:18:32","statements":[{"nativeSrc":"3030:14:32","nodeType":"YulAssignment","src":"3030:14:32","value":{"arguments":[{"name":"i","nativeSrc":"3039:1:32","nodeType":"YulIdentifier","src":"3039:1:32"},{"kind":"number","nativeSrc":"3042:1:32","nodeType":"YulLiteral","src":"3042:1:32","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3035:3:32","nodeType":"YulIdentifier","src":"3035:3:32"},"nativeSrc":"3035:9:32","nodeType":"YulFunctionCall","src":"3035:9:32"},"variableNames":[{"name":"i","nativeSrc":"3030:1:32","nodeType":"YulIdentifier","src":"3030:1:32"}]}]},"pre":{"nativeSrc":"3010:3:32","nodeType":"YulBlock","src":"3010:3:32","statements":[]},"src":"3006:169:32"},{"nativeSrc":"3184:11:32","nodeType":"YulAssignment","src":"3184:11:32","value":{"name":"pos","nativeSrc":"3192:3:32","nodeType":"YulIdentifier","src":"3192:3:32"},"variableNames":[{"name":"tail","nativeSrc":"3184:4:32","nodeType":"YulIdentifier","src":"3184:4:32"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"2590:611:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2710:9:32","nodeType":"YulTypedName","src":"2710:9:32","type":""},{"name":"value0","nativeSrc":"2721:6:32","nodeType":"YulTypedName","src":"2721:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2732:4:32","nodeType":"YulTypedName","src":"2732:4:32","type":""}],"src":"2590:611:32"},{"body":{"nativeSrc":"3301:92:32","nodeType":"YulBlock","src":"3301:92:32","statements":[{"nativeSrc":"3311:26:32","nodeType":"YulAssignment","src":"3311:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"3323:9:32","nodeType":"YulIdentifier","src":"3323:9:32"},{"kind":"number","nativeSrc":"3334:2:32","nodeType":"YulLiteral","src":"3334:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3319:3:32","nodeType":"YulIdentifier","src":"3319:3:32"},"nativeSrc":"3319:18:32","nodeType":"YulFunctionCall","src":"3319:18:32"},"variableNames":[{"name":"tail","nativeSrc":"3311:4:32","nodeType":"YulIdentifier","src":"3311:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3353:9:32","nodeType":"YulIdentifier","src":"3353:9:32"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3378:6:32","nodeType":"YulIdentifier","src":"3378:6:32"}],"functionName":{"name":"iszero","nativeSrc":"3371:6:32","nodeType":"YulIdentifier","src":"3371:6:32"},"nativeSrc":"3371:14:32","nodeType":"YulFunctionCall","src":"3371:14:32"}],"functionName":{"name":"iszero","nativeSrc":"3364:6:32","nodeType":"YulIdentifier","src":"3364:6:32"},"nativeSrc":"3364:22:32","nodeType":"YulFunctionCall","src":"3364:22:32"}],"functionName":{"name":"mstore","nativeSrc":"3346:6:32","nodeType":"YulIdentifier","src":"3346:6:32"},"nativeSrc":"3346:41:32","nodeType":"YulFunctionCall","src":"3346:41:32"},"nativeSrc":"3346:41:32","nodeType":"YulExpressionStatement","src":"3346:41:32"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"3206:187:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3270:9:32","nodeType":"YulTypedName","src":"3270:9:32","type":""},{"name":"value0","nativeSrc":"3281:6:32","nodeType":"YulTypedName","src":"3281:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3292:4:32","nodeType":"YulTypedName","src":"3292:4:32","type":""}],"src":"3206:187:32"},{"body":{"nativeSrc":"3515:102:32","nodeType":"YulBlock","src":"3515:102:32","statements":[{"nativeSrc":"3525:26:32","nodeType":"YulAssignment","src":"3525:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"3537:9:32","nodeType":"YulIdentifier","src":"3537:9:32"},{"kind":"number","nativeSrc":"3548:2:32","nodeType":"YulLiteral","src":"3548:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3533:3:32","nodeType":"YulIdentifier","src":"3533:3:32"},"nativeSrc":"3533:18:32","nodeType":"YulFunctionCall","src":"3533:18:32"},"variableNames":[{"name":"tail","nativeSrc":"3525:4:32","nodeType":"YulIdentifier","src":"3525:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3567:9:32","nodeType":"YulIdentifier","src":"3567:9:32"},{"arguments":[{"name":"value0","nativeSrc":"3582:6:32","nodeType":"YulIdentifier","src":"3582:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3598:3:32","nodeType":"YulLiteral","src":"3598:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"3603:1:32","nodeType":"YulLiteral","src":"3603:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3594:3:32","nodeType":"YulIdentifier","src":"3594:3:32"},"nativeSrc":"3594:11:32","nodeType":"YulFunctionCall","src":"3594:11:32"},{"kind":"number","nativeSrc":"3607:1:32","nodeType":"YulLiteral","src":"3607:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3590:3:32","nodeType":"YulIdentifier","src":"3590:3:32"},"nativeSrc":"3590:19:32","nodeType":"YulFunctionCall","src":"3590:19:32"}],"functionName":{"name":"and","nativeSrc":"3578:3:32","nodeType":"YulIdentifier","src":"3578:3:32"},"nativeSrc":"3578:32:32","nodeType":"YulFunctionCall","src":"3578:32:32"}],"functionName":{"name":"mstore","nativeSrc":"3560:6:32","nodeType":"YulIdentifier","src":"3560:6:32"},"nativeSrc":"3560:51:32","nodeType":"YulFunctionCall","src":"3560:51:32"},"nativeSrc":"3560:51:32","nodeType":"YulExpressionStatement","src":"3560:51:32"}]},"name":"abi_encode_tuple_t_contract$_IERC721_$2686__to_t_address__fromStack_reversed","nativeSrc":"3398:219:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3484:9:32","nodeType":"YulTypedName","src":"3484:9:32","type":""},{"name":"value0","nativeSrc":"3495:6:32","nodeType":"YulTypedName","src":"3495:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3506:4:32","nodeType":"YulTypedName","src":"3506:4:32","type":""}],"src":"3398:219:32"},{"body":{"nativeSrc":"3703:170:32","nodeType":"YulBlock","src":"3703:170:32","statements":[{"body":{"nativeSrc":"3749:16:32","nodeType":"YulBlock","src":"3749:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3758:1:32","nodeType":"YulLiteral","src":"3758:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"3761:1:32","nodeType":"YulLiteral","src":"3761:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3751:6:32","nodeType":"YulIdentifier","src":"3751:6:32"},"nativeSrc":"3751:12:32","nodeType":"YulFunctionCall","src":"3751:12:32"},"nativeSrc":"3751:12:32","nodeType":"YulExpressionStatement","src":"3751:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3724:7:32","nodeType":"YulIdentifier","src":"3724:7:32"},{"name":"headStart","nativeSrc":"3733:9:32","nodeType":"YulIdentifier","src":"3733:9:32"}],"functionName":{"name":"sub","nativeSrc":"3720:3:32","nodeType":"YulIdentifier","src":"3720:3:32"},"nativeSrc":"3720:23:32","nodeType":"YulFunctionCall","src":"3720:23:32"},{"kind":"number","nativeSrc":"3745:2:32","nodeType":"YulLiteral","src":"3745:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3716:3:32","nodeType":"YulIdentifier","src":"3716:3:32"},"nativeSrc":"3716:32:32","nodeType":"YulFunctionCall","src":"3716:32:32"},"nativeSrc":"3713:52:32","nodeType":"YulIf","src":"3713:52:32"},{"nativeSrc":"3774:29:32","nodeType":"YulVariableDeclaration","src":"3774:29:32","value":{"arguments":[{"name":"headStart","nativeSrc":"3793:9:32","nodeType":"YulIdentifier","src":"3793:9:32"}],"functionName":{"name":"mload","nativeSrc":"3787:5:32","nodeType":"YulIdentifier","src":"3787:5:32"},"nativeSrc":"3787:16:32","nodeType":"YulFunctionCall","src":"3787:16:32"},"variables":[{"name":"value","nativeSrc":"3778:5:32","nodeType":"YulTypedName","src":"3778:5:32","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3837:5:32","nodeType":"YulIdentifier","src":"3837:5:32"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3812:24:32","nodeType":"YulIdentifier","src":"3812:24:32"},"nativeSrc":"3812:31:32","nodeType":"YulFunctionCall","src":"3812:31:32"},"nativeSrc":"3812:31:32","nodeType":"YulExpressionStatement","src":"3812:31:32"},{"nativeSrc":"3852:15:32","nodeType":"YulAssignment","src":"3852:15:32","value":{"name":"value","nativeSrc":"3862:5:32","nodeType":"YulIdentifier","src":"3862:5:32"},"variableNames":[{"name":"value0","nativeSrc":"3852:6:32","nodeType":"YulIdentifier","src":"3852:6:32"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"3622:251:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3669:9:32","nodeType":"YulTypedName","src":"3669:9:32","type":""},{"name":"dataEnd","nativeSrc":"3680:7:32","nodeType":"YulTypedName","src":"3680:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3692:6:32","nodeType":"YulTypedName","src":"3692:6:32","type":""}],"src":"3622:251:32"},{"body":{"nativeSrc":"4035:214:32","nodeType":"YulBlock","src":"4035:214:32","statements":[{"nativeSrc":"4045:26:32","nodeType":"YulAssignment","src":"4045:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"4057:9:32","nodeType":"YulIdentifier","src":"4057:9:32"},{"kind":"number","nativeSrc":"4068:2:32","nodeType":"YulLiteral","src":"4068:2:32","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4053:3:32","nodeType":"YulIdentifier","src":"4053:3:32"},"nativeSrc":"4053:18:32","nodeType":"YulFunctionCall","src":"4053:18:32"},"variableNames":[{"name":"tail","nativeSrc":"4045:4:32","nodeType":"YulIdentifier","src":"4045:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4087:9:32","nodeType":"YulIdentifier","src":"4087:9:32"},{"arguments":[{"name":"value0","nativeSrc":"4102:6:32","nodeType":"YulIdentifier","src":"4102:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4118:3:32","nodeType":"YulLiteral","src":"4118:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"4123:1:32","nodeType":"YulLiteral","src":"4123:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4114:3:32","nodeType":"YulIdentifier","src":"4114:3:32"},"nativeSrc":"4114:11:32","nodeType":"YulFunctionCall","src":"4114:11:32"},{"kind":"number","nativeSrc":"4127:1:32","nodeType":"YulLiteral","src":"4127:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4110:3:32","nodeType":"YulIdentifier","src":"4110:3:32"},"nativeSrc":"4110:19:32","nodeType":"YulFunctionCall","src":"4110:19:32"}],"functionName":{"name":"and","nativeSrc":"4098:3:32","nodeType":"YulIdentifier","src":"4098:3:32"},"nativeSrc":"4098:32:32","nodeType":"YulFunctionCall","src":"4098:32:32"}],"functionName":{"name":"mstore","nativeSrc":"4080:6:32","nodeType":"YulIdentifier","src":"4080:6:32"},"nativeSrc":"4080:51:32","nodeType":"YulFunctionCall","src":"4080:51:32"},"nativeSrc":"4080:51:32","nodeType":"YulExpressionStatement","src":"4080:51:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4151:9:32","nodeType":"YulIdentifier","src":"4151:9:32"},{"kind":"number","nativeSrc":"4162:2:32","nodeType":"YulLiteral","src":"4162:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4147:3:32","nodeType":"YulIdentifier","src":"4147:3:32"},"nativeSrc":"4147:18:32","nodeType":"YulFunctionCall","src":"4147:18:32"},{"arguments":[{"name":"value1","nativeSrc":"4171:6:32","nodeType":"YulIdentifier","src":"4171:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4187:3:32","nodeType":"YulLiteral","src":"4187:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"4192:1:32","nodeType":"YulLiteral","src":"4192:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4183:3:32","nodeType":"YulIdentifier","src":"4183:3:32"},"nativeSrc":"4183:11:32","nodeType":"YulFunctionCall","src":"4183:11:32"},{"kind":"number","nativeSrc":"4196:1:32","nodeType":"YulLiteral","src":"4196:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4179:3:32","nodeType":"YulIdentifier","src":"4179:3:32"},"nativeSrc":"4179:19:32","nodeType":"YulFunctionCall","src":"4179:19:32"}],"functionName":{"name":"and","nativeSrc":"4167:3:32","nodeType":"YulIdentifier","src":"4167:3:32"},"nativeSrc":"4167:32:32","nodeType":"YulFunctionCall","src":"4167:32:32"}],"functionName":{"name":"mstore","nativeSrc":"4140:6:32","nodeType":"YulIdentifier","src":"4140:6:32"},"nativeSrc":"4140:60:32","nodeType":"YulFunctionCall","src":"4140:60:32"},"nativeSrc":"4140:60:32","nodeType":"YulExpressionStatement","src":"4140:60:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4220:9:32","nodeType":"YulIdentifier","src":"4220:9:32"},{"kind":"number","nativeSrc":"4231:2:32","nodeType":"YulLiteral","src":"4231:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4216:3:32","nodeType":"YulIdentifier","src":"4216:3:32"},"nativeSrc":"4216:18:32","nodeType":"YulFunctionCall","src":"4216:18:32"},{"name":"value2","nativeSrc":"4236:6:32","nodeType":"YulIdentifier","src":"4236:6:32"}],"functionName":{"name":"mstore","nativeSrc":"4209:6:32","nodeType":"YulIdentifier","src":"4209:6:32"},"nativeSrc":"4209:34:32","nodeType":"YulFunctionCall","src":"4209:34:32"},"nativeSrc":"4209:34:32","nodeType":"YulExpressionStatement","src":"4209:34:32"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"3878:371:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3988:9:32","nodeType":"YulTypedName","src":"3988:9:32","type":""},{"name":"value2","nativeSrc":"3999:6:32","nodeType":"YulTypedName","src":"3999:6:32","type":""},{"name":"value1","nativeSrc":"4007:6:32","nodeType":"YulTypedName","src":"4007:6:32","type":""},{"name":"value0","nativeSrc":"4015:6:32","nodeType":"YulTypedName","src":"4015:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4026:4:32","nodeType":"YulTypedName","src":"4026:4:32","type":""}],"src":"3878:371:32"},{"body":{"nativeSrc":"4303:176:32","nodeType":"YulBlock","src":"4303:176:32","statements":[{"nativeSrc":"4313:17:32","nodeType":"YulAssignment","src":"4313:17:32","value":{"arguments":[{"name":"x","nativeSrc":"4325:1:32","nodeType":"YulIdentifier","src":"4325:1:32"},{"name":"y","nativeSrc":"4328:1:32","nodeType":"YulIdentifier","src":"4328:1:32"}],"functionName":{"name":"sub","nativeSrc":"4321:3:32","nodeType":"YulIdentifier","src":"4321:3:32"},"nativeSrc":"4321:9:32","nodeType":"YulFunctionCall","src":"4321:9:32"},"variableNames":[{"name":"diff","nativeSrc":"4313:4:32","nodeType":"YulIdentifier","src":"4313:4:32"}]},{"body":{"nativeSrc":"4362:111:32","nodeType":"YulBlock","src":"4362:111:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4383:1:32","nodeType":"YulLiteral","src":"4383:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4390:3:32","nodeType":"YulLiteral","src":"4390:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"4395:10:32","nodeType":"YulLiteral","src":"4395:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4386:3:32","nodeType":"YulIdentifier","src":"4386:3:32"},"nativeSrc":"4386:20:32","nodeType":"YulFunctionCall","src":"4386:20:32"}],"functionName":{"name":"mstore","nativeSrc":"4376:6:32","nodeType":"YulIdentifier","src":"4376:6:32"},"nativeSrc":"4376:31:32","nodeType":"YulFunctionCall","src":"4376:31:32"},"nativeSrc":"4376:31:32","nodeType":"YulExpressionStatement","src":"4376:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4427:1:32","nodeType":"YulLiteral","src":"4427:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"4430:4:32","nodeType":"YulLiteral","src":"4430:4:32","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"4420:6:32","nodeType":"YulIdentifier","src":"4420:6:32"},"nativeSrc":"4420:15:32","nodeType":"YulFunctionCall","src":"4420:15:32"},"nativeSrc":"4420:15:32","nodeType":"YulExpressionStatement","src":"4420:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4455:1:32","nodeType":"YulLiteral","src":"4455:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"4458:4:32","nodeType":"YulLiteral","src":"4458:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4448:6:32","nodeType":"YulIdentifier","src":"4448:6:32"},"nativeSrc":"4448:15:32","nodeType":"YulFunctionCall","src":"4448:15:32"},"nativeSrc":"4448:15:32","nodeType":"YulExpressionStatement","src":"4448:15:32"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"4345:4:32","nodeType":"YulIdentifier","src":"4345:4:32"},{"name":"x","nativeSrc":"4351:1:32","nodeType":"YulIdentifier","src":"4351:1:32"}],"functionName":{"name":"gt","nativeSrc":"4342:2:32","nodeType":"YulIdentifier","src":"4342:2:32"},"nativeSrc":"4342:11:32","nodeType":"YulFunctionCall","src":"4342:11:32"},"nativeSrc":"4339:134:32","nodeType":"YulIf","src":"4339:134:32"}]},"name":"checked_sub_t_uint256","nativeSrc":"4254:225:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4285:1:32","nodeType":"YulTypedName","src":"4285:1:32","type":""},{"name":"y","nativeSrc":"4288:1:32","nodeType":"YulTypedName","src":"4288:1:32","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"4294:4:32","nodeType":"YulTypedName","src":"4294:4:32","type":""}],"src":"4254:225:32"},{"body":{"nativeSrc":"4516:95:32","nodeType":"YulBlock","src":"4516:95:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4533:1:32","nodeType":"YulLiteral","src":"4533:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4540:3:32","nodeType":"YulLiteral","src":"4540:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"4545:10:32","nodeType":"YulLiteral","src":"4545:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4536:3:32","nodeType":"YulIdentifier","src":"4536:3:32"},"nativeSrc":"4536:20:32","nodeType":"YulFunctionCall","src":"4536:20:32"}],"functionName":{"name":"mstore","nativeSrc":"4526:6:32","nodeType":"YulIdentifier","src":"4526:6:32"},"nativeSrc":"4526:31:32","nodeType":"YulFunctionCall","src":"4526:31:32"},"nativeSrc":"4526:31:32","nodeType":"YulExpressionStatement","src":"4526:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4573:1:32","nodeType":"YulLiteral","src":"4573:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"4576:4:32","nodeType":"YulLiteral","src":"4576:4:32","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"4566:6:32","nodeType":"YulIdentifier","src":"4566:6:32"},"nativeSrc":"4566:15:32","nodeType":"YulFunctionCall","src":"4566:15:32"},"nativeSrc":"4566:15:32","nodeType":"YulExpressionStatement","src":"4566:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4597:1:32","nodeType":"YulLiteral","src":"4597:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"4600:4:32","nodeType":"YulLiteral","src":"4600:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4590:6:32","nodeType":"YulIdentifier","src":"4590:6:32"},"nativeSrc":"4590:15:32","nodeType":"YulFunctionCall","src":"4590:15:32"},"nativeSrc":"4590:15:32","nodeType":"YulExpressionStatement","src":"4590:15:32"}]},"name":"panic_error_0x32","nativeSrc":"4484:127:32","nodeType":"YulFunctionDefinition","src":"4484:127:32"},{"body":{"nativeSrc":"4648:95:32","nodeType":"YulBlock","src":"4648:95:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4665:1:32","nodeType":"YulLiteral","src":"4665:1:32","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4672:3:32","nodeType":"YulLiteral","src":"4672:3:32","type":"","value":"224"},{"kind":"number","nativeSrc":"4677:10:32","nodeType":"YulLiteral","src":"4677:10:32","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4668:3:32","nodeType":"YulIdentifier","src":"4668:3:32"},"nativeSrc":"4668:20:32","nodeType":"YulFunctionCall","src":"4668:20:32"}],"functionName":{"name":"mstore","nativeSrc":"4658:6:32","nodeType":"YulIdentifier","src":"4658:6:32"},"nativeSrc":"4658:31:32","nodeType":"YulFunctionCall","src":"4658:31:32"},"nativeSrc":"4658:31:32","nodeType":"YulExpressionStatement","src":"4658:31:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4705:1:32","nodeType":"YulLiteral","src":"4705:1:32","type":"","value":"4"},{"kind":"number","nativeSrc":"4708:4:32","nodeType":"YulLiteral","src":"4708:4:32","type":"","value":"0x31"}],"functionName":{"name":"mstore","nativeSrc":"4698:6:32","nodeType":"YulIdentifier","src":"4698:6:32"},"nativeSrc":"4698:15:32","nodeType":"YulFunctionCall","src":"4698:15:32"},"nativeSrc":"4698:15:32","nodeType":"YulExpressionStatement","src":"4698:15:32"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4729:1:32","nodeType":"YulLiteral","src":"4729:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"4732:4:32","nodeType":"YulLiteral","src":"4732:4:32","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4722:6:32","nodeType":"YulIdentifier","src":"4722:6:32"},"nativeSrc":"4722:15:32","nodeType":"YulFunctionCall","src":"4722:15:32"},"nativeSrc":"4722:15:32","nodeType":"YulExpressionStatement","src":"4722:15:32"}]},"name":"panic_error_0x31","nativeSrc":"4616:127:32","nodeType":"YulFunctionDefinition","src":"4616:127:32"}]},"contents":"{\n { }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let value_2 := 0\n value_2 := calldataload(add(headStart, 64))\n value2 := value_2\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_1, 32)\n value4 := length\n }\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, shl(224, 0xffffffff)))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, 32)\n srcPtr := add(srcPtr, 32)\n }\n tail := pos\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_contract$_IERC721_$2686__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n mstore(add(headStart, 64), value2)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}","id":32,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"10252":[{"length":32,"start":670},{"length":32,"start":880},{"length":32,"start":1047},{"length":32,"start":1271},{"length":32,"start":1783},{"length":32,"start":2158},{"length":32,"start":2565},{"length":32,"start":2776}]},"linkReferences":{},"object":"608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063715018a61161009e578063a694fc3a1161006e578063a694fc3a1461025c578063baa51f861461026f578063d56d229d14610299578063e30c3978146102c0578063f2fde38b146102d1575f80fd5b8063715018a61461023457806379ba50971461023c5780638456cb59146102445780638da5cb5b1461024c575f80fd5b80632b4bc300116100e45780632b4bc300146101c85780632e17de78146101e85780632f940c70146101fb5780633f4ba83a1461020e5780635c975abb14610216575f80fd5b80630fa6f64214610115578063150b7a021461012a5780631b3253b01461015b5780631dcac94d14610188575b5f80fd5b610128610123366004610f2b565b6102e4565b005b61013d610138366004610f59565b6104db565b6040516001600160e01b031990911681526020015b60405180910390f35b61017a610169366004610ff2565b5f9081526003602052604090205490565b604051908152602001610152565b6101b0610196366004610ff2565b5f908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b6101db6101d6366004611009565b610607565b604051610152919061102b565b6101286101f6366004610ff2565b610670565b610128610209366004610f2b565b6107af565b610128610939565b600154600160a01b900460ff165b6040519015158152602001610152565b61012861094b565b61012861095c565b6101286109a2565b5f546001600160a01b03166101b0565b61012861026a366004610ff2565b6109b2565b61022461027d366004610ff2565b5f908152600260205260409020546001600160a01b0316151590565b6101b07f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b03166101b0565b6101286102df366004611009565b610b7a565b6102ec610bea565b6102f4610c16565b6001600160a01b03811661031b5760405163d92e233d60e01b815260040160405180910390fd5b5f828152600260205260409020546001600160a01b031615610350576040516382d272e360e01b815260040160405180910390fd5b6040516331a9108f60e11b81526004810183905230906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156103b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d9919061106d565b6001600160a01b03161461040057604051636bcd243760e11b815260040160405180910390fd5b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061045090309085908790600401611088565b5f604051808303815f87803b158015610467575f80fd5b505af1158015610479573d5f803e3d5ffd5b5050505081816001600160a01b03167fc27a1277308b3908a0fb998812a60b1da8911b8583f20bf8f98e5246db8c47ef426040516104b991815260200190565b60405180910390a36104d760015f805160206110fa83398151915255565b5050565b5f6104e4610c16565b6104ec610c31565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105355760405163de1db39560e01b815260040160405180910390fd5b6001600160a01b03851661055c5760405163d92e233d60e01b815260040160405180910390fd5b5f848152600260205260409020546001600160a01b031615610591576040516316e9ad8f60e01b815260040160405180910390fd5b61059b8585610c5c565b83856001600160a01b03167f6173e4d2d9dd52aae0ed37afed3adcf924a490639b759ca93d32dc43366c17d2426040516105d791815260200190565b60405180910390a350630a85bd0160e11b6105fe60015f805160206110fa83398151915255565b95945050505050565b6001600160a01b0381165f9081526004602090815260409182902080548351818402810184019094528084526060939283018282801561066457602002820191905f5260205f20905b815481526020019060010190808311610650575b50505050509050919050565b610678610c16565b5f818152600260205260409020546001600160a01b0316806106ad57604051630a49bbc360e21b815260040160405180910390fd5b6001600160a01b03811633146106d6576040516332dc95cb60e01b815260040160405180910390fd5b6106e08183610cc0565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061073090309033908790600401611088565b5f604051808303815f87803b158015610747575f80fd5b505af1158015610759573d5f803e3d5ffd5b50506040514281528492503391507f563fc70fca9d440d883299c76a721644d5aca7c45df98aeb5292c4cb823579bf906020015b60405180910390a3506107ac60015f805160206110fa83398151915255565b50565b6107b7610bea565b6107bf610c16565b5f828152600260205260409020546001600160a01b0316806107f457604051630a49bbc360e21b815260040160405180910390fd5b6001600160a01b03821661081b5760405163d92e233d60e01b815260040160405180910390fd5b806001600160a01b0316826001600160a01b03161461084d5760405163c56a390560e01b815260040160405180910390fd5b6108578184610cc0565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906108a790309086908890600401611088565b5f604051808303815f87803b1580156108be575f80fd5b505af11580156108d0573d5f803e3d5ffd5b50505050816001600160a01b031683826001600160a01b03167ff4408f2b7cb3bb2b43ddb3715579eae68a12af5f2e6d938537db2be5e72f5f7d4260405161091a91815260200190565b60405180910390a4506104d760015f805160206110fa83398151915255565b610941610bea565b610949610cf0565b565b610953610bea565b6109495f610d45565b60015433906001600160a01b031681146109995760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6107ac81610d45565b6109aa610bea565b610949610d5e565b6109ba610c16565b6109c2610c31565b5f8181526002602052604090205433906001600160a01b0316156109f9576040516316e9ad8f60e01b815260040160405180910390fd5b806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e846040518263ffffffff1660e01b8152600401610a5191815260200190565b602060405180830381865afa158015610a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a90919061106d565b6001600160a01b031614610ab7576040516359dc379f60e01b815260040160405180910390fd5b610ac18183610c5c565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610b1190849030908790600401611088565b5f604051808303815f87803b158015610b28575f80fd5b505af1158015610b3a573d5f803e3d5ffd5b5050505081816001600160a01b03167f6173e4d2d9dd52aae0ed37afed3adcf924a490639b759ca93d32dc43366c17d24260405161078d91815260200190565b610b82610bea565b600180546001600160a01b0383166001600160a01b03199091168117909155610bb25f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f546001600160a01b031633146109495760405163118cdaa760e01b8152336004820152602401610990565b610c1e610da1565b60025f805160206110fa83398151915255565b600154600160a01b900460ff16156109495760405163d93c066560e01b815260040160405180910390fd5b5f81815260026020908152604080832080546001600160a01b039096166001600160a01b0319909616861790556003825280832042905593825260048082528483208054858552600584529584208690559082526001850181558252902090910155565b5f81815260026020908152604080832080546001600160a01b031916905560039091528120556104d78282610dd0565b610cf8610e9e565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600180546001600160a01b03191690556107ac81610ec8565b610d66610c31565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d283390565b5f805160206110fa8339815191525460020361094957604051633ee5aeb560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526004602090815260408083208484526005909252822054815491929091610e07906001906110ac565b9050808214610e60575f838281548110610e2357610e236110d1565b905f5260205f200154905080848481548110610e4157610e416110d1565b5f91825260208083209091019290925591825260059052604090208290555b82805480610e7057610e706110e5565b600190038181905f5260205f20015f9055905560055f8581526020019081526020015f205f90555050505050565b600154600160a01b900460ff1661094957604051638dfc202b60e01b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146107ac575f80fd5b5f8060408385031215610f3c575f80fd5b823591506020830135610f4e81610f17565b809150509250929050565b5f805f805f60808688031215610f6d575f80fd5b8535610f7881610f17565b94506020860135610f8881610f17565b935060408601359250606086013567ffffffffffffffff811115610faa575f80fd5b8601601f81018813610fba575f80fd5b803567ffffffffffffffff811115610fd0575f80fd5b886020828401011115610fe1575f80fd5b959894975092955050506020019190565b5f60208284031215611002575f80fd5b5035919050565b5f60208284031215611019575f80fd5b813561102481610f17565b9392505050565b602080825282518282018190525f918401906040840190835b81811015611062578351835260209384019390920191600101611044565b509095945050505050565b5f6020828403121561107d575f80fd5b815161102481610f17565b6001600160a01b039384168152919092166020820152604081019190915260600190565b818103818111156110cb57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220f8e5afe3df2897c05bd05e17e152d07acba805eed0e132300174b368b573437b64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x111 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x9E JUMPI DUP1 PUSH4 0xA694FC3A GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xA694FC3A EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xBAA51F86 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xD56D229D EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2D1 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x24C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2B4BC300 GT PUSH2 0xE4 JUMPI DUP1 PUSH4 0x2B4BC300 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x2E17DE78 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x216 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xFA6F642 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0x1B3253B0 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0x1DCAC94D EQ PUSH2 0x188 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0xF59 JUMP JUMPDEST PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17A PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x1B0 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1009 JUMP JUMPDEST PUSH2 0x607 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x152 SWAP2 SWAP1 PUSH2 0x102B JUMP JUMPDEST PUSH2 0x128 PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x670 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x7AF JUMP JUMPDEST PUSH2 0x128 PUSH2 0x939 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x152 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x94B JUMP JUMPDEST PUSH2 0x128 PUSH2 0x95C JUMP JUMPDEST PUSH2 0x128 PUSH2 0x9A2 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x9B2 JUMP JUMPDEST PUSH2 0x224 PUSH2 0x27D CALLDATASIZE PUSH1 0x4 PUSH2 0xFF2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1B0 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x1009 JUMP JUMPDEST PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x2EC PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0xC16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x31B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x350 JUMPI PUSH1 0x40 MLOAD PUSH4 0x82D272E3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D9 SWAP2 SWAP1 PUSH2 0x106D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x400 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6BCD2437 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x450 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x467 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x479 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC27A1277308B3908A0FB998812A60B1DA8911B8583F20BF8F98E5246DB8C47EF TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x4B9 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x4D7 PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4E4 PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x4EC PUSH2 0xC31 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x535 JUMPI PUSH1 0x40 MLOAD PUSH4 0xDE1DB395 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x55C JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x591 JUMPI PUSH1 0x40 MLOAD PUSH4 0x16E9AD8F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x59B DUP6 DUP6 PUSH2 0xC5C JUMP JUMPDEST DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6173E4D2D9DD52AAE0ED37AFED3ADCF924A490639B759CA93D32DC43366C17D2 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x5D7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x5FE PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x650 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x678 PUSH2 0xC16 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH4 0xA49BBC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x6D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32DC95CB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6E0 DUP2 DUP4 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x730 SWAP1 ADDRESS SWAP1 CALLER SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x747 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x759 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD TIMESTAMP DUP2 MSTORE DUP5 SWAP3 POP CALLER SWAP2 POP PUSH32 0x563FC70FCA9D440D883299C76A721644D5ACA7C45DF98AEB5292C4CB823579BF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x7AC PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x7B7 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x7BF PUSH2 0xC16 JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x7F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA49BBC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x81B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x84D JUMPI PUSH1 0x40 MLOAD PUSH4 0xC56A3905 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x857 DUP2 DUP5 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x8A7 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8D0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF4408F2B7CB3BB2B43DDB3715579EAE68A12AF5F2E6D938537DB2BE5E72F5F7D TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x91A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH2 0x4D7 PUSH1 0x1 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH2 0x941 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH2 0xCF0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x953 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH0 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x1 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 EQ PUSH2 0x999 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7AC DUP2 PUSH2 0xD45 JUMP JUMPDEST PUSH2 0x9AA PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x949 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x9BA PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x9C2 PUSH2 0xC31 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x16E9AD8F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6352211E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA51 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA6C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA90 SWAP2 SWAP1 PUSH2 0x106D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x59DC379F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAC1 DUP2 DUP4 PUSH2 0xC5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0xB11 SWAP1 DUP5 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB28 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6173E4D2D9DD52AAE0ED37AFED3ADCF924A490639B759CA93D32DC43366C17D2 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x78D SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xB82 PUSH2 0xBEA JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0xBB2 PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x990 JUMP JUMPDEST PUSH2 0xC1E PUSH2 0xDA1 JUMP JUMPDEST PUSH1 0x2 PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP7 AND DUP7 OR SWAP1 SSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 TIMESTAMP SWAP1 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD DUP6 DUP6 MSTORE PUSH1 0x5 DUP5 MSTORE SWAP6 DUP5 KECCAK256 DUP7 SWAP1 SSTORE SWAP1 DUP3 MSTORE PUSH1 0x1 DUP6 ADD DUP2 SSTORE DUP3 MSTORE SWAP1 KECCAK256 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SSTORE PUSH2 0x4D7 DUP3 DUP3 PUSH2 0xDD0 JUMP JUMPDEST PUSH2 0xCF8 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x7AC DUP2 PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0xD66 PUSH2 0xC31 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0xD28 CALLER SWAP1 JUMP JUMPDEST PUSH0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x10FA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x2 SUB PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD DUP2 SLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH2 0xE07 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x10AC JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0xE60 JUMPI PUSH0 DUP4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE23 JUMPI PUSH2 0xE23 PUSH2 0x10D1 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xE41 JUMPI PUSH2 0xE41 PUSH2 0x10D1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST DUP3 DUP1 SLOAD DUP1 PUSH2 0xE70 JUMPI PUSH2 0xE70 PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x5 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x949 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7AC JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF3C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xF4E DUP2 PUSH2 0xF17 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xF6D JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xF78 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xF88 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFAA JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x1F DUP2 ADD DUP9 SGT PUSH2 0xFBA JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFD0 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xFE1 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 POP POP POP PUSH1 0x20 ADD SWAP2 SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1002 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1019 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1024 DUP2 PUSH2 0xF17 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1062 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1044 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x107D JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1024 DUP2 PUSH2 0xF17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x10CB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID SWAP12 PUSH24 0x9B17422D0DF92223018B32B4D1FA46E071723D6817E2486D STOP EXTCODESIZE 0xEC 0xC5 PUSH0 STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0xE5 0xAF 0xE3 0xDF 0x28 SWAP8 0xC0 JUMPDEST 0xD0 MCOPY OR 0xE1 MSTORE 0xD0 PUSH27 0xCBA805EED0E132300174B368B573437B64736F6C634300081A0033 ","sourceMap":"1462:12831:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10346:460;;;;;;:::i;:::-;;:::i;:::-;;7482:571;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;1672:33:32;;;1654:52;;1642:2;1627:18;7482:571:30;;;;;;;;12193:111;;;;;;:::i;:::-;12253:7;12279:18;;;:9;:18;;;;;;;12193:111;;;;2094:25:32;;;2082:2;2067:18;12193:111:30;1948:177:32;11887:114:30;;;;;;:::i;:::-;11950:7;11976:18;;;:9;:18;;;;;;-1:-1:-1;;;;;11976:18:30;;11887:114;;;;-1:-1:-1;;;;;2294:32:32;;;2276:51;;2264:2;2249:18;11887:114:30;2130:203:32;12753:135:30;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8283:437::-;;;;;;:::i;:::-;;:::i;9467:561::-;;;;;;:::i;:::-;;:::i;11167:65::-;;;:::i;1726:84:20:-;1796:7;;-1:-1:-1;;;1796:7:20;;;;1726:84;;;3371:14:32;;3364:22;3346:41;;3334:2;3319:18;1726:84:20;3206:187:32;2293:101:2;;;:::i;2244:229:3:-;;;:::i;11066:61:30:-;;;:::i;1638:85:2:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:2;1638:85;;6381:430:30;;;;;;:::i;:::-;;:::i;11573:120::-;;;;;;:::i;:::-;11631:4;11654:18;;;:9;:18;;;;;;-1:-1:-1;;;;;11654:18:30;:32;;;11573:120;4770:36;;;;;1232:99:3;1311:13;;-1:-1:-1;;;;;1311:13:3;1232:99;;1649:178;;;;;;:::i;:::-;;:::i;10346:460:30:-;1531:13:2;:11;:13::i;:::-;3023:21:21::1;:19;:21::i;:::-;-1:-1:-1::0;;;;;10458:23:30;::::2;10454:49;;10490:13;;-1:-1:-1::0;;;10490:13:30::2;;;;;;;;;;;10454:49;10547:1;10517:18:::0;;;:9:::2;:18;::::0;;;;;-1:-1:-1;;;;;10517:18:30::2;:32:::0;10513:61:::2;;10558:16;;-1:-1:-1::0;;;10558:16:30::2;;;;;;;;;;;10513:61;10588:28;::::0;-1:-1:-1;;;10588:28:30;;::::2;::::0;::::2;2094:25:32::0;;;10628:4:30::2;::::0;-1:-1:-1;;;;;10588:11:30::2;:19;::::0;::::2;::::0;2067:18:32;;10588:28:30::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10588:45:30::2;;10584:72;;10642:14;;-1:-1:-1::0;;;10642:14:30::2;;;;;;;;;;;10584:72;10667:59;::::0;-1:-1:-1;;;10667:59:30;;-1:-1:-1;;;;;10667:11:30::2;:24;::::0;::::2;::::0;:59:::2;::::0;10700:4:::2;::::0;10707:9;;10718:7;;10667:59:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;10774:7;10763:9;-1:-1:-1::0;;;;;10741:58:30::2;;10783:15;10741:58;;;;2094:25:32::0;;2082:2;2067:18;;1948:177;10741:58:30::2;;;;;;;;3065:20:21::1;2365:1:::0;-1:-1:-1;;;;;;;;;;;3972:62:21;3749:292;3065:20:::1;10346:460:30::0;;:::o;7482:571::-;7673:6;3023:21:21;:19;:21::i;:::-;1350:19:20::1;:17;:19::i;:::-;7695:10:30::2;-1:-1:-1::0;;;;;7717:11:30::2;7695:34;;7691:71;;7738:24;;-1:-1:-1::0;;;7738:24:30::2;;;;;;;;;;;7691:71;-1:-1:-1::0;;;;;7776:18:30;::::2;7772:44;;7803:13;;-1:-1:-1::0;;;7803:13:30::2;;;;;;;;;;;7772:44;7860:1;7830:18:::0;;;:9:::2;:18;::::0;;;;;-1:-1:-1;;;;;7830:18:30::2;:32:::0;7826:65:::2;;7871:20;;-1:-1:-1::0;;;7871:20:30::2;;;;;;;;;;;7826:65;7902:27;7915:4;7921:7;7902:12;:27::i;:::-;7962:7;7956:4;-1:-1:-1::0;;;;;7944:43:30::2;;7971:15;7944:43;;;;2094:25:32::0;;2082:2;2067:18;;1948:177;7944:43:30::2;;;;;;;;-1:-1:-1::0;;;;3065:20:21;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:21;3749:292;3065:20;7482:571:30;;;;;;;:::o;12753:135::-;-1:-1:-1;;;;;12858:23:30;;;;;;:15;:23;;;;;;;;;12851:30;;;;;;;;;;;;;;;;;12823:16;;12851:30;;;12858:23;12851:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12753:135;;;:::o;8283:437::-;3023:21:21;:19;:21::i;:::-;8349:22:30::1;8374:18:::0;;;:9:::1;:18;::::0;;;;;-1:-1:-1;;;;;8374:18:30::1;::::0;8402:57:::1;;8443:16;;-1:-1:-1::0;;;8443:16:30::1;;;;;;;;;;;8402:57;-1:-1:-1::0;;;;;8473:28:30;::::1;8491:10;8473:28;8469:60;;8510:19;;-1:-1:-1::0;;;8510:19:30::1;;;;;;;;;;;8469:60;8540:36;8552:14;8568:7;8540:11;:36::i;:::-;8586:60;::::0;-1:-1:-1;;;8586:60:30;;-1:-1:-1;;;;;8586:11:30::1;:24;::::0;::::1;::::0;:60:::1;::::0;8619:4:::1;::::0;8626:10:::1;::::0;8638:7;;8586:60:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8662:51:30::1;::::0;8697:15:::1;2094:25:32::0;;8688:7:30;;-1:-1:-1;8676:10:30::1;::::0;-1:-1:-1;8662:51:30::1;::::0;2082:2:32;2067:18;8662:51:30::1;;;;;;;;8339:381;3065:20:21::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:21;3749:292;3065:20;8283:437:30;:::o;9467:561::-;1531:13:2;:11;:13::i;:::-;3023:21:21::1;:19;:21::i;:::-;9572:22:30::2;9597:18:::0;;;:9:::2;:18;::::0;;;;;-1:-1:-1;;;;;9597:18:30::2;::::0;9625:57:::2;;9666:16;;-1:-1:-1::0;;;9666:16:30::2;;;;;;;;;;;9625:57;-1:-1:-1::0;;;;;9696:23:30;::::2;9692:49;;9728:13;;-1:-1:-1::0;;;9728:13:30::2;;;;;;;;;;;9692:49;9768:14;-1:-1:-1::0;;;;;9755:27:30::2;:9;-1:-1:-1::0;;;;;9755:27:30::2;;9751:67;;9791:27;;-1:-1:-1::0;;;9791:27:30::2;;;;;;;;;;;9751:67;9829:36;9841:14;9857:7;9829:11;:36::i;:::-;9875:59;::::0;-1:-1:-1;;;9875:59:30;;-1:-1:-1;;;;;9875:11:30::2;:24;::::0;::::2;::::0;:59:::2;::::0;9908:4:::2;::::0;9915:9;;9926:7;;9875:59:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;9994:9;-1:-1:-1::0;;;;;9950:71:30::2;9985:7;9969:14;-1:-1:-1::0;;;;;9950:71:30::2;;10005:15;9950:71;;;;2094:25:32::0;;2082:2;2067:18;;1948:177;9950:71:30::2;;;;;;;;9562:466;3065:20:21::1;2365:1:::0;-1:-1:-1;;;;;;;;;;;3972:62:21;3749:292;11167:65:30;1531:13:2;:11;:13::i;:::-;11215:10:30::1;:8;:10::i;:::-;11167:65::o:0;2293:101:2:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;2244:229:3:-:0;1311:13;;735:10:18;;-1:-1:-1;;;;;1311:13:3;2339:24;;2335:96;;2386:34;;-1:-1:-1;;;2386:34:3;;-1:-1:-1;;;;;2294:32:32;;2386:34:3;;;2276:51:32;2249:18;;2386:34:3;;;;;;;;2335:96;2440:26;2459:6;2440:18;:26::i;11066:61:30:-;1531:13:2;:11;:13::i;:::-;11112:8:30::1;:6;:8::i;6381:430::-:0;3023:21:21;:19;:21::i;:::-;1350:19:20::1;:17;:19::i;:::-;6459:14:30::2;6500:18:::0;;;:9:::2;:18;::::0;;;;;6476:10:::2;::::0;-1:-1:-1;;;;;6500:18:30::2;:32:::0;6496:65:::2;;6541:20;;-1:-1:-1::0;;;6541:20:30::2;;;;;;;;;;;6496:65;6607:6;-1:-1:-1::0;;;;;6575:38:30::2;:11;-1:-1:-1::0;;;;;6575:19:30::2;;6595:7;6575:28;;;;;;;;;;;;;2094:25:32::0;;2082:2;2067:18;;1948:177;6575:28:30::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6575:38:30::2;;6571:66;;6622:15;;-1:-1:-1::0;;;6622:15:30::2;;;;;;;;;;;6571:66;6648:29;6661:6;6669:7;6648:12;:29::i;:::-;6687:56;::::0;-1:-1:-1;;;6687:56:30;;-1:-1:-1;;;;;6687:11:30::2;:24;::::0;::::2;::::0;:56:::2;::::0;6712:6;;6728:4:::2;::::0;6735:7;;6687:56:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;6779:7;6771:6;-1:-1:-1::0;;;;;6759:45:30::2;;6788:15;6759:45;;;;2094:25:32::0;;2082:2;2067:18;;1948:177;1649:178:3;1531:13:2;:11;:13::i;:::-;1738::3::1;:24:::0;;-1:-1:-1;;;;;1738:24:3;::::1;-1:-1:-1::0;;;;;;1738:24:3;;::::1;::::0;::::1;::::0;;;1802:7:::1;1684::2::0;1710:6;-1:-1:-1;;;;;1710:6:2;;1638:85;1802:7:3::1;-1:-1:-1::0;;;;;1777:43:3::1;;;;;;;;;;;1649:178:::0;:::o;1796:162:2:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:2;735:10:18;1855:23:2;1851:101;;1901:40;;-1:-1:-1;;;1901:40:2;;735:10:18;1901:40:2;;;2276:51:32;2249:18;;1901:40:2;2130:203:32;3749:292:21;3872:25;:23;:25::i;:::-;2407:1;-1:-1:-1;;;;;;;;;;;3972:62:21;3749:292::o;1878:128:20:-;1796:7;;-1:-1:-1;;;1796:7:20;;;;1939:61;;;1974:15;;-1:-1:-1;;;1974:15:20;;;;;;;;;;;13158:270:30;13232:18;;;;:9;:18;;;;;;;;:27;;-1:-1:-1;;;;;13232:27:30;;;-1:-1:-1;;;;;;13232:27:30;;;;;;;13269:9;:18;;;;;13290:15;13269:36;;13344:23;;;:15;:23;;;;;;:30;;13315:26;;;:17;:26;;;;;:59;;;13384:23;;;13232:27;13384:37;;;;;;;;;;;;13158:270::o;13514:184::-;13594:18;;;;:9;:18;;;;;;;;13587:25;;-1:-1:-1;;;;;;13587:25:30;;;13629:9;:18;;;;;13622:25;13657:34;13675:6;13604:7;13657:17;:34::i;2586:117:20:-;1597:16;:14;:16::i;:::-;2644:7:::1;:15:::0;;-1:-1:-1;;;;2644:15:20::1;::::0;;2674:22:::1;735:10:18::0;2683:12:20::1;2674:22;::::0;-1:-1:-1;;;;;2294:32:32;;;2276:51;;2264:2;2249:18;2674:22:20::1;;;;;;;2586:117::o:0;2011:153:3:-;2100:13;2093:20;;-1:-1:-1;;;;;;2093:20:3;;;2123:34;2148:8;2123:24;:34::i;2339:115:20:-;1350:19;:17;:19::i;:::-;2408:4:::1;2398:14:::0;;-1:-1:-1;;;;2398:14:20::1;-1:-1:-1::0;;;2398:14:20::1;::::0;;2427:20:::1;2434:12;735:10:18::0;;656:96;3586:157:21;-1:-1:-1;;;;;;;;;;;4560:52:21;2407:1;4560:63;3644:93;;3696:30;;-1:-1:-1;;;3696:30:21;;;;;;;;;;;13799:492:30;-1:-1:-1;;;;;13905:23:30;;13878:24;13905:23;;;:15;:23;;;;;;;;13954:26;;;:17;:26;;;;;;14010:13;;13905:23;;13954:26;;14010:17;;14026:1;;14010:17;:::i;:::-;13990:37;;14051:9;14042:5;:18;14038:181;;14076:19;14098:6;14105:9;14098:17;;;;;;;;:::i;:::-;;;;;;;;;14076:39;;14145:11;14129:6;14136:5;14129:13;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;;14170:30;;;:17;:30;;;;;:38;;;14038:181;14229:6;:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14258:17;:26;14276:7;14258:26;;;;;;;;;;;14251:33;;;13868:423;;;13799:492;;:::o;2078:126:20:-;1796:7;;-1:-1:-1;;;1796:7:20;;;;2136:62;;2172:15;;-1:-1:-1;;;2172:15:20;;;;;;;;;;;2912:187:2;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:2;;;-1:-1:-1;;;;;;3020:17:2;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:131:32:-;-1:-1:-1;;;;;89:31:32;;79:42;;69:70;;135:1;132;125:12;150:367;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;340:23;;;-1:-1:-1;439:2:32;424:18;;411:32;452:33;411:32;452:33;:::i;:::-;504:7;494:17;;;150:367;;;;;:::o;522:983::-;619:6;627;635;643;651;704:3;692:9;683:7;679:23;675:33;672:53;;;721:1;718;711:12;672:53;760:9;747:23;779:31;804:5;779:31;:::i;:::-;829:5;-1:-1:-1;886:2:32;871:18;;858:32;899:33;858:32;899:33;:::i;:::-;951:7;-1:-1:-1;1031:2:32;1016:18;;1003:32;;-1:-1:-1;1112:2:32;1097:18;;1084:32;1139:18;1128:30;;1125:50;;;1171:1;1168;1161:12;1125:50;1194:22;;1247:4;1239:13;;1235:27;-1:-1:-1;1225:55:32;;1276:1;1273;1266:12;1225:55;1316:2;1303:16;1342:18;1334:6;1331:30;1328:50;;;1374:1;1371;1364:12;1328:50;1419:7;1414:2;1405:6;1401:2;1397:15;1393:24;1390:37;1387:57;;;1440:1;1437;1430:12;1387:57;522:983;;;;-1:-1:-1;522:983:32;;-1:-1:-1;;;1471:2:32;1463:11;;1493:6;522:983::o;1717:226::-;1776:6;1829:2;1817:9;1808:7;1804:23;1800:32;1797:52;;;1845:1;1842;1835:12;1797:52;-1:-1:-1;1890:23:32;;1717:226;-1:-1:-1;1717:226:32:o;2338:247::-;2397:6;2450:2;2438:9;2429:7;2425:23;2421:32;2418:52;;;2466:1;2463;2456:12;2418:52;2505:9;2492:23;2524:31;2549:5;2524:31;:::i;:::-;2574:5;2338:247;-1:-1:-1;;;2338:247:32:o;2590:611::-;2780:2;2792:21;;;2862:13;;2765:18;;;2884:22;;;2732:4;;2963:15;;;2937:2;2922:18;;;2732:4;3006:169;3020:6;3017:1;3014:13;3006:169;;;3081:13;;3069:26;;3124:2;3150:15;;;;3115:12;;;;3042:1;3035:9;3006:169;;;-1:-1:-1;3192:3:32;;2590:611;-1:-1:-1;;;;;2590:611:32:o;3622:251::-;3692:6;3745:2;3733:9;3724:7;3720:23;3716:32;3713:52;;;3761:1;3758;3751:12;3713:52;3793:9;3787:16;3812:31;3837:5;3812:31;:::i;3878:371::-;-1:-1:-1;;;;;4098:32:32;;;4080:51;;4167:32;;;;4162:2;4147:18;;4140:60;4231:2;4216:18;;4209:34;;;;4068:2;4053:18;;3878:371::o;4254:225::-;4321:9;;;4342:11;;;4339:134;;;4395:10;4390:3;4386:20;4383:1;4376:31;4430:4;4427:1;4420:15;4458:4;4455:1;4448:15;4339:134;4254:225;;;;:::o;4484:127::-;4545:10;4540:3;4536:20;4533:1;4526:31;4576:4;4573:1;4566:15;4600:4;4597:1;4590:15;4616:127;4677:10;4672:3;4668:20;4665:1;4658:31;4708:4;4705:1;4698:15;4732:4;4729:1;4722:15"},"methodIdentifiers":{"acceptOwnership()":"79ba5097","emergencyWithdraw(uint256,address)":"2f940c70","getWalletStakedTokens(address)":"2b4bc300","isStaked(uint256)":"baa51f86","nftContract()":"d56d229d","onERC721Received(address,address,uint256,bytes)":"150b7a02","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","rescueUntrackedToken(uint256,address)":"0fa6f642","stake(uint256)":"a694fc3a","stakedAtOf(uint256)":"1b3253b0","stakedOwnerOf(uint256)":"1dcac94d","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","unstake(uint256)":"2e17de78"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nftContract_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEmergencyRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOriginalStaker\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotTokenOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyStaked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenIsTracked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenNotHeld\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenNotStaked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedNFTContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originalStaker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnAt\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakedAt\",\"type\":\"uint256\"}],\"name\":\"TokenStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstakedAt\",\"type\":\"uint256\"}],\"name\":\"TokenUnstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rescuedAt\",\"type\":\"uint256\"}],\"name\":\"UntrackedTokenRescued\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"}],\"name\":\"getWalletStakedTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"isStaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nftContract\",\"outputs\":[{\"internalType\":\"contract IERC721\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"rescueUntrackedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"stakedAtOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"stakedOwnerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Pause gates new staking only. Unstaking is always available so players can always recover their assets. emergencyWithdraw is an explicit, named, and event-emitting admin path \\u2014 it is not hidden.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"EmergencyWithdrawn(address,uint256,address,uint256)\":{\"params\":{\"originalStaker\":\"The wallet that originally staked the token.\",\"recipient\":\"The address that received the token.\",\"tokenId\":\"The affected NFT token ID.\",\"withdrawnAt\":\"Block timestamp at the moment of the withdrawal.\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"TokenStaked(address,uint256,uint256)\":{\"params\":{\"stakedAt\":\"Block timestamp at the moment of staking.\",\"staker\":\"The wallet address that owns and staked the token.\",\"tokenId\":\"The staked NFT token ID.\"}},\"TokenUnstaked(address,uint256,uint256)\":{\"params\":{\"staker\":\"The wallet address that originally staked (and receives back) the token.\",\"tokenId\":\"The unstaked NFT token ID.\",\"unstakedAt\":\"Block timestamp at the moment of unstaking.\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"params\":{\"initialOwner_\":\"Initial contract owner. Mainnet deployments should use a multisig.\",\"nftContract_\":\"Address of the TricksforBoosterNFT contract.\"}},\"emergencyWithdraw(uint256,address)\":{\"params\":{\"recipient\":\"The address to send the token to.\",\"tokenId\":\"The token ID to withdraw.\"}},\"getWalletStakedTokens(address)\":{\"details\":\"Ordering is not guaranteed. Tokens are stored in an array with swap-and-pop removal: when a token is unstaked or emergency-withdrawn, the last element in the array takes its position. Do not rely on index stability across state-changing transactions.\",\"params\":{\"wallet\":\"The address to query.\"}},\"isStaked(uint256)\":{\"params\":{\"tokenId\":\"The token ID to query.\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"params\":{\"from\":\"The address that previously owned the token (recorded as staker).\",\"tokenId\":\"The token ID being transferred.\"},\"returns\":{\"_0\":\"The ERC-721 receiver magic value confirming acceptance.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"rescueUntrackedToken(uint256,address)\":{\"params\":{\"recipient\":\"The non-zero address that receives the recovered token.\",\"tokenId\":\"The untracked token held by this contract.\"}},\"stake(uint256)\":{\"params\":{\"tokenId\":\"The token ID to stake.\"}},\"stakedAtOf(uint256)\":{\"params\":{\"tokenId\":\"The token ID to query.\"}},\"stakedOwnerOf(uint256)\":{\"params\":{\"tokenId\":\"The token ID to query.\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"},\"unstake(uint256)\":{\"params\":{\"tokenId\":\"The token ID to unstake.\"}}},\"stateVariables\":{\"_stakedAt\":{\"details\":\"Maps tokenId \\u2192 block.timestamp at which the token was staked.\"},\"_stakedBy\":{\"details\":\"Maps tokenId \\u2192 original staker address. Zero address means not staked.\"},\"_walletTokenIds\":{\"details\":\"Maps staker address \\u2192 list of currently staked token IDs.\"},\"_walletTokenIndex\":{\"details\":\"Maps tokenId \\u2192 index in _walletTokenIds[staker] for O(1) removal.\"}},\"title\":\"TricksforBoosterStaking\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidEmergencyRecipient()\":[{\"notice\":\"Emergency withdrawals can only return a tracked token to its original staker.\"}],\"NotOriginalStaker()\":[{\"notice\":\"Caller is not the original staker of this token.\"}],\"NotTokenOwner()\":[{\"notice\":\"Caller does not own the token they are trying to stake.\"}],\"TokenAlreadyStaked()\":[{\"notice\":\"Token is already staked.\"}],\"TokenIsTracked()\":[{\"notice\":\"Rescue is only available for tokens that have no staking record.\"}],\"TokenNotHeld()\":[{\"notice\":\"Rescue requires the staking contract to currently hold the token.\"}],\"TokenNotStaked()\":[{\"notice\":\"Token is not currently staked.\"}],\"UnsupportedNFTContract()\":[{\"notice\":\"Token received from an unsupported NFT contract.\"}],\"ZeroAddress()\":[{\"notice\":\"Zero address supplied where a non-zero address is required.\"}]},\"events\":{\"EmergencyWithdrawn(address,uint256,address,uint256)\":{\"notice\":\"Emitted when an owner-initiated emergency withdrawal occurs. This is the only admin path that moves a user's staked NFT without their consent. It is explicitly named, event-emitting, and documented here.\"},\"TokenStaked(address,uint256,uint256)\":{\"notice\":\"Emitted when a token is successfully staked.\"},\"TokenUnstaked(address,uint256,uint256)\":{\"notice\":\"Emitted when a token is successfully unstaked.\"},\"UntrackedTokenRescued(address,uint256,uint256)\":{\"notice\":\"Emitted when an untracked NFT sent with transferFrom is recovered by the owner.\"}},\"kind\":\"user\",\"methods\":{\"emergencyWithdraw(uint256,address)\":{\"notice\":\"Emergency withdrawal of a staked token by the contract owner. Use only in exceptional circumstances (e.g., critical contract bug). This is the only admin path that moves a user's staked NFT without their direct action. It is explicitly named, emits EmergencyWithdrawn, and is documented in this contract and the project's architecture documentation.\"},\"getWalletStakedTokens(address)\":{\"notice\":\"Returns the list of token IDs currently staked by the given wallet.\"},\"isStaked(uint256)\":{\"notice\":\"Returns true if the given token is currently staked.\"},\"nftContract()\":{\"notice\":\"The ERC-721 NFT contract whose tokens this staking contract manages.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handles the receipt of a Booster NFT transferred via safeTransferFrom. Only accepts tokens from the configured nftContract; reverts for all others. Records `from` as the staker and emits TokenStaked \\u2014 functionally equivalent to calling stake() but triggered by safeTransferFrom rather than approve+stake. Not available while paused (mirrors stake() pause behaviour).\"},\"pause()\":{\"notice\":\"Pauses new staking. Unstaking remains available while paused.\"},\"rescueUntrackedToken(uint256,address)\":{\"notice\":\"Recovers an NFT that was sent directly with transferFrom and therefore did not invoke onERC721Received or create a staking record.\"},\"stake(uint256)\":{\"notice\":\"Stakes a Booster NFT. The caller must have first approved this contract (or set approval for all) on the NFT contract. Custody of the token is transferred to this contract.\"},\"stakedAtOf(uint256)\":{\"notice\":\"Returns the block timestamp at which a token was staked. Returns zero if the token is not currently staked.\"},\"stakedOwnerOf(uint256)\":{\"notice\":\"Returns the original staker of a currently staked token. Returns the zero address if the token is not staked.\"},\"unpause()\":{\"notice\":\"Unpauses staking.\"},\"unstake(uint256)\":{\"notice\":\"Unstakes a Booster NFT and returns it to the original staker. Always available \\u2014 not gated by pause \\u2014 so players can always recover assets.\"}},\"notice\":\"Custodial staking contract for Tricksfor Booster NFTs. Players transfer their NFTs into this contract to stake them and retrieve them when they unstake. Staking state and timestamps are recorded on-chain via integration-critical events consumed by the Tricksfor backend indexer. Responsibilities: - Accepting NFT custody during staking - Emitting TokenStaked / TokenUnstaked events for backend log processing - Providing read methods (isStaked, stakedOwnerOf) consistent with event state Not responsible for: - Reward calculation or distribution - Booster tier or multiplier classification - Game logic or settlement\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TricksforBoosterStaking.sol\":\"TricksforBoosterStaking\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c\",\"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99\",\"dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"contracts/TricksforBoosterStaking.sol\":{\"keccak256\":\"0x3b9c56329e3811131ccbbafcdd6bd37f1e96603871606b08e3b3b078fb264854\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be76e0edbb731951fd5a577642d2d226dd1b5ce7b3100887f14983d22a0e9b16\",\"dweb:/ipfs/QmVbA1mdJuYNW85tbaeSwztcejg7fpRit3K1beVtLAMX2L\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":387,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":535,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_pendingOwner","offset":0,"slot":"1","type":"t_address"},{"astId":4386,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_paused","offset":20,"slot":"1","type":"t_bool"},{"astId":10257,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_stakedBy","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":10262,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_stakedAt","offset":0,"slot":"3","type":"t_mapping(t_uint256,t_uint256)"},{"astId":10268,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_walletTokenIds","offset":0,"slot":"4","type":"t_mapping(t_address,t_array(t_uint256)dyn_storage)"},{"astId":10273,"contract":"contracts/TricksforBoosterStaking.sol:TricksforBoosterStaking","label":"_walletTokenIndex","offset":0,"slot":"5","type":"t_mapping(t_uint256,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)dyn_storage":{"base":"t_uint256","encoding":"dynamic_array","label":"uint256[]","numberOfBytes":"32"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_array(t_uint256)dyn_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256[])","numberOfBytes":"32","value":"t_array(t_uint256)dyn_storage"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"errors":{"InvalidEmergencyRecipient()":[{"notice":"Emergency withdrawals can only return a tracked token to its original staker."}],"NotOriginalStaker()":[{"notice":"Caller is not the original staker of this token."}],"NotTokenOwner()":[{"notice":"Caller does not own the token they are trying to stake."}],"TokenAlreadyStaked()":[{"notice":"Token is already staked."}],"TokenIsTracked()":[{"notice":"Rescue is only available for tokens that have no staking record."}],"TokenNotHeld()":[{"notice":"Rescue requires the staking contract to currently hold the token."}],"TokenNotStaked()":[{"notice":"Token is not currently staked."}],"UnsupportedNFTContract()":[{"notice":"Token received from an unsupported NFT contract."}],"ZeroAddress()":[{"notice":"Zero address supplied where a non-zero address is required."}]},"events":{"EmergencyWithdrawn(address,uint256,address,uint256)":{"notice":"Emitted when an owner-initiated emergency withdrawal occurs. This is the only admin path that moves a user's staked NFT without their consent. It is explicitly named, event-emitting, and documented here."},"TokenStaked(address,uint256,uint256)":{"notice":"Emitted when a token is successfully staked."},"TokenUnstaked(address,uint256,uint256)":{"notice":"Emitted when a token is successfully unstaked."},"UntrackedTokenRescued(address,uint256,uint256)":{"notice":"Emitted when an untracked NFT sent with transferFrom is recovered by the owner."}},"kind":"user","methods":{"emergencyWithdraw(uint256,address)":{"notice":"Emergency withdrawal of a staked token by the contract owner. Use only in exceptional circumstances (e.g., critical contract bug). This is the only admin path that moves a user's staked NFT without their direct action. It is explicitly named, emits EmergencyWithdrawn, and is documented in this contract and the project's architecture documentation."},"getWalletStakedTokens(address)":{"notice":"Returns the list of token IDs currently staked by the given wallet."},"isStaked(uint256)":{"notice":"Returns true if the given token is currently staked."},"nftContract()":{"notice":"The ERC-721 NFT contract whose tokens this staking contract manages."},"onERC721Received(address,address,uint256,bytes)":{"notice":"Handles the receipt of a Booster NFT transferred via safeTransferFrom. Only accepts tokens from the configured nftContract; reverts for all others. Records `from` as the staker and emits TokenStaked — functionally equivalent to calling stake() but triggered by safeTransferFrom rather than approve+stake. Not available while paused (mirrors stake() pause behaviour)."},"pause()":{"notice":"Pauses new staking. Unstaking remains available while paused."},"rescueUntrackedToken(uint256,address)":{"notice":"Recovers an NFT that was sent directly with transferFrom and therefore did not invoke onERC721Received or create a staking record."},"stake(uint256)":{"notice":"Stakes a Booster NFT. The caller must have first approved this contract (or set approval for all) on the NFT contract. Custody of the token is transferred to this contract."},"stakedAtOf(uint256)":{"notice":"Returns the block timestamp at which a token was staked. Returns zero if the token is not currently staked."},"stakedOwnerOf(uint256)":{"notice":"Returns the original staker of a currently staked token. Returns the zero address if the token is not staked."},"unpause()":{"notice":"Unpauses staking."},"unstake(uint256)":{"notice":"Unstakes a Booster NFT and returns it to the original staker. Always available — not gated by pause — so players can always recover assets."}},"notice":"Custodial staking contract for Tricksfor Booster NFTs. Players transfer their NFTs into this contract to stake them and retrieve them when they unstake. Staking state and timestamps are recorded on-chain via integration-critical events consumed by the Tricksfor backend indexer. Responsibilities: - Accepting NFT custody during staking - Emitting TokenStaked / TokenUnstaked events for backend log processing - Providing read methods (isStaked, stakedOwnerOf) consistent with event state Not responsible for: - Reward calculation or distribution - Booster tier or multiplier classification - Game logic or settlement","version":1}}},"contracts/test/ReentrantERC721.sol":{"IReentrantStakingTarget":{"abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"stake(uint256)":"a694fc3a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ReentrantERC721.sol\":\"IReentrantStakingTarget\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/test/ReentrantERC721.sol\":{\"keccak256\":\"0x8ebe653ea43a215fd1ec9d1dcd88f347d972fb07a16665155eabcbfb1c8b2d3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a552d63277936a9176f59919e274068c73d1b98e5f4fd693ecf93d35f7e1d31\",\"dweb:/ipfs/QmWrZLhASr37r5BqNTLAAaySLvvsV2LvCpMtyogUu6BQvC\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"ReentrantERC721":{"abi":[{"inputs":[{"internalType":"address","name":"staking_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"attackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableAttack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staking","outputs":[{"internalType":"contract IReentrantStakingTarget","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Test-only NFT double that calls stake again from transferFrom.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_10866":{"entryPoint":null,"id":10866,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":59,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:306:32","nodeType":"YulBlock","src":"0:306:32","statements":[{"nativeSrc":"6:3:32","nodeType":"YulBlock","src":"6:3:32","statements":[]},{"body":{"nativeSrc":"95:209:32","nodeType":"YulBlock","src":"95:209:32","statements":[{"body":{"nativeSrc":"141:16:32","nodeType":"YulBlock","src":"141:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:32","nodeType":"YulLiteral","src":"150:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:32","nodeType":"YulLiteral","src":"153:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:32","nodeType":"YulIdentifier","src":"143:6:32"},"nativeSrc":"143:12:32","nodeType":"YulFunctionCall","src":"143:12:32"},"nativeSrc":"143:12:32","nodeType":"YulExpressionStatement","src":"143:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:32","nodeType":"YulIdentifier","src":"116:7:32"},{"name":"headStart","nativeSrc":"125:9:32","nodeType":"YulIdentifier","src":"125:9:32"}],"functionName":{"name":"sub","nativeSrc":"112:3:32","nodeType":"YulIdentifier","src":"112:3:32"},"nativeSrc":"112:23:32","nodeType":"YulFunctionCall","src":"112:23:32"},{"kind":"number","nativeSrc":"137:2:32","nodeType":"YulLiteral","src":"137:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:32","nodeType":"YulIdentifier","src":"108:3:32"},"nativeSrc":"108:32:32","nodeType":"YulFunctionCall","src":"108:32:32"},"nativeSrc":"105:52:32","nodeType":"YulIf","src":"105:52:32"},{"nativeSrc":"166:29:32","nodeType":"YulVariableDeclaration","src":"166:29:32","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:32","nodeType":"YulIdentifier","src":"185:9:32"}],"functionName":{"name":"mload","nativeSrc":"179:5:32","nodeType":"YulIdentifier","src":"179:5:32"},"nativeSrc":"179:16:32","nodeType":"YulFunctionCall","src":"179:16:32"},"variables":[{"name":"value","nativeSrc":"170:5:32","nodeType":"YulTypedName","src":"170:5:32","type":""}]},{"body":{"nativeSrc":"258:16:32","nodeType":"YulBlock","src":"258:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:32","nodeType":"YulLiteral","src":"267:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:32","nodeType":"YulLiteral","src":"270:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:32","nodeType":"YulIdentifier","src":"260:6:32"},"nativeSrc":"260:12:32","nodeType":"YulFunctionCall","src":"260:12:32"},"nativeSrc":"260:12:32","nodeType":"YulExpressionStatement","src":"260:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:32","nodeType":"YulIdentifier","src":"217:5:32"},{"arguments":[{"name":"value","nativeSrc":"228:5:32","nodeType":"YulIdentifier","src":"228:5:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:32","nodeType":"YulLiteral","src":"243:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:32","nodeType":"YulLiteral","src":"248:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:32","nodeType":"YulIdentifier","src":"239:3:32"},"nativeSrc":"239:11:32","nodeType":"YulFunctionCall","src":"239:11:32"},{"kind":"number","nativeSrc":"252:1:32","nodeType":"YulLiteral","src":"252:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:32","nodeType":"YulIdentifier","src":"235:3:32"},"nativeSrc":"235:19:32","nodeType":"YulFunctionCall","src":"235:19:32"}],"functionName":{"name":"and","nativeSrc":"224:3:32","nodeType":"YulIdentifier","src":"224:3:32"},"nativeSrc":"224:31:32","nodeType":"YulFunctionCall","src":"224:31:32"}],"functionName":{"name":"eq","nativeSrc":"214:2:32","nodeType":"YulIdentifier","src":"214:2:32"},"nativeSrc":"214:42:32","nodeType":"YulFunctionCall","src":"214:42:32"}],"functionName":{"name":"iszero","nativeSrc":"207:6:32","nodeType":"YulIdentifier","src":"207:6:32"},"nativeSrc":"207:50:32","nodeType":"YulFunctionCall","src":"207:50:32"},"nativeSrc":"204:70:32","nodeType":"YulIf","src":"204:70:32"},{"nativeSrc":"283:15:32","nodeType":"YulAssignment","src":"283:15:32","value":{"name":"value","nativeSrc":"293:5:32","nodeType":"YulIdentifier","src":"293:5:32"},"variableNames":[{"name":"value0","nativeSrc":"283:6:32","nodeType":"YulIdentifier","src":"283:6:32"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:32","nodeType":"YulTypedName","src":"61:9:32","type":""},{"name":"dataEnd","nativeSrc":"72:7:32","nodeType":"YulTypedName","src":"72:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:32","nodeType":"YulTypedName","src":"84:6:32","type":""}],"src":"14:290:32"}]},"contents":"{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":32,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a0604052348015600e575f80fd5b506040516103ec3803806103ec833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516103676100855f395f8181610105015261020f01526103675ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c806321f161931461006457806323b872dd146100b257806340c10f19146100c55780634cf088d9146101005780636352211e14610144578063d7751b851461016c575b5f80fd5b6100b06001805460ff1916811790556103e75f9081526020527f332eac5de6beffe8ee7761a0342c75594c3acb5fdde0a2555227e56aa65d414180546001600160a01b03191630179055565b005b6100b06100c03660046102b8565b610189565b6100b06100d33660046102f2565b5f90815260208190526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6101277f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61012761015236600461031a565b5f908152602081905260409020546001600160a01b031690565b6001546101799060ff1681565b604051901515815260200161013b565b5f818152602081905260409020546001600160a01b038481169116146101e35760405162461bcd60e51b815260206004820152600b60248201526a3bb937b7339037bbb732b960a91b604482015260640160405180910390fd5b60015460ff161561026f576001805460ff1916905560405163534a7e1d60e11b81526103e760048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a694fc3a906024015f604051808303815f87803b158015610258575f80fd5b505af115801561026a573d5f803e3d5ffd5b505050505b5f90815260208190526040902080546001600160a01b0319166001600160a01b039290921691909117905550565b80356001600160a01b03811681146102b3575f80fd5b919050565b5f805f606084860312156102ca575f80fd5b6102d38461029d565b92506102e16020850161029d565b929592945050506040919091013590565b5f8060408385031215610303575f80fd5b61030c8361029d565b946020939093013593505050565b5f6020828403121561032a575f80fd5b503591905056fea2646970667358221220be094efbcfd99befb0cdd910374618b8ffce949b88e6c540d277bc50eb87bb4064736f6c634300081a0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3EC CODESIZE SUB DUP1 PUSH2 0x3EC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH1 0x2B SWAP2 PUSH1 0x3B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x66 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x4A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH1 0x5F JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x367 PUSH2 0x85 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x105 ADD MSTORE PUSH2 0x20F ADD MSTORE PUSH2 0x367 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x60 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x21F16193 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xD7751B85 EQ PUSH2 0x16C JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH2 0x3E7 PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 MSTORE PUSH32 0x332EAC5DE6BEFFE8EE7761A0342C75594C3ACB5FDDE0A2555227E56AA65D4141 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND ADDRESS OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B8 JUMP JUMPDEST PUSH2 0x189 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xD3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x127 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x127 PUSH2 0x152 CALLDATASIZE PUSH1 0x4 PUSH2 0x31A JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x179 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x13B JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x1E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x3BB937B7339037BBB732B9 PUSH1 0xA9 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x26F JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH4 0x534A7E1D PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x3E7 PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xA694FC3A SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x258 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CA JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x2D3 DUP5 PUSH2 0x29D JUMP JUMPDEST SWAP3 POP PUSH2 0x2E1 PUSH1 0x20 DUP6 ADD PUSH2 0x29D JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x303 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x30C DUP4 PUSH2 0x29D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE MULMOD 0x4E 0xFB 0xCF 0xD9 SWAP12 0xEF 0xB0 0xCD 0xD9 LT CALLDATACOPY CHAINID XOR 0xB8 SELFDESTRUCT 0xCE SWAP5 SWAP12 DUP9 0xE6 0xC5 BLOCKHASH 0xD2 PUSH24 0xBC50EB87BB4064736F6C634300081A003300000000000000 ","sourceMap":"215:876:31:-:0;;;395:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;435:43:31;;;215:876;;14:290:32;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:32;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:32:o;:::-;215:876:31;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@attackEnabled_10854":{"entryPoint":null,"id":10854,"parameterSlots":0,"returnSlots":0},"@enableAttack_10897":{"entryPoint":null,"id":10897,"parameterSlots":0,"returnSlots":0},"@mint_10880":{"entryPoint":null,"id":10880,"parameterSlots":2,"returnSlots":0},"@ownerOf_10909":{"entryPoint":null,"id":10909,"parameterSlots":1,"returnSlots":1},"@staking_10852":{"entryPoint":null,"id":10852,"parameterSlots":0,"returnSlots":0},"@transferFrom_10947":{"entryPoint":393,"id":10947,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":669,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":696,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":754,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":794,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IReentrantStakingTarget_$10844__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_999_by_1__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1910a1b31627cb44672fa41011dea21df90d76304ea37cd5fe77e38d944205f7__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:2277:32","nodeType":"YulBlock","src":"0:2277:32","statements":[{"nativeSrc":"6:3:32","nodeType":"YulBlock","src":"6:3:32","statements":[]},{"body":{"nativeSrc":"63:124:32","nodeType":"YulBlock","src":"63:124:32","statements":[{"nativeSrc":"73:29:32","nodeType":"YulAssignment","src":"73:29:32","value":{"arguments":[{"name":"offset","nativeSrc":"95:6:32","nodeType":"YulIdentifier","src":"95:6:32"}],"functionName":{"name":"calldataload","nativeSrc":"82:12:32","nodeType":"YulIdentifier","src":"82:12:32"},"nativeSrc":"82:20:32","nodeType":"YulFunctionCall","src":"82:20:32"},"variableNames":[{"name":"value","nativeSrc":"73:5:32","nodeType":"YulIdentifier","src":"73:5:32"}]},{"body":{"nativeSrc":"165:16:32","nodeType":"YulBlock","src":"165:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"174:1:32","nodeType":"YulLiteral","src":"174:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"177:1:32","nodeType":"YulLiteral","src":"177:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"167:6:32","nodeType":"YulIdentifier","src":"167:6:32"},"nativeSrc":"167:12:32","nodeType":"YulFunctionCall","src":"167:12:32"},"nativeSrc":"167:12:32","nodeType":"YulExpressionStatement","src":"167:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"124:5:32","nodeType":"YulIdentifier","src":"124:5:32"},{"arguments":[{"name":"value","nativeSrc":"135:5:32","nodeType":"YulIdentifier","src":"135:5:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"150:3:32","nodeType":"YulLiteral","src":"150:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"155:1:32","nodeType":"YulLiteral","src":"155:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"146:3:32","nodeType":"YulIdentifier","src":"146:3:32"},"nativeSrc":"146:11:32","nodeType":"YulFunctionCall","src":"146:11:32"},{"kind":"number","nativeSrc":"159:1:32","nodeType":"YulLiteral","src":"159:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"142:3:32","nodeType":"YulIdentifier","src":"142:3:32"},"nativeSrc":"142:19:32","nodeType":"YulFunctionCall","src":"142:19:32"}],"functionName":{"name":"and","nativeSrc":"131:3:32","nodeType":"YulIdentifier","src":"131:3:32"},"nativeSrc":"131:31:32","nodeType":"YulFunctionCall","src":"131:31:32"}],"functionName":{"name":"eq","nativeSrc":"121:2:32","nodeType":"YulIdentifier","src":"121:2:32"},"nativeSrc":"121:42:32","nodeType":"YulFunctionCall","src":"121:42:32"}],"functionName":{"name":"iszero","nativeSrc":"114:6:32","nodeType":"YulIdentifier","src":"114:6:32"},"nativeSrc":"114:50:32","nodeType":"YulFunctionCall","src":"114:50:32"},"nativeSrc":"111:70:32","nodeType":"YulIf","src":"111:70:32"}]},"name":"abi_decode_address","nativeSrc":"14:173:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"42:6:32","nodeType":"YulTypedName","src":"42:6:32","type":""}],"returnVariables":[{"name":"value","nativeSrc":"53:5:32","nodeType":"YulTypedName","src":"53:5:32","type":""}],"src":"14:173:32"},{"body":{"nativeSrc":"296:270:32","nodeType":"YulBlock","src":"296:270:32","statements":[{"body":{"nativeSrc":"342:16:32","nodeType":"YulBlock","src":"342:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"351:1:32","nodeType":"YulLiteral","src":"351:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"354:1:32","nodeType":"YulLiteral","src":"354:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"344:6:32","nodeType":"YulIdentifier","src":"344:6:32"},"nativeSrc":"344:12:32","nodeType":"YulFunctionCall","src":"344:12:32"},"nativeSrc":"344:12:32","nodeType":"YulExpressionStatement","src":"344:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"317:7:32","nodeType":"YulIdentifier","src":"317:7:32"},{"name":"headStart","nativeSrc":"326:9:32","nodeType":"YulIdentifier","src":"326:9:32"}],"functionName":{"name":"sub","nativeSrc":"313:3:32","nodeType":"YulIdentifier","src":"313:3:32"},"nativeSrc":"313:23:32","nodeType":"YulFunctionCall","src":"313:23:32"},{"kind":"number","nativeSrc":"338:2:32","nodeType":"YulLiteral","src":"338:2:32","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"309:3:32","nodeType":"YulIdentifier","src":"309:3:32"},"nativeSrc":"309:32:32","nodeType":"YulFunctionCall","src":"309:32:32"},"nativeSrc":"306:52:32","nodeType":"YulIf","src":"306:52:32"},{"nativeSrc":"367:39:32","nodeType":"YulAssignment","src":"367:39:32","value":{"arguments":[{"name":"headStart","nativeSrc":"396:9:32","nodeType":"YulIdentifier","src":"396:9:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"377:18:32","nodeType":"YulIdentifier","src":"377:18:32"},"nativeSrc":"377:29:32","nodeType":"YulFunctionCall","src":"377:29:32"},"variableNames":[{"name":"value0","nativeSrc":"367:6:32","nodeType":"YulIdentifier","src":"367:6:32"}]},{"nativeSrc":"415:48:32","nodeType":"YulAssignment","src":"415:48:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"448:9:32","nodeType":"YulIdentifier","src":"448:9:32"},{"kind":"number","nativeSrc":"459:2:32","nodeType":"YulLiteral","src":"459:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"444:3:32","nodeType":"YulIdentifier","src":"444:3:32"},"nativeSrc":"444:18:32","nodeType":"YulFunctionCall","src":"444:18:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"425:18:32","nodeType":"YulIdentifier","src":"425:18:32"},"nativeSrc":"425:38:32","nodeType":"YulFunctionCall","src":"425:38:32"},"variableNames":[{"name":"value1","nativeSrc":"415:6:32","nodeType":"YulIdentifier","src":"415:6:32"}]},{"nativeSrc":"472:14:32","nodeType":"YulVariableDeclaration","src":"472:14:32","value":{"kind":"number","nativeSrc":"485:1:32","nodeType":"YulLiteral","src":"485:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"476:5:32","nodeType":"YulTypedName","src":"476:5:32","type":""}]},{"nativeSrc":"495:41:32","nodeType":"YulAssignment","src":"495:41:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"521:9:32","nodeType":"YulIdentifier","src":"521:9:32"},{"kind":"number","nativeSrc":"532:2:32","nodeType":"YulLiteral","src":"532:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"517:3:32","nodeType":"YulIdentifier","src":"517:3:32"},"nativeSrc":"517:18:32","nodeType":"YulFunctionCall","src":"517:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"504:12:32","nodeType":"YulIdentifier","src":"504:12:32"},"nativeSrc":"504:32:32","nodeType":"YulFunctionCall","src":"504:32:32"},"variableNames":[{"name":"value","nativeSrc":"495:5:32","nodeType":"YulIdentifier","src":"495:5:32"}]},{"nativeSrc":"545:15:32","nodeType":"YulAssignment","src":"545:15:32","value":{"name":"value","nativeSrc":"555:5:32","nodeType":"YulIdentifier","src":"555:5:32"},"variableNames":[{"name":"value2","nativeSrc":"545:6:32","nodeType":"YulIdentifier","src":"545:6:32"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"192:374:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"246:9:32","nodeType":"YulTypedName","src":"246:9:32","type":""},{"name":"dataEnd","nativeSrc":"257:7:32","nodeType":"YulTypedName","src":"257:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"269:6:32","nodeType":"YulTypedName","src":"269:6:32","type":""},{"name":"value1","nativeSrc":"277:6:32","nodeType":"YulTypedName","src":"277:6:32","type":""},{"name":"value2","nativeSrc":"285:6:32","nodeType":"YulTypedName","src":"285:6:32","type":""}],"src":"192:374:32"},{"body":{"nativeSrc":"658:213:32","nodeType":"YulBlock","src":"658:213:32","statements":[{"body":{"nativeSrc":"704:16:32","nodeType":"YulBlock","src":"704:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"713:1:32","nodeType":"YulLiteral","src":"713:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"716:1:32","nodeType":"YulLiteral","src":"716:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"706:6:32","nodeType":"YulIdentifier","src":"706:6:32"},"nativeSrc":"706:12:32","nodeType":"YulFunctionCall","src":"706:12:32"},"nativeSrc":"706:12:32","nodeType":"YulExpressionStatement","src":"706:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"679:7:32","nodeType":"YulIdentifier","src":"679:7:32"},{"name":"headStart","nativeSrc":"688:9:32","nodeType":"YulIdentifier","src":"688:9:32"}],"functionName":{"name":"sub","nativeSrc":"675:3:32","nodeType":"YulIdentifier","src":"675:3:32"},"nativeSrc":"675:23:32","nodeType":"YulFunctionCall","src":"675:23:32"},{"kind":"number","nativeSrc":"700:2:32","nodeType":"YulLiteral","src":"700:2:32","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"671:3:32","nodeType":"YulIdentifier","src":"671:3:32"},"nativeSrc":"671:32:32","nodeType":"YulFunctionCall","src":"671:32:32"},"nativeSrc":"668:52:32","nodeType":"YulIf","src":"668:52:32"},{"nativeSrc":"729:39:32","nodeType":"YulAssignment","src":"729:39:32","value":{"arguments":[{"name":"headStart","nativeSrc":"758:9:32","nodeType":"YulIdentifier","src":"758:9:32"}],"functionName":{"name":"abi_decode_address","nativeSrc":"739:18:32","nodeType":"YulIdentifier","src":"739:18:32"},"nativeSrc":"739:29:32","nodeType":"YulFunctionCall","src":"739:29:32"},"variableNames":[{"name":"value0","nativeSrc":"729:6:32","nodeType":"YulIdentifier","src":"729:6:32"}]},{"nativeSrc":"777:14:32","nodeType":"YulVariableDeclaration","src":"777:14:32","value":{"kind":"number","nativeSrc":"790:1:32","nodeType":"YulLiteral","src":"790:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"781:5:32","nodeType":"YulTypedName","src":"781:5:32","type":""}]},{"nativeSrc":"800:41:32","nodeType":"YulAssignment","src":"800:41:32","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"826:9:32","nodeType":"YulIdentifier","src":"826:9:32"},{"kind":"number","nativeSrc":"837:2:32","nodeType":"YulLiteral","src":"837:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"822:3:32","nodeType":"YulIdentifier","src":"822:3:32"},"nativeSrc":"822:18:32","nodeType":"YulFunctionCall","src":"822:18:32"}],"functionName":{"name":"calldataload","nativeSrc":"809:12:32","nodeType":"YulIdentifier","src":"809:12:32"},"nativeSrc":"809:32:32","nodeType":"YulFunctionCall","src":"809:32:32"},"variableNames":[{"name":"value","nativeSrc":"800:5:32","nodeType":"YulIdentifier","src":"800:5:32"}]},{"nativeSrc":"850:15:32","nodeType":"YulAssignment","src":"850:15:32","value":{"name":"value","nativeSrc":"860:5:32","nodeType":"YulIdentifier","src":"860:5:32"},"variableNames":[{"name":"value1","nativeSrc":"850:6:32","nodeType":"YulIdentifier","src":"850:6:32"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"571:300:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"616:9:32","nodeType":"YulTypedName","src":"616:9:32","type":""},{"name":"dataEnd","nativeSrc":"627:7:32","nodeType":"YulTypedName","src":"627:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"639:6:32","nodeType":"YulTypedName","src":"639:6:32","type":""},{"name":"value1","nativeSrc":"647:6:32","nodeType":"YulTypedName","src":"647:6:32","type":""}],"src":"571:300:32"},{"body":{"nativeSrc":"1010:102:32","nodeType":"YulBlock","src":"1010:102:32","statements":[{"nativeSrc":"1020:26:32","nodeType":"YulAssignment","src":"1020:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"1032:9:32","nodeType":"YulIdentifier","src":"1032:9:32"},{"kind":"number","nativeSrc":"1043:2:32","nodeType":"YulLiteral","src":"1043:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1028:3:32","nodeType":"YulIdentifier","src":"1028:3:32"},"nativeSrc":"1028:18:32","nodeType":"YulFunctionCall","src":"1028:18:32"},"variableNames":[{"name":"tail","nativeSrc":"1020:4:32","nodeType":"YulIdentifier","src":"1020:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1062:9:32","nodeType":"YulIdentifier","src":"1062:9:32"},{"arguments":[{"name":"value0","nativeSrc":"1077:6:32","nodeType":"YulIdentifier","src":"1077:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1093:3:32","nodeType":"YulLiteral","src":"1093:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"1098:1:32","nodeType":"YulLiteral","src":"1098:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1089:3:32","nodeType":"YulIdentifier","src":"1089:3:32"},"nativeSrc":"1089:11:32","nodeType":"YulFunctionCall","src":"1089:11:32"},{"kind":"number","nativeSrc":"1102:1:32","nodeType":"YulLiteral","src":"1102:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1085:3:32","nodeType":"YulIdentifier","src":"1085:3:32"},"nativeSrc":"1085:19:32","nodeType":"YulFunctionCall","src":"1085:19:32"}],"functionName":{"name":"and","nativeSrc":"1073:3:32","nodeType":"YulIdentifier","src":"1073:3:32"},"nativeSrc":"1073:32:32","nodeType":"YulFunctionCall","src":"1073:32:32"}],"functionName":{"name":"mstore","nativeSrc":"1055:6:32","nodeType":"YulIdentifier","src":"1055:6:32"},"nativeSrc":"1055:51:32","nodeType":"YulFunctionCall","src":"1055:51:32"},"nativeSrc":"1055:51:32","nodeType":"YulExpressionStatement","src":"1055:51:32"}]},"name":"abi_encode_tuple_t_contract$_IReentrantStakingTarget_$10844__to_t_address__fromStack_reversed","nativeSrc":"876:236:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"979:9:32","nodeType":"YulTypedName","src":"979:9:32","type":""},{"name":"value0","nativeSrc":"990:6:32","nodeType":"YulTypedName","src":"990:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1001:4:32","nodeType":"YulTypedName","src":"1001:4:32","type":""}],"src":"876:236:32"},{"body":{"nativeSrc":"1187:156:32","nodeType":"YulBlock","src":"1187:156:32","statements":[{"body":{"nativeSrc":"1233:16:32","nodeType":"YulBlock","src":"1233:16:32","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1242:1:32","nodeType":"YulLiteral","src":"1242:1:32","type":"","value":"0"},{"kind":"number","nativeSrc":"1245:1:32","nodeType":"YulLiteral","src":"1245:1:32","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1235:6:32","nodeType":"YulIdentifier","src":"1235:6:32"},"nativeSrc":"1235:12:32","nodeType":"YulFunctionCall","src":"1235:12:32"},"nativeSrc":"1235:12:32","nodeType":"YulExpressionStatement","src":"1235:12:32"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1208:7:32","nodeType":"YulIdentifier","src":"1208:7:32"},{"name":"headStart","nativeSrc":"1217:9:32","nodeType":"YulIdentifier","src":"1217:9:32"}],"functionName":{"name":"sub","nativeSrc":"1204:3:32","nodeType":"YulIdentifier","src":"1204:3:32"},"nativeSrc":"1204:23:32","nodeType":"YulFunctionCall","src":"1204:23:32"},{"kind":"number","nativeSrc":"1229:2:32","nodeType":"YulLiteral","src":"1229:2:32","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1200:3:32","nodeType":"YulIdentifier","src":"1200:3:32"},"nativeSrc":"1200:32:32","nodeType":"YulFunctionCall","src":"1200:32:32"},"nativeSrc":"1197:52:32","nodeType":"YulIf","src":"1197:52:32"},{"nativeSrc":"1258:14:32","nodeType":"YulVariableDeclaration","src":"1258:14:32","value":{"kind":"number","nativeSrc":"1271:1:32","nodeType":"YulLiteral","src":"1271:1:32","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1262:5:32","nodeType":"YulTypedName","src":"1262:5:32","type":""}]},{"nativeSrc":"1281:32:32","nodeType":"YulAssignment","src":"1281:32:32","value":{"arguments":[{"name":"headStart","nativeSrc":"1303:9:32","nodeType":"YulIdentifier","src":"1303:9:32"}],"functionName":{"name":"calldataload","nativeSrc":"1290:12:32","nodeType":"YulIdentifier","src":"1290:12:32"},"nativeSrc":"1290:23:32","nodeType":"YulFunctionCall","src":"1290:23:32"},"variableNames":[{"name":"value","nativeSrc":"1281:5:32","nodeType":"YulIdentifier","src":"1281:5:32"}]},{"nativeSrc":"1322:15:32","nodeType":"YulAssignment","src":"1322:15:32","value":{"name":"value","nativeSrc":"1332:5:32","nodeType":"YulIdentifier","src":"1332:5:32"},"variableNames":[{"name":"value0","nativeSrc":"1322:6:32","nodeType":"YulIdentifier","src":"1322:6:32"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1117:226:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1153:9:32","nodeType":"YulTypedName","src":"1153:9:32","type":""},{"name":"dataEnd","nativeSrc":"1164:7:32","nodeType":"YulTypedName","src":"1164:7:32","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1176:6:32","nodeType":"YulTypedName","src":"1176:6:32","type":""}],"src":"1117:226:32"},{"body":{"nativeSrc":"1449:102:32","nodeType":"YulBlock","src":"1449:102:32","statements":[{"nativeSrc":"1459:26:32","nodeType":"YulAssignment","src":"1459:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"1471:9:32","nodeType":"YulIdentifier","src":"1471:9:32"},{"kind":"number","nativeSrc":"1482:2:32","nodeType":"YulLiteral","src":"1482:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1467:3:32","nodeType":"YulIdentifier","src":"1467:3:32"},"nativeSrc":"1467:18:32","nodeType":"YulFunctionCall","src":"1467:18:32"},"variableNames":[{"name":"tail","nativeSrc":"1459:4:32","nodeType":"YulIdentifier","src":"1459:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1501:9:32","nodeType":"YulIdentifier","src":"1501:9:32"},{"arguments":[{"name":"value0","nativeSrc":"1516:6:32","nodeType":"YulIdentifier","src":"1516:6:32"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1532:3:32","nodeType":"YulLiteral","src":"1532:3:32","type":"","value":"160"},{"kind":"number","nativeSrc":"1537:1:32","nodeType":"YulLiteral","src":"1537:1:32","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1528:3:32","nodeType":"YulIdentifier","src":"1528:3:32"},"nativeSrc":"1528:11:32","nodeType":"YulFunctionCall","src":"1528:11:32"},{"kind":"number","nativeSrc":"1541:1:32","nodeType":"YulLiteral","src":"1541:1:32","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1524:3:32","nodeType":"YulIdentifier","src":"1524:3:32"},"nativeSrc":"1524:19:32","nodeType":"YulFunctionCall","src":"1524:19:32"}],"functionName":{"name":"and","nativeSrc":"1512:3:32","nodeType":"YulIdentifier","src":"1512:3:32"},"nativeSrc":"1512:32:32","nodeType":"YulFunctionCall","src":"1512:32:32"}],"functionName":{"name":"mstore","nativeSrc":"1494:6:32","nodeType":"YulIdentifier","src":"1494:6:32"},"nativeSrc":"1494:51:32","nodeType":"YulFunctionCall","src":"1494:51:32"},"nativeSrc":"1494:51:32","nodeType":"YulExpressionStatement","src":"1494:51:32"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1348:203:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1418:9:32","nodeType":"YulTypedName","src":"1418:9:32","type":""},{"name":"value0","nativeSrc":"1429:6:32","nodeType":"YulTypedName","src":"1429:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1440:4:32","nodeType":"YulTypedName","src":"1440:4:32","type":""}],"src":"1348:203:32"},{"body":{"nativeSrc":"1651:92:32","nodeType":"YulBlock","src":"1651:92:32","statements":[{"nativeSrc":"1661:26:32","nodeType":"YulAssignment","src":"1661:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"1673:9:32","nodeType":"YulIdentifier","src":"1673:9:32"},{"kind":"number","nativeSrc":"1684:2:32","nodeType":"YulLiteral","src":"1684:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1669:3:32","nodeType":"YulIdentifier","src":"1669:3:32"},"nativeSrc":"1669:18:32","nodeType":"YulFunctionCall","src":"1669:18:32"},"variableNames":[{"name":"tail","nativeSrc":"1661:4:32","nodeType":"YulIdentifier","src":"1661:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1703:9:32","nodeType":"YulIdentifier","src":"1703:9:32"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1728:6:32","nodeType":"YulIdentifier","src":"1728:6:32"}],"functionName":{"name":"iszero","nativeSrc":"1721:6:32","nodeType":"YulIdentifier","src":"1721:6:32"},"nativeSrc":"1721:14:32","nodeType":"YulFunctionCall","src":"1721:14:32"}],"functionName":{"name":"iszero","nativeSrc":"1714:6:32","nodeType":"YulIdentifier","src":"1714:6:32"},"nativeSrc":"1714:22:32","nodeType":"YulFunctionCall","src":"1714:22:32"}],"functionName":{"name":"mstore","nativeSrc":"1696:6:32","nodeType":"YulIdentifier","src":"1696:6:32"},"nativeSrc":"1696:41:32","nodeType":"YulFunctionCall","src":"1696:41:32"},"nativeSrc":"1696:41:32","nodeType":"YulExpressionStatement","src":"1696:41:32"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1556:187:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1620:9:32","nodeType":"YulTypedName","src":"1620:9:32","type":""},{"name":"value0","nativeSrc":"1631:6:32","nodeType":"YulTypedName","src":"1631:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1642:4:32","nodeType":"YulTypedName","src":"1642:4:32","type":""}],"src":"1556:187:32"},{"body":{"nativeSrc":"1922:161:32","nodeType":"YulBlock","src":"1922:161:32","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1939:9:32","nodeType":"YulIdentifier","src":"1939:9:32"},{"kind":"number","nativeSrc":"1950:2:32","nodeType":"YulLiteral","src":"1950:2:32","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1932:6:32","nodeType":"YulIdentifier","src":"1932:6:32"},"nativeSrc":"1932:21:32","nodeType":"YulFunctionCall","src":"1932:21:32"},"nativeSrc":"1932:21:32","nodeType":"YulExpressionStatement","src":"1932:21:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1973:9:32","nodeType":"YulIdentifier","src":"1973:9:32"},{"kind":"number","nativeSrc":"1984:2:32","nodeType":"YulLiteral","src":"1984:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1969:3:32","nodeType":"YulIdentifier","src":"1969:3:32"},"nativeSrc":"1969:18:32","nodeType":"YulFunctionCall","src":"1969:18:32"},{"kind":"number","nativeSrc":"1989:2:32","nodeType":"YulLiteral","src":"1989:2:32","type":"","value":"11"}],"functionName":{"name":"mstore","nativeSrc":"1962:6:32","nodeType":"YulIdentifier","src":"1962:6:32"},"nativeSrc":"1962:30:32","nodeType":"YulFunctionCall","src":"1962:30:32"},"nativeSrc":"1962:30:32","nodeType":"YulExpressionStatement","src":"1962:30:32"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2012:9:32","nodeType":"YulIdentifier","src":"2012:9:32"},{"kind":"number","nativeSrc":"2023:2:32","nodeType":"YulLiteral","src":"2023:2:32","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2008:3:32","nodeType":"YulIdentifier","src":"2008:3:32"},"nativeSrc":"2008:18:32","nodeType":"YulFunctionCall","src":"2008:18:32"},{"hexValue":"77726f6e67206f776e6572","kind":"string","nativeSrc":"2028:13:32","nodeType":"YulLiteral","src":"2028:13:32","type":"","value":"wrong owner"}],"functionName":{"name":"mstore","nativeSrc":"2001:6:32","nodeType":"YulIdentifier","src":"2001:6:32"},"nativeSrc":"2001:41:32","nodeType":"YulFunctionCall","src":"2001:41:32"},"nativeSrc":"2001:41:32","nodeType":"YulExpressionStatement","src":"2001:41:32"},{"nativeSrc":"2051:26:32","nodeType":"YulAssignment","src":"2051:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2063:9:32","nodeType":"YulIdentifier","src":"2063:9:32"},{"kind":"number","nativeSrc":"2074:2:32","nodeType":"YulLiteral","src":"2074:2:32","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2059:3:32","nodeType":"YulIdentifier","src":"2059:3:32"},"nativeSrc":"2059:18:32","nodeType":"YulFunctionCall","src":"2059:18:32"},"variableNames":[{"name":"tail","nativeSrc":"2051:4:32","nodeType":"YulIdentifier","src":"2051:4:32"}]}]},"name":"abi_encode_tuple_t_stringliteral_1910a1b31627cb44672fa41011dea21df90d76304ea37cd5fe77e38d944205f7__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1748:335:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1899:9:32","nodeType":"YulTypedName","src":"1899:9:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1913:4:32","nodeType":"YulTypedName","src":"1913:4:32","type":""}],"src":"1748:335:32"},{"body":{"nativeSrc":"2199:76:32","nodeType":"YulBlock","src":"2199:76:32","statements":[{"nativeSrc":"2209:26:32","nodeType":"YulAssignment","src":"2209:26:32","value":{"arguments":[{"name":"headStart","nativeSrc":"2221:9:32","nodeType":"YulIdentifier","src":"2221:9:32"},{"kind":"number","nativeSrc":"2232:2:32","nodeType":"YulLiteral","src":"2232:2:32","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2217:3:32","nodeType":"YulIdentifier","src":"2217:3:32"},"nativeSrc":"2217:18:32","nodeType":"YulFunctionCall","src":"2217:18:32"},"variableNames":[{"name":"tail","nativeSrc":"2209:4:32","nodeType":"YulIdentifier","src":"2209:4:32"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2251:9:32","nodeType":"YulIdentifier","src":"2251:9:32"},{"name":"value0","nativeSrc":"2262:6:32","nodeType":"YulIdentifier","src":"2262:6:32"}],"functionName":{"name":"mstore","nativeSrc":"2244:6:32","nodeType":"YulIdentifier","src":"2244:6:32"},"nativeSrc":"2244:25:32","nodeType":"YulFunctionCall","src":"2244:25:32"},"nativeSrc":"2244:25:32","nodeType":"YulExpressionStatement","src":"2244:25:32"}]},"name":"abi_encode_tuple_t_rational_999_by_1__to_t_uint256__fromStack_reversed","nativeSrc":"2088:187:32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2168:9:32","nodeType":"YulTypedName","src":"2168:9:32","type":""},{"name":"value0","nativeSrc":"2179:6:32","nodeType":"YulTypedName","src":"2179:6:32","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2190:4:32","nodeType":"YulTypedName","src":"2190:4:32","type":""}],"src":"2088:187:32"}]},"contents":"{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let value := 0\n value := calldataload(add(headStart, 64))\n value2 := value\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := 0\n value := calldataload(add(headStart, 32))\n value1 := value\n }\n function abi_encode_tuple_t_contract$_IReentrantStakingTarget_$10844__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := 0\n value := calldataload(headStart)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_stringliteral_1910a1b31627cb44672fa41011dea21df90d76304ea37cd5fe77e38d944205f7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 11)\n mstore(add(headStart, 64), \"wrong owner\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_rational_999_by_1__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}","id":32,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"10852":[{"length":32,"start":261},{"length":32,"start":527}]},"linkReferences":{},"object":"608060405234801561000f575f80fd5b5060043610610060575f3560e01c806321f161931461006457806323b872dd146100b257806340c10f19146100c55780634cf088d9146101005780636352211e14610144578063d7751b851461016c575b5f80fd5b6100b06001805460ff1916811790556103e75f9081526020527f332eac5de6beffe8ee7761a0342c75594c3acb5fdde0a2555227e56aa65d414180546001600160a01b03191630179055565b005b6100b06100c03660046102b8565b610189565b6100b06100d33660046102f2565b5f90815260208190526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6101277f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61012761015236600461031a565b5f908152602081905260409020546001600160a01b031690565b6001546101799060ff1681565b604051901515815260200161013b565b5f818152602081905260409020546001600160a01b038481169116146101e35760405162461bcd60e51b815260206004820152600b60248201526a3bb937b7339037bbb732b960a91b604482015260640160405180910390fd5b60015460ff161561026f576001805460ff1916905560405163534a7e1d60e11b81526103e760048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a694fc3a906024015f604051808303815f87803b158015610258575f80fd5b505af115801561026a573d5f803e3d5ffd5b505050505b5f90815260208190526040902080546001600160a01b0319166001600160a01b039290921691909117905550565b80356001600160a01b03811681146102b3575f80fd5b919050565b5f805f606084860312156102ca575f80fd5b6102d38461029d565b92506102e16020850161029d565b929592945050506040919091013590565b5f8060408385031215610303575f80fd5b61030c8361029d565b946020939093013593505050565b5f6020828403121561032a575f80fd5b503591905056fea2646970667358221220be094efbcfd99befb0cdd910374618b8ffce949b88e6c540d277bc50eb87bb4064736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x60 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x21F16193 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xD7751B85 EQ PUSH2 0x16C JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH2 0x3E7 PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 MSTORE PUSH32 0x332EAC5DE6BEFFE8EE7761A0342C75594C3ACB5FDDE0A2555227E56AA65D4141 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND ADDRESS OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B8 JUMP JUMPDEST PUSH2 0x189 JUMP JUMPDEST PUSH2 0xB0 PUSH2 0xD3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F2 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x127 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x127 PUSH2 0x152 CALLDATASIZE PUSH1 0x4 PUSH2 0x31A JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x179 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x13B JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x1E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x3BB937B7339037BBB732B9 PUSH1 0xA9 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x26F JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH4 0x534A7E1D PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x3E7 PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xA694FC3A SWAP1 PUSH1 0x24 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x258 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CA JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x2D3 DUP5 PUSH2 0x29D JUMP JUMPDEST SWAP3 POP PUSH2 0x2E1 PUSH1 0x20 DUP6 ADD PUSH2 0x29D JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x303 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x30C DUP4 PUSH2 0x29D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE MULMOD 0x4E 0xFB 0xCF 0xD9 SWAP12 0xEF 0xB0 0xCD 0xD9 LT CALLDATACOPY CHAINID XOR 0xB8 SELFDESTRUCT 0xCE SWAP5 SWAP12 DUP9 0xE6 0xC5 BLOCKHASH 0xD2 PUSH24 0xBC50EB87BB4064736F6C634300081A003300000000000000 ","sourceMap":"215:876:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;587:108;;646:4;630:20;;-1:-1:-1;;630:20:31;;;;;668:3;630:13;660:12;;;;;;:28;;-1:-1:-1;;;;;;660:28:31;683:4;660:28;;;587:108;;;813:276;;;;;;:::i;:::-;;:::i;491:90::-;;;;;;:::i;:::-;553:7;:16;;;;;;;;;;:21;;-1:-1:-1;;;;;;553:21:31;-1:-1:-1;;;;;553:21:31;;;;;;;;;;491:90;309:48;;;;;;;;-1:-1:-1;;;;;1073:32:32;;;1055:51;;1043:2;1028:18;309:48:31;;;;;;;;701:106;;;;;;:::i;:::-;758:7;784:16;;;;;;;;;;;-1:-1:-1;;;;;784:16:31;;701:106;363:25;;;;;;;;;;;;1721:14:32;;1714:22;1696:41;;1684:2;1669:18;363:25:31;1556:187:32;813:276:31;905:7;:16;;;;;;;;;;;-1:-1:-1;;;;;905:24:31;;;:16;;:24;897:48;;;;-1:-1:-1;;;897:48:31;;1950:2:32;897:48:31;;;1932:21:32;1989:2;1969:18;;;1962:30;-1:-1:-1;;;2008:18:32;;;2001:41;2059:18;;897:48:31;;;;;;;;959:13;;;;955:97;;;988:13;:21;;-1:-1:-1;;988:21:31;;;1023:18;;-1:-1:-1;;;1023:18:31;;1037:3;1023:18;;;2244:25:32;1023:7:31;-1:-1:-1;;;;;1023:13:31;;;;2217:18:32;;1023::31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;955:97;1061:7;:16;;;;;;;;;;:21;;-1:-1:-1;;;;;;1061:21:31;-1:-1:-1;;;;;1061:21:31;;;;;;;;;;-1:-1:-1;813:276:31:o;14:173:32:-;82:20;;-1:-1:-1;;;;;131:31:32;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:374::-;269:6;277;285;338:2;326:9;317:7;313:23;309:32;306:52;;;354:1;351;344:12;306:52;377:29;396:9;377:29;:::i;:::-;367:39;;425:38;459:2;448:9;444:18;425:38;:::i;:::-;192:374;;415:48;;-1:-1:-1;;;532:2:32;517:18;;;;504:32;;192:374::o;571:300::-;639:6;647;700:2;688:9;679:7;675:23;671:32;668:52;;;716:1;713;706:12;668:52;739:29;758:9;739:29;:::i;:::-;729:39;837:2;822:18;;;;809:32;;-1:-1:-1;;;571:300:32:o;1117:226::-;1176:6;1229:2;1217:9;1208:7;1204:23;1200:32;1197:52;;;1245:1;1242;1235:12;1197:52;-1:-1:-1;1290:23:32;;1117:226;-1:-1:-1;1117:226:32:o"},"methodIdentifiers":{"attackEnabled()":"d7751b85","enableAttack()":"21f16193","mint(address,uint256)":"40c10f19","ownerOf(uint256)":"6352211e","staking()":"4cf088d9","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"attackEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableAttack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"staking\",\"outputs\":[{\"internalType\":\"contract IReentrantStakingTarget\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Test-only NFT double that calls stake again from transferFrom.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ReentrantERC721.sol\":\"ReentrantERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/test/ReentrantERC721.sol\":{\"keccak256\":\"0x8ebe653ea43a215fd1ec9d1dcd88f347d972fb07a16665155eabcbfb1c8b2d3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a552d63277936a9176f59919e274068c73d1b98e5f4fd693ecf93d35f7e1d31\",\"dweb:/ipfs/QmWrZLhASr37r5BqNTLAAaySLvvsV2LvCpMtyogUu6BQvC\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":10849,"contract":"contracts/test/ReentrantERC721.sol:ReentrantERC721","label":"_owners","offset":0,"slot":"0","type":"t_mapping(t_uint256,t_address)"},{"astId":10854,"contract":"contracts/test/ReentrantERC721.sol:ReentrantERC721","label":"attackEnabled","offset":0,"slot":"1","type":"t_bool"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}}},"sources":{"@openzeppelin/contracts/access/AccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","exportedSymbols":{"AccessControl":[295],"Context":[4325],"ERC165":[6256],"IAccessControl":[378]},"id":296,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:0"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"./IAccessControl.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":296,"sourceUnit":379,"src":"134:52:0","symbolAliases":[{"foreign":{"id":2,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"142:14:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":296,"sourceUnit":4326,"src":"187:45:0","symbolAliases":[{"foreign":{"id":4,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"195:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../utils/introspection/ERC165.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":296,"sourceUnit":6257,"src":"233:57:0","symbolAliases":[{"foreign":{"id":6,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6256,"src":"241:6:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":9,"name":"Context","nameLocations":["1988:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":4325,"src":"1988:7:0"},"id":10,"nodeType":"InheritanceSpecifier","src":"1988:7:0"},{"baseName":{"id":11,"name":"IAccessControl","nameLocations":["1997:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1997:14:0"},"id":12,"nodeType":"InheritanceSpecifier","src":"1997:14:0"},{"baseName":{"id":13,"name":"ERC165","nameLocations":["2013:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":6256,"src":"2013:6:0"},"id":14,"nodeType":"InheritanceSpecifier","src":"2013:6:0"}],"canonicalName":"AccessControl","contractDependencies":[],"contractKind":"contract","documentation":{"id":8,"nodeType":"StructuredDocumentation","src":"292:1660:0","text":" @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 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 ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\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 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 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."},"fullyImplemented":true,"id":295,"linearizedBaseContracts":[295,6256,6268,378,4325],"name":"AccessControl","nameLocation":"1971:13:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"AccessControl.RoleData","id":21,"members":[{"constant":false,"id":18,"mutability":"mutable","name":"hasRole","nameLocation":"2085:7:0","nodeType":"VariableDeclaration","scope":21,"src":"2052:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":17,"keyName":"account","keyNameLocation":"2068:7:0","keyType":{"id":15,"name":"address","nodeType":"ElementaryTypeName","src":"2060:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2052:32:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":16,"name":"bool","nodeType":"ElementaryTypeName","src":"2079:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":20,"mutability":"mutable","name":"adminRole","nameLocation":"2110:9:0","nodeType":"VariableDeclaration","scope":21,"src":"2102:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2102:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"2033:8:0","nodeType":"StructDefinition","scope":295,"src":"2026:100:0","visibility":"public"},{"constant":false,"id":26,"mutability":"mutable","name":"_roles","nameLocation":"2174:6:0","nodeType":"VariableDeclaration","scope":295,"src":"2132:48:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData)"},"typeName":{"id":25,"keyName":"role","keyNameLocation":"2148:4:0","keyType":{"id":22,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2140:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2132:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":24,"nodeType":"UserDefinedTypeName","pathNode":{"id":23,"name":"RoleData","nameLocations":["2156:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":21,"src":"2156:8:0"},"referencedDeclaration":21,"src":"2156:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage_ptr","typeString":"struct AccessControl.RoleData"}}},"visibility":"private"},{"constant":true,"functionSelector":"a217fddf","id":29,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2211:18:0","nodeType":"VariableDeclaration","scope":295,"src":"2187:49:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":27,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2187:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":28,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2232:4:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"body":{"id":39,"nodeType":"Block","src":"2454:44:0","statements":[{"expression":{"arguments":[{"id":35,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"2475:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":34,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[93,114],"referencedDeclaration":93,"src":"2464:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":36,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2464:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37,"nodeType":"ExpressionStatement","src":"2464:16:0"},{"id":38,"nodeType":"PlaceholderStatement","src":"2490:1:0"}]},"documentation":{"id":30,"nodeType":"StructuredDocumentation","src":"2243:174:0","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role."},"id":40,"name":"onlyRole","nameLocation":"2431:8:0","nodeType":"ModifierDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32,"mutability":"mutable","name":"role","nameLocation":"2448:4:0","nodeType":"VariableDeclaration","scope":40,"src":"2440:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2440:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2439:14:0"},"src":"2422:76:0","virtual":false,"visibility":"internal"},{"baseFunctions":[6255],"body":{"id":61,"nodeType":"Block","src":"2622:111:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":59,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":54,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":49,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43,"src":"2639:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":51,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"2659:14:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$378_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$378_$","typeString":"type(contract IAccessControl)"}],"id":50,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2654:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":52,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2654:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$378","typeString":"type(contract IAccessControl)"}},"id":53,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2675:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"2654:32:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2639:47:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":57,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43,"src":"2714:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":55,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2690:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControl_$295_$","typeString":"type(contract super AccessControl)"}},"id":56,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2696:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":6255,"src":"2690:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":58,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2690:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2639:87:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":48,"id":60,"nodeType":"Return","src":"2632:94:0"}]},"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"2504:22:0","text":"@inheritdoc ERC165"},"functionSelector":"01ffc9a7","id":62,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2540:17:0","nodeType":"FunctionDefinition","overrides":{"id":45,"nodeType":"OverrideSpecifier","overrides":[],"src":"2598:8:0"},"parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43,"mutability":"mutable","name":"interfaceId","nameLocation":"2565:11:0","nodeType":"VariableDeclaration","scope":62,"src":"2558:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":42,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2558:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2557:20:0"},"returnParameters":{"id":48,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":62,"src":"2616:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":46,"name":"bool","nodeType":"ElementaryTypeName","src":"2616:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2615:6:0"},"scope":295,"src":"2531:202:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[345],"body":{"id":79,"nodeType":"Block","src":"2903:53:0","statements":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":72,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"2920:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":74,"indexExpression":{"id":73,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"2927:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2920:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":75,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2933:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":18,"src":"2920:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":77,"indexExpression":{"id":76,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2941:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2920:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":71,"id":78,"nodeType":"Return","src":"2913:36:0"}]},"documentation":{"id":63,"nodeType":"StructuredDocumentation","src":"2739:76:0","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":80,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"2829:7:0","nodeType":"FunctionDefinition","parameters":{"id":68,"nodeType":"ParameterList","parameters":[{"constant":false,"id":65,"mutability":"mutable","name":"role","nameLocation":"2845:4:0","nodeType":"VariableDeclaration","scope":80,"src":"2837:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":64,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2837:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":67,"mutability":"mutable","name":"account","nameLocation":"2859:7:0","nodeType":"VariableDeclaration","scope":80,"src":"2851:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":66,"name":"address","nodeType":"ElementaryTypeName","src":"2851:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2836:31:0"},"returnParameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80,"src":"2897:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":69,"name":"bool","nodeType":"ElementaryTypeName","src":"2897:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2896:6:0"},"scope":295,"src":"2820:136:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":92,"nodeType":"Block","src":"3221:47:0","statements":[{"expression":{"arguments":[{"id":87,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"3242:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":88,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"3248:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3248:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":86,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[93,114],"referencedDeclaration":114,"src":"3231:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":90,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3231:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91,"nodeType":"ExpressionStatement","src":"3231:30:0"}]},"documentation":{"id":81,"nodeType":"StructuredDocumentation","src":"2962:198:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier."},"id":93,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"3174:10:0","nodeType":"FunctionDefinition","parameters":{"id":84,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"mutability":"mutable","name":"role","nameLocation":"3193:4:0","nodeType":"VariableDeclaration","scope":93,"src":"3185:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3185:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3184:14:0"},"returnParameters":{"id":85,"nodeType":"ParameterList","parameters":[],"src":"3221:0:0"},"scope":295,"src":"3165:103:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":113,"nodeType":"Block","src":"3471:124:0","statements":[{"condition":{"id":105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3485:23:0","subExpression":{"arguments":[{"id":102,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"3494:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":103,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"3500:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":101,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"3486:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3486:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":112,"nodeType":"IfStatement","src":"3481:108:0","trueBody":{"id":111,"nodeType":"Block","src":"3510:79:0","statements":[{"errorCall":{"arguments":[{"id":107,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"3564:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":108,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"3573:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":106,"name":"AccessControlUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"3531:32:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$_t_error_$","typeString":"function (address,bytes32) pure returns (error)"}},"id":109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3531:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":110,"nodeType":"RevertStatement","src":"3524:54:0"}]}}]},"documentation":{"id":94,"nodeType":"StructuredDocumentation","src":"3274:119:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`."},"id":114,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"3407:10:0","nodeType":"FunctionDefinition","parameters":{"id":99,"nodeType":"ParameterList","parameters":[{"constant":false,"id":96,"mutability":"mutable","name":"role","nameLocation":"3426:4:0","nodeType":"VariableDeclaration","scope":114,"src":"3418:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":95,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3418:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":98,"mutability":"mutable","name":"account","nameLocation":"3440:7:0","nodeType":"VariableDeclaration","scope":114,"src":"3432:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"3432:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3417:31:0"},"returnParameters":{"id":100,"nodeType":"ParameterList","parameters":[],"src":"3471:0:0"},"scope":295,"src":"3398:197:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[353],"body":{"id":127,"nodeType":"Block","src":"3850:46:0","statements":[{"expression":{"expression":{"baseExpression":{"id":122,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"3867:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":124,"indexExpression":{"id":123,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117,"src":"3874:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3867:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3880:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":20,"src":"3867:22:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":121,"id":126,"nodeType":"Return","src":"3860:29:0"}]},"documentation":{"id":115,"nodeType":"StructuredDocumentation","src":"3601:170:0","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":128,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"3785:12:0","nodeType":"FunctionDefinition","parameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"role","nameLocation":"3806:4:0","nodeType":"VariableDeclaration","scope":128,"src":"3798:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":116,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3798:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3797:14:0"},"returnParameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":128,"src":"3841:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":119,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3841:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3840:9:0"},"scope":295,"src":"3776:120:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[361],"body":{"id":146,"nodeType":"Block","src":"4286:42:0","statements":[{"expression":{"arguments":[{"id":142,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":131,"src":"4307:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":143,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":133,"src":"4313:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":141,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":256,"src":"4296:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4296:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":145,"nodeType":"ExpressionStatement","src":"4296:25:0"}]},"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"3902:285:0","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","id":147,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":137,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":131,"src":"4279:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"4266:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4266:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":139,"kind":"modifierInvocation","modifierName":{"id":135,"name":"onlyRole","nameLocations":["4257:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4257:8:0"},"nodeType":"ModifierInvocation","src":"4257:28:0"}],"name":"grantRole","nameLocation":"4201:9:0","nodeType":"FunctionDefinition","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"role","nameLocation":"4219:4:0","nodeType":"VariableDeclaration","scope":147,"src":"4211:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":130,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4211:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"account","nameLocation":"4233:7:0","nodeType":"VariableDeclaration","scope":147,"src":"4225:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":132,"name":"address","nodeType":"ElementaryTypeName","src":"4225:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4210:31:0"},"returnParameters":{"id":140,"nodeType":"ParameterList","parameters":[],"src":"4286:0:0"},"scope":295,"src":"4192:136:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[369],"body":{"id":165,"nodeType":"Block","src":"4703:43:0","statements":[{"expression":{"arguments":[{"id":161,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"4725:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":162,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":152,"src":"4731:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":160,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"4713:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4713:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":164,"nodeType":"ExpressionStatement","src":"4713:26:0"}]},"documentation":{"id":148,"nodeType":"StructuredDocumentation","src":"4334:269:0","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","id":166,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":156,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"4696:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":155,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"4683:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4683:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":158,"kind":"modifierInvocation","modifierName":{"id":154,"name":"onlyRole","nameLocations":["4674:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4674:8:0"},"nodeType":"ModifierInvocation","src":"4674:28:0"}],"name":"revokeRole","nameLocation":"4617:10:0","nodeType":"FunctionDefinition","parameters":{"id":153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":150,"mutability":"mutable","name":"role","nameLocation":"4636:4:0","nodeType":"VariableDeclaration","scope":166,"src":"4628:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":149,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4628:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":152,"mutability":"mutable","name":"account","nameLocation":"4650:7:0","nodeType":"VariableDeclaration","scope":166,"src":"4642:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":151,"name":"address","nodeType":"ElementaryTypeName","src":"4642:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4627:31:0"},"returnParameters":{"id":159,"nodeType":"ParameterList","parameters":[],"src":"4703:0:0"},"scope":295,"src":"4608:138:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[377],"body":{"id":188,"nodeType":"Block","src":"5373:166:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":174,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5387:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":175,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"5409:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5409:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5387:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":182,"nodeType":"IfStatement","src":"5383:102:0","trueBody":{"id":181,"nodeType":"Block","src":"5423:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":178,"name":"AccessControlBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":308,"src":"5444:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5444:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":180,"nodeType":"RevertStatement","src":"5437:37:0"}]}},{"expression":{"arguments":[{"id":184,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"5507:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":185,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5513:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":183,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"5495:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5495:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":187,"nodeType":"ExpressionStatement","src":"5495:37:0"}]},"documentation":{"id":167,"nodeType":"StructuredDocumentation","src":"4752:537:0","text":" @dev Revokes `role` from the calling account.\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 If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","id":189,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"5303:12:0","nodeType":"FunctionDefinition","parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":169,"mutability":"mutable","name":"role","nameLocation":"5324:4:0","nodeType":"VariableDeclaration","scope":189,"src":"5316:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":168,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5316:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":171,"mutability":"mutable","name":"callerConfirmation","nameLocation":"5338:18:0","nodeType":"VariableDeclaration","scope":189,"src":"5330:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"5330:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5315:42:0"},"returnParameters":{"id":173,"nodeType":"ParameterList","parameters":[],"src":"5373:0:0"},"scope":295,"src":"5294:245:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":216,"nodeType":"Block","src":"5737:174:0","statements":[{"assignments":[198],"declarations":[{"constant":false,"id":198,"mutability":"mutable","name":"previousAdminRole","nameLocation":"5755:17:0","nodeType":"VariableDeclaration","scope":216,"src":"5747:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":197,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5747:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":202,"initialValue":{"arguments":[{"id":200,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"5788:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":199,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"5775:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5775:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5747:46:0"},{"expression":{"id":208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":203,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"5803:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":205,"indexExpression":{"id":204,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"5810:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5803:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5816:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":20,"src":"5803:22:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":207,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"5828:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5803:34:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":209,"nodeType":"ExpressionStatement","src":"5803:34:0"},{"eventCall":{"arguments":[{"id":211,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"5869:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":212,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"5875:17:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":213,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"5894:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":210,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":317,"src":"5852:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5852:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":215,"nodeType":"EmitStatement","src":"5847:57:0"}]},"documentation":{"id":190,"nodeType":"StructuredDocumentation","src":"5545:114:0","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":217,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"5673:13:0","nodeType":"FunctionDefinition","parameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"role","nameLocation":"5695:4:0","nodeType":"VariableDeclaration","scope":217,"src":"5687:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5687:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":194,"mutability":"mutable","name":"adminRole","nameLocation":"5709:9:0","nodeType":"VariableDeclaration","scope":217,"src":"5701:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":193,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5701:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5686:33:0"},"returnParameters":{"id":196,"nodeType":"ParameterList","parameters":[],"src":"5737:0:0"},"scope":295,"src":"5664:247:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":255,"nodeType":"Block","src":"6228:233:0","statements":[{"condition":{"id":231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6242:23:0","subExpression":{"arguments":[{"id":228,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"6251:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":229,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":222,"src":"6257:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":227,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"6243:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6243:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":253,"nodeType":"Block","src":"6418:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6439:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":226,"id":252,"nodeType":"Return","src":"6432:12:0"}]},"id":254,"nodeType":"IfStatement","src":"6238:217:0","trueBody":{"id":250,"nodeType":"Block","src":"6267:145:0","statements":[{"expression":{"id":239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":232,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"6281:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":234,"indexExpression":{"id":233,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"6288:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6281:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6294:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":18,"src":"6281:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":237,"indexExpression":{"id":236,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":222,"src":"6302:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6281:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6313:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6281:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":240,"nodeType":"ExpressionStatement","src":"6281:36:0"},{"eventCall":{"arguments":[{"id":242,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"6348:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":243,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":222,"src":"6354:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":244,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"6363:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6363:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":241,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"6336:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6336:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":247,"nodeType":"EmitStatement","src":"6331:45:0"},{"expression":{"hexValue":"74727565","id":248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6397:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":226,"id":249,"nodeType":"Return","src":"6390:11:0"}]}}]},"documentation":{"id":218,"nodeType":"StructuredDocumentation","src":"5917:223:0","text":" @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"id":256,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"6154:10:0","nodeType":"FunctionDefinition","parameters":{"id":223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":220,"mutability":"mutable","name":"role","nameLocation":"6173:4:0","nodeType":"VariableDeclaration","scope":256,"src":"6165:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":219,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6165:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":222,"mutability":"mutable","name":"account","nameLocation":"6187:7:0","nodeType":"VariableDeclaration","scope":256,"src":"6179:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":221,"name":"address","nodeType":"ElementaryTypeName","src":"6179:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6164:31:0"},"returnParameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":256,"src":"6222:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":224,"name":"bool","nodeType":"ElementaryTypeName","src":"6222:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6221:6:0"},"scope":295,"src":"6145:316:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":293,"nodeType":"Block","src":"6782:233:0","statements":[{"condition":{"arguments":[{"id":267,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"6804:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":268,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"6810:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":266,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"6796:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6796:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":291,"nodeType":"Block","src":"6972:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6993:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":265,"id":290,"nodeType":"Return","src":"6986:12:0"}]},"id":292,"nodeType":"IfStatement","src":"6792:217:0","trueBody":{"id":288,"nodeType":"Block","src":"6820:146:0","statements":[{"expression":{"id":277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":270,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"6834:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$21_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":272,"indexExpression":{"id":271,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"6841:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6834:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$21_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6847:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":18,"src":"6834:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":275,"indexExpression":{"id":274,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"6855:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6834:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6866:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6834:37:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":278,"nodeType":"ExpressionStatement","src":"6834:37:0"},{"eventCall":{"arguments":[{"id":280,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"6902:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":281,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"6908:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":282,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"6917:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6917:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":279,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":335,"src":"6890:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6890:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":285,"nodeType":"EmitStatement","src":"6885:45:0"},{"expression":{"hexValue":"74727565","id":286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6951:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":265,"id":287,"nodeType":"Return","src":"6944:11:0"}]}}]},"documentation":{"id":257,"nodeType":"StructuredDocumentation","src":"6467:226:0","text":" @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"id":294,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"6707:11:0","nodeType":"FunctionDefinition","parameters":{"id":262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":259,"mutability":"mutable","name":"role","nameLocation":"6727:4:0","nodeType":"VariableDeclaration","scope":294,"src":"6719:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":258,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6719:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":261,"mutability":"mutable","name":"account","nameLocation":"6741:7:0","nodeType":"VariableDeclaration","scope":294,"src":"6733:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":260,"name":"address","nodeType":"ElementaryTypeName","src":"6733:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6718:31:0"},"returnParameters":{"id":265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":264,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":294,"src":"6776:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":263,"name":"bool","nodeType":"ElementaryTypeName","src":"6776:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6775:6:0"},"scope":295,"src":"6698:317:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":296,"src":"1953:5064:0","usedErrors":[305,308],"usedEvents":[317,326,335]}],"src":"108:6910:0"},"id":0},"@openzeppelin/contracts/access/IAccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[378]},"id":379,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":297,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"109:24:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":298,"nodeType":"StructuredDocumentation","src":"135:90:1","text":" @dev External interface of AccessControl declared to support ERC-165 detection."},"fullyImplemented":false,"id":378,"linearizedBaseContracts":[378],"name":"IAccessControl","nameLocation":"236:14:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":299,"nodeType":"StructuredDocumentation","src":"257:56:1","text":" @dev The `account` is missing a role."},"errorSelector":"e2517d3f","id":305,"name":"AccessControlUnauthorizedAccount","nameLocation":"324:32:1","nodeType":"ErrorDefinition","parameters":{"id":304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":301,"mutability":"mutable","name":"account","nameLocation":"365:7:1","nodeType":"VariableDeclaration","scope":305,"src":"357:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":300,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":303,"mutability":"mutable","name":"neededRole","nameLocation":"382:10:1","nodeType":"VariableDeclaration","scope":305,"src":"374:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":302,"name":"bytes32","nodeType":"ElementaryTypeName","src":"374:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"356:37:1"},"src":"318:76:1"},{"documentation":{"id":306,"nodeType":"StructuredDocumentation","src":"400:148:1","text":" @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."},"errorSelector":"6697b232","id":308,"name":"AccessControlBadConfirmation","nameLocation":"559:28:1","nodeType":"ErrorDefinition","parameters":{"id":307,"nodeType":"ParameterList","parameters":[],"src":"587:2:1"},"src":"553:37:1"},{"anonymous":false,"documentation":{"id":309,"nodeType":"StructuredDocumentation","src":"596:254:1","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted to signal this."},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":317,"name":"RoleAdminChanged","nameLocation":"861:16:1","nodeType":"EventDefinition","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":311,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"894:4:1","nodeType":"VariableDeclaration","scope":317,"src":"878:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":310,"name":"bytes32","nodeType":"ElementaryTypeName","src":"878:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":313,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"916:17:1","nodeType":"VariableDeclaration","scope":317,"src":"900:33:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":312,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":315,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"951:12:1","nodeType":"VariableDeclaration","scope":317,"src":"935:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":314,"name":"bytes32","nodeType":"ElementaryTypeName","src":"935:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"877:87:1"},"src":"855:110:1"},{"anonymous":false,"documentation":{"id":318,"nodeType":"StructuredDocumentation","src":"971:295:1","text":" @dev Emitted when `account` is granted `role`.\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}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":326,"name":"RoleGranted","nameLocation":"1277:11:1","nodeType":"EventDefinition","parameters":{"id":325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":320,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1305:4:1","nodeType":"VariableDeclaration","scope":326,"src":"1289:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":319,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1289:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":322,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1327:7:1","nodeType":"VariableDeclaration","scope":326,"src":"1311:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":321,"name":"address","nodeType":"ElementaryTypeName","src":"1311:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":324,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1352:6:1","nodeType":"VariableDeclaration","scope":326,"src":"1336:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":323,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1288:71:1"},"src":"1271:89:1"},{"anonymous":false,"documentation":{"id":327,"nodeType":"StructuredDocumentation","src":"1366:275:1","text":" @dev Emitted when `account` is revoked `role`.\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`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":335,"name":"RoleRevoked","nameLocation":"1652:11:1","nodeType":"EventDefinition","parameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":329,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1680:4:1","nodeType":"VariableDeclaration","scope":335,"src":"1664:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1664:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":331,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1702:7:1","nodeType":"VariableDeclaration","scope":335,"src":"1686:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":330,"name":"address","nodeType":"ElementaryTypeName","src":"1686:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":333,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1727:6:1","nodeType":"VariableDeclaration","scope":335,"src":"1711:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":332,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1663:71:1"},"src":"1646:89:1"},{"documentation":{"id":336,"nodeType":"StructuredDocumentation","src":"1741:76:1","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":345,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1831:7:1","nodeType":"FunctionDefinition","parameters":{"id":341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"role","nameLocation":"1847:4:1","nodeType":"VariableDeclaration","scope":345,"src":"1839:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1839:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":340,"mutability":"mutable","name":"account","nameLocation":"1861:7:1","nodeType":"VariableDeclaration","scope":345,"src":"1853:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":339,"name":"address","nodeType":"ElementaryTypeName","src":"1853:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1838:31:1"},"returnParameters":{"id":344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":345,"src":"1893:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":342,"name":"bool","nodeType":"ElementaryTypeName","src":"1893:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1892:6:1"},"scope":378,"src":"1822:77:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":346,"nodeType":"StructuredDocumentation","src":"1905:184:1","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","id":353,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"2103:12:1","nodeType":"FunctionDefinition","parameters":{"id":349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"role","nameLocation":"2124:4:1","nodeType":"VariableDeclaration","scope":353,"src":"2116:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":347,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2116:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2115:14:1"},"returnParameters":{"id":352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":353,"src":"2153:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":350,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2153:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2152:9:1"},"scope":378,"src":"2094:68:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":354,"nodeType":"StructuredDocumentation","src":"2168:239:1","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":361,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2421:9:1","nodeType":"FunctionDefinition","parameters":{"id":359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":356,"mutability":"mutable","name":"role","nameLocation":"2439:4:1","nodeType":"VariableDeclaration","scope":361,"src":"2431:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":355,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2431:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":358,"mutability":"mutable","name":"account","nameLocation":"2453:7:1","nodeType":"VariableDeclaration","scope":361,"src":"2445:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"2445:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2430:31:1"},"returnParameters":{"id":360,"nodeType":"ParameterList","parameters":[],"src":"2470:0:1"},"scope":378,"src":"2412:59:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":362,"nodeType":"StructuredDocumentation","src":"2477:223:1","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":369,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2714:10:1","nodeType":"FunctionDefinition","parameters":{"id":367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":364,"mutability":"mutable","name":"role","nameLocation":"2733:4:1","nodeType":"VariableDeclaration","scope":369,"src":"2725:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2725:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":366,"mutability":"mutable","name":"account","nameLocation":"2747:7:1","nodeType":"VariableDeclaration","scope":369,"src":"2739:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":365,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2724:31:1"},"returnParameters":{"id":368,"nodeType":"ParameterList","parameters":[],"src":"2764:0:1"},"scope":378,"src":"2705:60:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":370,"nodeType":"StructuredDocumentation","src":"2771:491:1","text":" @dev Revokes `role` from the calling account.\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 If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`."},"functionSelector":"36568abe","id":377,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"3276:12:1","nodeType":"FunctionDefinition","parameters":{"id":375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":372,"mutability":"mutable","name":"role","nameLocation":"3297:4:1","nodeType":"VariableDeclaration","scope":377,"src":"3289:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":371,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3289:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":374,"mutability":"mutable","name":"callerConfirmation","nameLocation":"3311:18:1","nodeType":"VariableDeclaration","scope":377,"src":"3303:26:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":373,"name":"address","nodeType":"ElementaryTypeName","src":"3303:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3288:42:1"},"returnParameters":{"id":376,"nodeType":"ParameterList","parameters":[],"src":"3339:0:1"},"scope":378,"src":"3267:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":379,"src":"226:3116:1","usedErrors":[305,308],"usedEvents":[317,326,335]}],"src":"109:3234:1"},"id":1},"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[4325],"Ownable":[526]},"id":527,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":380,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:2"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":382,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":527,"sourceUnit":4326,"src":"128:45:2","symbolAliases":[{"foreign":{"id":381,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"136:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":384,"name":"Context","nameLocations":["692:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":4325,"src":"692:7:2"},"id":385,"nodeType":"InheritanceSpecifier","src":"692:7:2"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":383,"nodeType":"StructuredDocumentation","src":"175:487:2","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":526,"linearizedBaseContracts":[526,4325],"name":"Ownable","nameLocation":"681:7:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":387,"mutability":"mutable","name":"_owner","nameLocation":"722:6:2","nodeType":"VariableDeclaration","scope":526,"src":"706:22:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":386,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"documentation":{"id":388,"nodeType":"StructuredDocumentation","src":"735:85:2","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","id":392,"name":"OwnableUnauthorizedAccount","nameLocation":"831:26:2","nodeType":"ErrorDefinition","parameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":390,"mutability":"mutable","name":"account","nameLocation":"866:7:2","nodeType":"VariableDeclaration","scope":392,"src":"858:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":389,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"857:17:2"},"src":"825:50:2"},{"documentation":{"id":393,"nodeType":"StructuredDocumentation","src":"881:82:2","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","id":397,"name":"OwnableInvalidOwner","nameLocation":"974:19:2","nodeType":"ErrorDefinition","parameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"mutability":"mutable","name":"owner","nameLocation":"1002:5:2","nodeType":"VariableDeclaration","scope":397,"src":"994:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":394,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"993:15:2"},"src":"968:41:2"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":403,"name":"OwnershipTransferred","nameLocation":"1021:20:2","nodeType":"EventDefinition","parameters":{"id":402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":399,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1058:13:2","nodeType":"VariableDeclaration","scope":403,"src":"1042:29:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":398,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":401,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1089:8:2","nodeType":"VariableDeclaration","scope":403,"src":"1073:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":400,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1041:57:2"},"src":"1015:84:2"},{"body":{"id":428,"nodeType":"Block","src":"1259:153:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":409,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"1273:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1289:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":410,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:2","typeDescriptions":{}}},"id":413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1289:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:26:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":423,"nodeType":"IfStatement","src":"1269:95:2","trueBody":{"id":422,"nodeType":"Block","src":"1301:63:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1350:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:2","typeDescriptions":{}}},"id":419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":415,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"1322:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":421,"nodeType":"RevertStatement","src":"1315:38:2"}]}},{"expression":{"arguments":[{"id":425,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"1392:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":424,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"1373:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":427,"nodeType":"ExpressionStatement","src":"1373:32:2"}]},"documentation":{"id":404,"nodeType":"StructuredDocumentation","src":"1105:115:2","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"id":429,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":406,"mutability":"mutable","name":"initialOwner","nameLocation":"1245:12:2","nodeType":"VariableDeclaration","scope":429,"src":"1237:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":405,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:22:2"},"returnParameters":{"id":408,"nodeType":"ParameterList","parameters":[],"src":"1259:0:2"},"scope":526,"src":"1225:187:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":436,"nodeType":"Block","src":"1521:41:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":432,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"1531:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":434,"nodeType":"ExpressionStatement","src":"1531:13:2"},{"id":435,"nodeType":"PlaceholderStatement","src":"1554:1:2"}]},"documentation":{"id":430,"nodeType":"StructuredDocumentation","src":"1418:77:2","text":" @dev Throws if called by any account other than the owner."},"id":437,"name":"onlyOwner","nameLocation":"1509:9:2","nodeType":"ModifierDefinition","parameters":{"id":431,"nodeType":"ParameterList","parameters":[],"src":"1518:2:2"},"src":"1500:62:2","virtual":false,"visibility":"internal"},{"body":{"id":445,"nodeType":"Block","src":"1693:30:2","statements":[{"expression":{"id":443,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"1710:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":442,"id":444,"nodeType":"Return","src":"1703:13:2"}]},"documentation":{"id":438,"nodeType":"StructuredDocumentation","src":"1568:65:2","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":446,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1647:5:2","nodeType":"FunctionDefinition","parameters":{"id":439,"nodeType":"ParameterList","parameters":[],"src":"1652:2:2"},"returnParameters":{"id":442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":446,"src":"1684:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":440,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:9:2"},"scope":526,"src":"1638:85:2","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":462,"nodeType":"Block","src":"1841:117:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":450,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":446,"src":"1855:5:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:7:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":452,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"1866:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":461,"nodeType":"IfStatement","src":"1851:101:2","trueBody":{"id":460,"nodeType":"Block","src":"1880:72:2","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":456,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"1928:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":455,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"1901:26:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":459,"nodeType":"RevertStatement","src":"1894:47:2"}]}}]},"documentation":{"id":447,"nodeType":"StructuredDocumentation","src":"1729:62:2","text":" @dev Throws if the sender is not the owner."},"id":463,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1805:11:2","nodeType":"FunctionDefinition","parameters":{"id":448,"nodeType":"ParameterList","parameters":[],"src":"1816:2:2"},"returnParameters":{"id":449,"nodeType":"ParameterList","parameters":[],"src":"1841:0:2"},"scope":526,"src":"1796:162:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":476,"nodeType":"Block","src":"2347:47:2","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2384:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":470,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:2","typeDescriptions":{}}},"id":473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":469,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"2357:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":475,"nodeType":"ExpressionStatement","src":"2357:30:2"}]},"documentation":{"id":464,"nodeType":"StructuredDocumentation","src":"1964:324:2","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":477,"implemented":true,"kind":"function","modifiers":[{"id":467,"kind":"modifierInvocation","modifierName":{"id":466,"name":"onlyOwner","nameLocations":["2337:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"2337:9:2"},"nodeType":"ModifierInvocation","src":"2337:9:2"}],"name":"renounceOwnership","nameLocation":"2302:17:2","nodeType":"FunctionDefinition","parameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"2319:2:2"},"returnParameters":{"id":468,"nodeType":"ParameterList","parameters":[],"src":"2347:0:2"},"scope":526,"src":"2293:101:2","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":504,"nodeType":"Block","src":"2613:145:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":485,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2627:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2639:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":486,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:2","typeDescriptions":{}}},"id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2627:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":499,"nodeType":"IfStatement","src":"2623:91:2","trueBody":{"id":498,"nodeType":"Block","src":"2651:63:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:2","typeDescriptions":{}}},"id":495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":491,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"2672:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2672:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":497,"nodeType":"RevertStatement","src":"2665:38:2"}]}},{"expression":{"arguments":[{"id":501,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2742:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":500,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"2723:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":503,"nodeType":"ExpressionStatement","src":"2723:28:2"}]},"documentation":{"id":478,"nodeType":"StructuredDocumentation","src":"2400:138:2","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":505,"implemented":true,"kind":"function","modifiers":[{"id":483,"kind":"modifierInvocation","modifierName":{"id":482,"name":"onlyOwner","nameLocations":["2603:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"2603:9:2"},"nodeType":"ModifierInvocation","src":"2603:9:2"}],"name":"transferOwnership","nameLocation":"2552:17:2","nodeType":"FunctionDefinition","parameters":{"id":481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":480,"mutability":"mutable","name":"newOwner","nameLocation":"2578:8:2","nodeType":"VariableDeclaration","scope":505,"src":"2570:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":479,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:18:2"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[],"src":"2613:0:2"},"scope":526,"src":"2543:215:2","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":524,"nodeType":"Block","src":"2975:124:2","statements":[{"assignments":[512],"declarations":[{"constant":false,"id":512,"mutability":"mutable","name":"oldOwner","nameLocation":"2993:8:2","nodeType":"VariableDeclaration","scope":524,"src":"2985:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":511,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":514,"initialValue":{"id":513,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"3004:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2985:25:2"},{"expression":{"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":515,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"3020:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":516,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"3029:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3020:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":518,"nodeType":"ExpressionStatement","src":"3020:17:2"},{"eventCall":{"arguments":[{"id":520,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":512,"src":"3073:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":521,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"3083:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":519,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"3052:20:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":523,"nodeType":"EmitStatement","src":"3047:45:2"}]},"documentation":{"id":506,"nodeType":"StructuredDocumentation","src":"2764:143:2","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":525,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2921:18:2","nodeType":"FunctionDefinition","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":508,"mutability":"mutable","name":"newOwner","nameLocation":"2948:8:2","nodeType":"VariableDeclaration","scope":525,"src":"2940:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":507,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2939:18:2"},"returnParameters":{"id":510,"nodeType":"ParameterList","parameters":[],"src":"2975:0:2"},"scope":526,"src":"2912:187:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":527,"src":"663:2438:2","usedErrors":[392,397],"usedEvents":[403]}],"src":"102:3000:2"},"id":2},"@openzeppelin/contracts/access/Ownable2Step.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable2Step.sol","exportedSymbols":{"Ownable":[526],"Ownable2Step":[612]},"id":613,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":528,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:3"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"./Ownable.sol","id":530,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":613,"sourceUnit":527,"src":"133:38:3","symbolAliases":[{"foreign":{"id":529,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"141:7:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":532,"name":"Ownable","nameLocations":["1018:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":526,"src":"1018:7:3"},"id":533,"nodeType":"InheritanceSpecifier","src":"1018:7:3"}],"canonicalName":"Ownable2Step","contractDependencies":[],"contractKind":"contract","documentation":{"id":531,"nodeType":"StructuredDocumentation","src":"173:810:3","text":" @dev Contract module which provides access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n This extension of the {Ownable} contract includes a two-step mechanism to transfer\n ownership, where the new owner must call {acceptOwnership} in order to replace the\n old one. This can help prevent common mistakes, such as transfers of ownership to\n incorrect accounts, or to contracts that are unable to interact with the\n permission system.\n The initial owner is specified at deployment time in the constructor for `Ownable`. This\n can later be changed with {transferOwnership} and {acceptOwnership}.\n This module is used through inheritance. It will make available all functions\n from parent (Ownable)."},"fullyImplemented":true,"id":612,"linearizedBaseContracts":[612,526,4325],"name":"Ownable2Step","nameLocation":"1002:12:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":535,"mutability":"mutable","name":"_pendingOwner","nameLocation":"1048:13:3","nodeType":"VariableDeclaration","scope":612,"src":"1032:29:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":534,"name":"address","nodeType":"ElementaryTypeName","src":"1032:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700","id":541,"name":"OwnershipTransferStarted","nameLocation":"1074:24:3","nodeType":"EventDefinition","parameters":{"id":540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":537,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1115:13:3","nodeType":"VariableDeclaration","scope":541,"src":"1099:29:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":536,"name":"address","nodeType":"ElementaryTypeName","src":"1099:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":539,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1146:8:3","nodeType":"VariableDeclaration","scope":541,"src":"1130:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":538,"name":"address","nodeType":"ElementaryTypeName","src":"1130:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1098:57:3"},"src":"1068:88:3"},{"body":{"id":549,"nodeType":"Block","src":"1294:37:3","statements":[{"expression":{"id":547,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"1311:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":546,"id":548,"nodeType":"Return","src":"1304:20:3"}]},"documentation":{"id":542,"nodeType":"StructuredDocumentation","src":"1162:65:3","text":" @dev Returns the address of the pending owner."},"functionSelector":"e30c3978","id":550,"implemented":true,"kind":"function","modifiers":[],"name":"pendingOwner","nameLocation":"1241:12:3","nodeType":"FunctionDefinition","parameters":{"id":543,"nodeType":"ParameterList","parameters":[],"src":"1253:2:3"},"returnParameters":{"id":546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":550,"src":"1285:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":544,"name":"address","nodeType":"ElementaryTypeName","src":"1285:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1284:9:3"},"scope":612,"src":"1232:99:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[505],"body":{"id":569,"nodeType":"Block","src":"1728:99:3","statements":[{"expression":{"id":561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":559,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"1738:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":560,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"1754:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1738:24:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":562,"nodeType":"ExpressionStatement","src":"1738:24:3"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":564,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":446,"src":"1802:5:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1802:7:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":566,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"1811:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":563,"name":"OwnershipTransferStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"1777:24:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1777:43:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":568,"nodeType":"EmitStatement","src":"1772:48:3"}]},"documentation":{"id":551,"nodeType":"StructuredDocumentation","src":"1337:307:3","text":" @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n Can only be called by the current owner.\n Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"functionSelector":"f2fde38b","id":570,"implemented":true,"kind":"function","modifiers":[{"id":557,"kind":"modifierInvocation","modifierName":{"id":556,"name":"onlyOwner","nameLocations":["1718:9:3"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"1718:9:3"},"nodeType":"ModifierInvocation","src":"1718:9:3"}],"name":"transferOwnership","nameLocation":"1658:17:3","nodeType":"FunctionDefinition","overrides":{"id":555,"nodeType":"OverrideSpecifier","overrides":[],"src":"1709:8:3"},"parameters":{"id":554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"newOwner","nameLocation":"1684:8:3","nodeType":"VariableDeclaration","scope":570,"src":"1676:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":552,"name":"address","nodeType":"ElementaryTypeName","src":"1676:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1675:18:3"},"returnParameters":{"id":558,"nodeType":"ParameterList","parameters":[],"src":"1728:0:3"},"scope":612,"src":"1649:178:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[525],"body":{"id":586,"nodeType":"Block","src":"2083:81:3","statements":[{"expression":{"id":578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"2093:20:3","subExpression":{"id":577,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"2100:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":579,"nodeType":"ExpressionStatement","src":"2093:20:3"},{"expression":{"arguments":[{"id":583,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"2148:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":580,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2123:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Ownable2Step_$612_$","typeString":"type(contract super Ownable2Step)"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2129:18:3","memberName":"_transferOwnership","nodeType":"MemberAccess","referencedDeclaration":525,"src":"2123:24:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2123:34:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":585,"nodeType":"ExpressionStatement","src":"2123:34:3"}]},"documentation":{"id":571,"nodeType":"StructuredDocumentation","src":"1833:173:3","text":" @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n Internal function without access restriction."},"id":587,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2020:18:3","nodeType":"FunctionDefinition","overrides":{"id":575,"nodeType":"OverrideSpecifier","overrides":[],"src":"2074:8:3"},"parameters":{"id":574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":573,"mutability":"mutable","name":"newOwner","nameLocation":"2047:8:3","nodeType":"VariableDeclaration","scope":587,"src":"2039:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":572,"name":"address","nodeType":"ElementaryTypeName","src":"2039:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2038:18:3"},"returnParameters":{"id":576,"nodeType":"ParameterList","parameters":[],"src":"2083:0:3"},"scope":612,"src":"2011:153:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":610,"nodeType":"Block","src":"2286:187:3","statements":[{"assignments":[592],"declarations":[{"constant":false,"id":592,"mutability":"mutable","name":"sender","nameLocation":"2304:6:3","nodeType":"VariableDeclaration","scope":610,"src":"2296:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":591,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":595,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":593,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"2313:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2313:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2296:29:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":596,"name":"pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"2339:12:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2339:14:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":598,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"2357:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2339:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":605,"nodeType":"IfStatement","src":"2335:96:3","trueBody":{"id":604,"nodeType":"Block","src":"2365:66:3","statements":[{"errorCall":{"arguments":[{"id":601,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"2413:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":600,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"2386:26:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2386:34:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":603,"nodeType":"RevertStatement","src":"2379:41:3"}]}},{"expression":{"arguments":[{"id":607,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"2459:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":606,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[587],"referencedDeclaration":587,"src":"2440:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2440:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":609,"nodeType":"ExpressionStatement","src":"2440:26:3"}]},"documentation":{"id":588,"nodeType":"StructuredDocumentation","src":"2170:69:3","text":" @dev The new owner accepts the ownership transfer."},"functionSelector":"79ba5097","id":611,"implemented":true,"kind":"function","modifiers":[],"name":"acceptOwnership","nameLocation":"2253:15:3","nodeType":"FunctionDefinition","parameters":{"id":589,"nodeType":"ParameterList","parameters":[],"src":"2268:2:3"},"returnParameters":{"id":590,"nodeType":"ParameterList","parameters":[],"src":"2286:0:3"},"scope":612,"src":"2244:229:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":613,"src":"984:1491:3","usedErrors":[392,397],"usedEvents":[403,541]}],"src":"107:2369:3"},"id":3},"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol","exportedSymbols":{"AccessControl":[295],"AccessControlDefaultAdminRules":[1331],"IAccessControl":[378],"IAccessControlDefaultAdminRules":[1430],"IERC165":[6268],"IERC5313":[1460],"Math":[7925],"SafeCast":[9690]},"id":1332,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":614,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"136:24:4"},{"absolutePath":"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol","file":"./IAccessControlDefaultAdminRules.sol","id":616,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":1431,"src":"162:86:4","symbolAliases":[{"foreign":{"id":615,"name":"IAccessControlDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1430,"src":"170:31:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","file":"../AccessControl.sol","id":619,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":296,"src":"249:67:4","symbolAliases":[{"foreign":{"id":617,"name":"AccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"257:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":618,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"272:14:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"../../utils/math/SafeCast.sol","id":621,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":9691,"src":"317:55:4","symbolAliases":[{"foreign":{"id":620,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"325:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"../../utils/math/Math.sol","id":623,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":7926,"src":"373:47:4","symbolAliases":[{"foreign":{"id":622,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"381:4:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5313.sol","file":"../../interfaces/IERC5313.sol","id":625,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":1461,"src":"421:55:4","symbolAliases":[{"foreign":{"id":624,"name":"IERC5313","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"429:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":627,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1332,"sourceUnit":6269,"src":"477:62:4","symbolAliases":[{"foreign":{"id":626,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6268,"src":"485:7:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":629,"name":"IAccessControlDefaultAdminRules","nameLocations":["1905:31:4"],"nodeType":"IdentifierPath","referencedDeclaration":1430,"src":"1905:31:4"},"id":630,"nodeType":"InheritanceSpecifier","src":"1905:31:4"},{"baseName":{"id":631,"name":"IERC5313","nameLocations":["1938:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1460,"src":"1938:8:4"},"id":632,"nodeType":"InheritanceSpecifier","src":"1938:8:4"},{"baseName":{"id":633,"name":"AccessControl","nameLocations":["1948:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":295,"src":"1948:13:4"},"id":634,"nodeType":"InheritanceSpecifier","src":"1948:13:4"}],"canonicalName":"AccessControlDefaultAdminRules","contractDependencies":[],"contractKind":"contract","documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"541:1311:4","text":" @dev Extension of {AccessControl} that allows specifying special rules to manage\n the `DEFAULT_ADMIN_ROLE` holder, which is a sensitive role with special permissions\n over other roles that may potentially have privileged rights in the system.\n If a specific role doesn't have an admin role assigned, the holder of the\n `DEFAULT_ADMIN_ROLE` will have the ability to grant it and revoke it.\n This contract implements the following risk mitigations on top of {AccessControl}:\n * Only one account holds the `DEFAULT_ADMIN_ROLE` since deployment until it's potentially renounced.\n * Enforces a 2-step process to transfer the `DEFAULT_ADMIN_ROLE` to another account.\n * Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted.\n * The delay can be changed by scheduling, see {changeDefaultAdminDelay}.\n * Role transfers must wait at least one block after scheduling before it can be accepted.\n * It is not possible to use another role to manage the `DEFAULT_ADMIN_ROLE`.\n Example usage:\n ```solidity\n contract MyToken is AccessControlDefaultAdminRules {\n constructor() AccessControlDefaultAdminRules(\n 3 days,\n msg.sender // Explicit initial `DEFAULT_ADMIN_ROLE` holder\n ) {}\n }\n ```"},"fullyImplemented":true,"id":1331,"linearizedBaseContracts":[1331,295,6256,6268,1460,1430,378,4325],"name":"AccessControlDefaultAdminRules","nameLocation":"1871:30:4","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":636,"mutability":"mutable","name":"_pendingDefaultAdmin","nameLocation":"2043:20:4","nodeType":"VariableDeclaration","scope":1331,"src":"2027:36:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":635,"name":"address","nodeType":"ElementaryTypeName","src":"2027:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":638,"mutability":"mutable","name":"_pendingDefaultAdminSchedule","nameLocation":"2084:28:4","nodeType":"VariableDeclaration","scope":1331,"src":"2069:43:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":637,"name":"uint48","nodeType":"ElementaryTypeName","src":"2069:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"private"},{"constant":false,"id":640,"mutability":"mutable","name":"_currentDelay","nameLocation":"2148:13:4","nodeType":"VariableDeclaration","scope":1331,"src":"2133:28:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":639,"name":"uint48","nodeType":"ElementaryTypeName","src":"2133:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"private"},{"constant":false,"id":642,"mutability":"mutable","name":"_currentDefaultAdmin","nameLocation":"2183:20:4","nodeType":"VariableDeclaration","scope":1331,"src":"2167:36:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":641,"name":"address","nodeType":"ElementaryTypeName","src":"2167:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":644,"mutability":"mutable","name":"_pendingDelay","nameLocation":"2284:13:4","nodeType":"VariableDeclaration","scope":1331,"src":"2269:28:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":643,"name":"uint48","nodeType":"ElementaryTypeName","src":"2269:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"private"},{"constant":false,"id":646,"mutability":"mutable","name":"_pendingDelaySchedule","nameLocation":"2318:21:4","nodeType":"VariableDeclaration","scope":1331,"src":"2303:36:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":645,"name":"uint48","nodeType":"ElementaryTypeName","src":"2303:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"private"},{"body":{"id":678,"nodeType":"Block","src":"2526:230:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":654,"name":"initialDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"2540:19:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2571:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2563:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":655,"name":"address","nodeType":"ElementaryTypeName","src":"2563:7:4","typeDescriptions":{}}},"id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2563:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2540:33:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":668,"nodeType":"IfStatement","src":"2536:115:4","trueBody":{"id":667,"nodeType":"Block","src":"2575:76:4","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2637:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2629:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":661,"name":"address","nodeType":"ElementaryTypeName","src":"2629:7:4","typeDescriptions":{}}},"id":664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2629:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":660,"name":"AccessControlInvalidDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1343,"src":"2596:32:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2596:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":666,"nodeType":"RevertStatement","src":"2589:51:4"}]}},{"expression":{"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":669,"name":"_currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":640,"src":"2660:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":670,"name":"initialDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":649,"src":"2676:12:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"2660:28:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":672,"nodeType":"ExpressionStatement","src":"2660:28:4"},{"expression":{"arguments":[{"id":674,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"2709:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":675,"name":"initialDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"2729:19:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":673,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[865],"referencedDeclaration":865,"src":"2698:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2698:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":677,"nodeType":"ExpressionStatement","src":"2698:51:4"}]},"documentation":{"id":647,"nodeType":"StructuredDocumentation","src":"2360:99:4","text":" @dev Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address."},"id":679,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":649,"mutability":"mutable","name":"initialDelay","nameLocation":"2483:12:4","nodeType":"VariableDeclaration","scope":679,"src":"2476:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":648,"name":"uint48","nodeType":"ElementaryTypeName","src":"2476:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":651,"mutability":"mutable","name":"initialDefaultAdmin","nameLocation":"2505:19:4","nodeType":"VariableDeclaration","scope":679,"src":"2497:27:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":650,"name":"address","nodeType":"ElementaryTypeName","src":"2497:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2475:50:4"},"returnParameters":{"id":653,"nodeType":"ParameterList","parameters":[],"src":"2526:0:4"},"scope":1331,"src":"2464:292:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[62],"body":{"id":700,"nodeType":"Block","src":"2881:128:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":688,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"2898:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":690,"name":"IAccessControlDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1430,"src":"2918:31:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControlDefaultAdminRules_$1430_$","typeString":"type(contract IAccessControlDefaultAdminRules)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControlDefaultAdminRules_$1430_$","typeString":"type(contract IAccessControlDefaultAdminRules)"}],"id":689,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2913:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2913:37:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControlDefaultAdminRules_$1430","typeString":"type(contract IAccessControlDefaultAdminRules)"}},"id":692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2951:11:4","memberName":"interfaceId","nodeType":"MemberAccess","src":"2913:49:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2898:64:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":696,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"2990:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":694,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2966:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2972:17:4","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":62,"src":"2966:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2966:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2898:104:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":687,"id":699,"nodeType":"Return","src":"2891:111:4"}]},"documentation":{"id":680,"nodeType":"StructuredDocumentation","src":"2762:23:4","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":701,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2799:17:4","nodeType":"FunctionDefinition","overrides":{"id":684,"nodeType":"OverrideSpecifier","overrides":[],"src":"2857:8:4"},"parameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"mutability":"mutable","name":"interfaceId","nameLocation":"2824:11:4","nodeType":"VariableDeclaration","scope":701,"src":"2817:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":681,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2817:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2816:20:4"},"returnParameters":{"id":687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":686,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":701,"src":"2875:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":685,"name":"bool","nodeType":"ElementaryTypeName","src":"2875:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2874:6:4"},"scope":1331,"src":"2790:219:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1459],"body":{"id":710,"nodeType":"Block","src":"3099:38:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":707,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"3116:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3116:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":706,"id":709,"nodeType":"Return","src":"3109:21:4"}]},"documentation":{"id":702,"nodeType":"StructuredDocumentation","src":"3015:24:4","text":"@inheritdoc IERC5313"},"functionSelector":"8da5cb5b","id":711,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"3053:5:4","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[],"src":"3058:2:4"},"returnParameters":{"id":706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":711,"src":"3090:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":704,"name":"address","nodeType":"ElementaryTypeName","src":"3090:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3089:9:4"},"scope":1331,"src":"3044:93:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[147,361],"body":{"id":737,"nodeType":"Block","src":"3405:160:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":722,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"3419:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":723,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"3427:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3419:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":729,"nodeType":"IfStatement","src":"3415:104:4","trueBody":{"id":728,"nodeType":"Block","src":"3447:72:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":725,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"3468:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3468:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":727,"nodeType":"RevertStatement","src":"3461:47:4"}]}},{"expression":{"arguments":[{"id":733,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"3544:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":734,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"3550:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":730,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"3528:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3534:9:4","memberName":"grantRole","nodeType":"MemberAccess","referencedDeclaration":147,"src":"3528:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3528:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":736,"nodeType":"ExpressionStatement","src":"3528:30:4"}]},"documentation":{"id":712,"nodeType":"StructuredDocumentation","src":"3207:88:4","text":" @dev See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"functionSelector":"2f2ff15d","id":738,"implemented":true,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"3309:9:4","nodeType":"FunctionDefinition","overrides":{"id":720,"nodeType":"OverrideSpecifier","overrides":[{"id":718,"name":"AccessControl","nameLocations":["3374:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":295,"src":"3374:13:4"},{"id":719,"name":"IAccessControl","nameLocations":["3389:14:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3389:14:4"}],"src":"3365:39:4"},"parameters":{"id":717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":714,"mutability":"mutable","name":"role","nameLocation":"3327:4:4","nodeType":"VariableDeclaration","scope":738,"src":"3319:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":713,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3319:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":716,"mutability":"mutable","name":"account","nameLocation":"3341:7:4","nodeType":"VariableDeclaration","scope":738,"src":"3333:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":715,"name":"address","nodeType":"ElementaryTypeName","src":"3333:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3318:31:4"},"returnParameters":{"id":721,"nodeType":"ParameterList","parameters":[],"src":"3405:0:4"},"scope":1331,"src":"3300:265:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[166,369],"body":{"id":764,"nodeType":"Block","src":"3771:161:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":749,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"3785:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":750,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"3793:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3785:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":756,"nodeType":"IfStatement","src":"3781:104:4","trueBody":{"id":755,"nodeType":"Block","src":"3813:72:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":752,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"3834:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3834:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":754,"nodeType":"RevertStatement","src":"3827:47:4"}]}},{"expression":{"arguments":[{"id":760,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"3911:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":761,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":743,"src":"3917:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":757,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"3894:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3900:10:4","memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":166,"src":"3894:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3894:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":763,"nodeType":"ExpressionStatement","src":"3894:31:4"}]},"documentation":{"id":739,"nodeType":"StructuredDocumentation","src":"3571:89:4","text":" @dev See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"functionSelector":"d547741f","id":765,"implemented":true,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"3674:10:4","nodeType":"FunctionDefinition","overrides":{"id":747,"nodeType":"OverrideSpecifier","overrides":[{"id":745,"name":"AccessControl","nameLocations":["3740:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":295,"src":"3740:13:4"},{"id":746,"name":"IAccessControl","nameLocations":["3755:14:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3755:14:4"}],"src":"3731:39:4"},"parameters":{"id":744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":741,"mutability":"mutable","name":"role","nameLocation":"3693:4:4","nodeType":"VariableDeclaration","scope":765,"src":"3685:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":740,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3685:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":743,"mutability":"mutable","name":"account","nameLocation":"3707:7:4","nodeType":"VariableDeclaration","scope":765,"src":"3699:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":742,"name":"address","nodeType":"ElementaryTypeName","src":"3699:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3684:31:4"},"returnParameters":{"id":748,"nodeType":"ParameterList","parameters":[],"src":"3771:0:4"},"scope":1331,"src":"3665:267:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[189,377],"body":{"id":825,"nodeType":"Block","src":"4725:458:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":776,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"4739:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":777,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"4747:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4739:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":779,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":770,"src":"4769:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":780,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"4780:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4780:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4769:25:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4739:55:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":817,"nodeType":"IfStatement","src":"4735:399:4","trueBody":{"id":816,"nodeType":"Block","src":"4796:338:4","statements":[{"assignments":[785,787],"declarations":[{"constant":false,"id":785,"mutability":"mutable","name":"newDefaultAdmin","nameLocation":"4819:15:4","nodeType":"VariableDeclaration","scope":816,"src":"4811:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":784,"name":"address","nodeType":"ElementaryTypeName","src":"4811:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":787,"mutability":"mutable","name":"schedule","nameLocation":"4843:8:4","nodeType":"VariableDeclaration","scope":816,"src":"4836:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":786,"name":"uint48","nodeType":"ElementaryTypeName","src":"4836:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":790,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":788,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"4855:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4855:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"4810:66:4"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":791,"name":"newDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"4894:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4921:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4913:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":792,"name":"address","nodeType":"ElementaryTypeName","src":"4913:7:4","typeDescriptions":{}}},"id":795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4913:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4894:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4927:25:4","subExpression":{"arguments":[{"id":798,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"4943:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":797,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"4928:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4928:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4894:58:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4956:29:4","subExpression":{"arguments":[{"id":803,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"4976:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":802,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"4957:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4957:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4894:91:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":812,"nodeType":"IfStatement","src":"4890:185:4","trueBody":{"id":811,"nodeType":"Block","src":"4987:88:4","statements":[{"errorCall":{"arguments":[{"id":808,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"5051:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":807,"name":"AccessControlEnforcedDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1351,"src":"5012:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint48_$returns$_t_error_$","typeString":"function (uint48) pure returns (error)"}},"id":809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5012:48:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":810,"nodeType":"RevertStatement","src":"5005:55:4"}]}},{"expression":{"id":814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5088:35:4","subExpression":{"id":813,"name":"_pendingDefaultAdminSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"5095:28:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":815,"nodeType":"ExpressionStatement","src":"5088:35:4"}]}},{"expression":{"arguments":[{"id":821,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"5162:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":822,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":770,"src":"5168:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":818,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"5143:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5149:12:4","memberName":"renounceRole","nodeType":"MemberAccess","referencedDeclaration":189,"src":"5143:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5143:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":824,"nodeType":"ExpressionStatement","src":"5143:33:4"}]},"documentation":{"id":766,"nodeType":"StructuredDocumentation","src":"3938:674:4","text":" @dev See {AccessControl-renounceRole}.\n For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling\n {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule\n has also passed when calling this function.\n After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions.\n NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin},\n thereby disabling any functionality that is only available for it, and the possibility of reassigning a\n non-administrated role."},"functionSelector":"36568abe","id":826,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"4626:12:4","nodeType":"FunctionDefinition","overrides":{"id":774,"nodeType":"OverrideSpecifier","overrides":[{"id":772,"name":"AccessControl","nameLocations":["4694:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":295,"src":"4694:13:4"},{"id":773,"name":"IAccessControl","nameLocations":["4709:14:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"4709:14:4"}],"src":"4685:39:4"},"parameters":{"id":771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":768,"mutability":"mutable","name":"role","nameLocation":"4647:4:4","nodeType":"VariableDeclaration","scope":826,"src":"4639:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":767,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4639:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":770,"mutability":"mutable","name":"account","nameLocation":"4661:7:4","nodeType":"VariableDeclaration","scope":826,"src":"4653:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":769,"name":"address","nodeType":"ElementaryTypeName","src":"4653:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4638:31:4"},"returnParameters":{"id":775,"nodeType":"ParameterList","parameters":[],"src":"4725:0:4"},"scope":1331,"src":"4617:566:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[256],"body":{"id":864,"nodeType":"Block","src":"5703:278:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":837,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"5717:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":838,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5725:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5717:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":857,"nodeType":"IfStatement","src":"5713:214:4","trueBody":{"id":856,"nodeType":"Block","src":"5745:182:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":840,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"5763:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5763:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5789:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5781:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":842,"name":"address","nodeType":"ElementaryTypeName","src":"5781:7:4","typeDescriptions":{}}},"id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5781:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5763:28:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":851,"nodeType":"IfStatement","src":"5759:114:4","trueBody":{"id":850,"nodeType":"Block","src":"5793:80:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":847,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"5818:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5818:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":849,"nodeType":"RevertStatement","src":"5811:47:4"}]}},{"expression":{"id":854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":852,"name":"_currentDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":642,"src":"5886:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":853,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"5909:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5886:30:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":855,"nodeType":"ExpressionStatement","src":"5886:30:4"}]}},{"expression":{"arguments":[{"id":860,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"5960:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":861,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"5966:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":858,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"5943:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5949:10:4","memberName":"_grantRole","nodeType":"MemberAccess","referencedDeclaration":256,"src":"5943:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5943:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":836,"id":863,"nodeType":"Return","src":"5936:38:4"}]},"documentation":{"id":827,"nodeType":"StructuredDocumentation","src":"5189:417:4","text":" @dev See {AccessControl-_grantRole}.\n For `DEFAULT_ADMIN_ROLE`, it only allows granting if there isn't already a {defaultAdmin} or if the\n role has been previously renounced.\n NOTE: Exposing this function through another mechanism may make the `DEFAULT_ADMIN_ROLE`\n assignable again. Make sure to guarantee this is the expected behavior in your implementation."},"id":865,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"5620:10:4","nodeType":"FunctionDefinition","overrides":{"id":833,"nodeType":"OverrideSpecifier","overrides":[],"src":"5679:8:4"},"parameters":{"id":832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"role","nameLocation":"5639:4:4","nodeType":"VariableDeclaration","scope":865,"src":"5631:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":828,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5631:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":831,"mutability":"mutable","name":"account","nameLocation":"5653:7:4","nodeType":"VariableDeclaration","scope":865,"src":"5645:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":830,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5630:31:4"},"returnParameters":{"id":836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":865,"src":"5697:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":834,"name":"bool","nodeType":"ElementaryTypeName","src":"5697:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5696:6:4"},"scope":1331,"src":"5611:370:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[294],"body":{"id":895,"nodeType":"Block","src":"6114:178:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":876,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"6128:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":877,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"6136:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6128:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":879,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":870,"src":"6158:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":880,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"6169:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6169:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6158:25:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6128:55:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"6124:113:4","trueBody":{"id":887,"nodeType":"Block","src":"6185:52:4","statements":[{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6199:27:4","subExpression":{"id":884,"name":"_currentDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":642,"src":"6206:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":886,"nodeType":"ExpressionStatement","src":"6199:27:4"}]}},{"expression":{"arguments":[{"id":891,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"6271:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":892,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":870,"src":"6277:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":889,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"6253:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6259:11:4","memberName":"_revokeRole","nodeType":"MemberAccess","referencedDeclaration":294,"src":"6253:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6253:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":875,"id":894,"nodeType":"Return","src":"6246:39:4"}]},"documentation":{"id":866,"nodeType":"StructuredDocumentation","src":"5987:29:4","text":"@inheritdoc AccessControl"},"id":896,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"6030:11:4","nodeType":"FunctionDefinition","overrides":{"id":872,"nodeType":"OverrideSpecifier","overrides":[],"src":"6090:8:4"},"parameters":{"id":871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":868,"mutability":"mutable","name":"role","nameLocation":"6050:4:4","nodeType":"VariableDeclaration","scope":896,"src":"6042:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":867,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6042:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":870,"mutability":"mutable","name":"account","nameLocation":"6064:7:4","nodeType":"VariableDeclaration","scope":896,"src":"6056:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":869,"name":"address","nodeType":"ElementaryTypeName","src":"6056:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6041:31:4"},"returnParameters":{"id":875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":896,"src":"6108:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":873,"name":"bool","nodeType":"ElementaryTypeName","src":"6108:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6107:6:4"},"scope":1331,"src":"6021:271:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[217],"body":{"id":920,"nodeType":"Block","src":"6477:166:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":905,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":899,"src":"6491:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":906,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"6499:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6491:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":912,"nodeType":"IfStatement","src":"6487:104:4","trueBody":{"id":911,"nodeType":"Block","src":"6519:72:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":908,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"6540:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6540:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":910,"nodeType":"RevertStatement","src":"6533:47:4"}]}},{"expression":{"arguments":[{"id":916,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":899,"src":"6620:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":917,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"6626:9:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":913,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"6600:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRules_$1331_$","typeString":"type(contract super AccessControlDefaultAdminRules)"}},"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6606:13:4","memberName":"_setRoleAdmin","nodeType":"MemberAccess","referencedDeclaration":217,"src":"6600:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6600:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":919,"nodeType":"ExpressionStatement","src":"6600:36:4"}]},"documentation":{"id":897,"nodeType":"StructuredDocumentation","src":"6298:92:4","text":" @dev See {AccessControl-_setRoleAdmin}. Reverts for `DEFAULT_ADMIN_ROLE`."},"id":921,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"6404:13:4","nodeType":"FunctionDefinition","overrides":{"id":903,"nodeType":"OverrideSpecifier","overrides":[],"src":"6468:8:4"},"parameters":{"id":902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":899,"mutability":"mutable","name":"role","nameLocation":"6426:4:4","nodeType":"VariableDeclaration","scope":921,"src":"6418:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6418:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":901,"mutability":"mutable","name":"adminRole","nameLocation":"6440:9:4","nodeType":"VariableDeclaration","scope":921,"src":"6432:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":900,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6432:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6417:33:4"},"returnParameters":{"id":904,"nodeType":"ParameterList","parameters":[],"src":"6477:0:4"},"scope":1331,"src":"6395:248:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1377],"body":{"id":929,"nodeType":"Block","src":"6829:44:4","statements":[{"expression":{"id":927,"name":"_currentDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":642,"src":"6846:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":926,"id":928,"nodeType":"Return","src":"6839:27:4"}]},"documentation":{"id":922,"nodeType":"StructuredDocumentation","src":"6715:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"84ef8ffc","id":930,"implemented":true,"kind":"function","modifiers":[],"name":"defaultAdmin","nameLocation":"6776:12:4","nodeType":"FunctionDefinition","parameters":{"id":923,"nodeType":"ParameterList","parameters":[],"src":"6788:2:4"},"returnParameters":{"id":926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":930,"src":"6820:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":924,"name":"address","nodeType":"ElementaryTypeName","src":"6820:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6819:9:4"},"scope":1331,"src":"6767:106:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1385],"body":{"id":942,"nodeType":"Block","src":"7026:76:4","statements":[{"expression":{"components":[{"id":938,"name":"_pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"7044:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":939,"name":"_pendingDefaultAdminSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"7066:28:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":940,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7043:52:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"functionReturnParameters":937,"id":941,"nodeType":"Return","src":"7036:59:4"}]},"documentation":{"id":931,"nodeType":"StructuredDocumentation","src":"6879:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"cf6eefb7","id":943,"implemented":true,"kind":"function","modifiers":[],"name":"pendingDefaultAdmin","nameLocation":"6940:19:4","nodeType":"FunctionDefinition","parameters":{"id":932,"nodeType":"ParameterList","parameters":[],"src":"6959:2:4"},"returnParameters":{"id":937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":934,"mutability":"mutable","name":"newAdmin","nameLocation":"6999:8:4","nodeType":"VariableDeclaration","scope":943,"src":"6991:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":933,"name":"address","nodeType":"ElementaryTypeName","src":"6991:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":936,"mutability":"mutable","name":"schedule","nameLocation":"7016:8:4","nodeType":"VariableDeclaration","scope":943,"src":"7009:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":935,"name":"uint48","nodeType":"ElementaryTypeName","src":"7009:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6990:35:4"},"scope":1331,"src":"6931:171:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1391],"body":{"id":965,"nodeType":"Block","src":"7226:163:4","statements":[{"assignments":[950],"declarations":[{"constant":false,"id":950,"mutability":"mutable","name":"schedule","nameLocation":"7243:8:4","nodeType":"VariableDeclaration","scope":965,"src":"7236:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":949,"name":"uint48","nodeType":"ElementaryTypeName","src":"7236:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":952,"initialValue":{"id":951,"name":"_pendingDelaySchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"7254:21:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"7236:39:4"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":954,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"7308:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":953,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"7293:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7293:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":957,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"7340:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":956,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"7321:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7321:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7293:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":960,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7292:58:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":962,"name":"_currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":640,"src":"7369:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7292:90:4","trueExpression":{"id":961,"name":"_pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"7353:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":948,"id":964,"nodeType":"Return","src":"7285:97:4"}]},"documentation":{"id":944,"nodeType":"StructuredDocumentation","src":"7108:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"cc8463c8","id":966,"implemented":true,"kind":"function","modifiers":[],"name":"defaultAdminDelay","nameLocation":"7169:17:4","nodeType":"FunctionDefinition","parameters":{"id":945,"nodeType":"ParameterList","parameters":[],"src":"7186:2:4"},"returnParameters":{"id":948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":966,"src":"7218:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":946,"name":"uint48","nodeType":"ElementaryTypeName","src":"7218:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7217:8:4"},"scope":1331,"src":"7160:229:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1399],"body":{"id":995,"nodeType":"Block","src":"7546:162:4","statements":[{"expression":{"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":974,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":972,"src":"7556:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":975,"name":"_pendingDelaySchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"7567:21:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"7556:32:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":977,"nodeType":"ExpressionStatement","src":"7556:32:4"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":979,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":972,"src":"7621:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":978,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"7606:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7606:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7634:29:4","subExpression":{"arguments":[{"id":982,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":972,"src":"7654:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":981,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"7635:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7635:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7606:57:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":986,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7605:59:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"hexValue":"30","id":990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7696:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7699:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":992,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7695:6:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 0,int_const 0)"}},"id":993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7605:96:4","trueExpression":{"components":[{"id":987,"name":"_pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"7668:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":988,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":972,"src":"7683:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7667:25:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"functionReturnParameters":973,"id":994,"nodeType":"Return","src":"7598:103:4"}]},"documentation":{"id":967,"nodeType":"StructuredDocumentation","src":"7395:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"a1eda53c","id":996,"implemented":true,"kind":"function","modifiers":[],"name":"pendingDefaultAdminDelay","nameLocation":"7456:24:4","nodeType":"FunctionDefinition","parameters":{"id":968,"nodeType":"ParameterList","parameters":[],"src":"7480:2:4"},"returnParameters":{"id":973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":970,"mutability":"mutable","name":"newDelay","nameLocation":"7519:8:4","nodeType":"VariableDeclaration","scope":996,"src":"7512:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":969,"name":"uint48","nodeType":"ElementaryTypeName","src":"7512:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":972,"mutability":"mutable","name":"schedule","nameLocation":"7536:8:4","nodeType":"VariableDeclaration","scope":996,"src":"7529:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":971,"name":"uint48","nodeType":"ElementaryTypeName","src":"7529:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7511:34:4"},"scope":1331,"src":"7447:261:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1429],"body":{"id":1004,"nodeType":"Block","src":"7844:30:4","statements":[{"expression":{"hexValue":"35","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7861:6:4","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_432000_by_1","typeString":"int_const 432000"},"value":"5"},"functionReturnParameters":1001,"id":1003,"nodeType":"Return","src":"7854:13:4"}]},"documentation":{"id":997,"nodeType":"StructuredDocumentation","src":"7714:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"022d63fb","id":1005,"implemented":true,"kind":"function","modifiers":[],"name":"defaultAdminDelayIncreaseWait","nameLocation":"7775:29:4","nodeType":"FunctionDefinition","parameters":{"id":998,"nodeType":"ParameterList","parameters":[],"src":"7804:2:4"},"returnParameters":{"id":1001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1005,"src":"7836:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":999,"name":"uint48","nodeType":"ElementaryTypeName","src":"7836:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7835:8:4"},"scope":1331,"src":"7766:108:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1405],"body":{"id":1018,"nodeType":"Block","src":"8150:53:4","statements":[{"expression":{"arguments":[{"id":1015,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1008,"src":"8187:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1014,"name":"_beginDefaultAdminTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1047,"src":"8160:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8160:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1017,"nodeType":"ExpressionStatement","src":"8160:36:4"}]},"documentation":{"id":1006,"nodeType":"StructuredDocumentation","src":"8001:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"634e93da","id":1019,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1011,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"8130:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1012,"kind":"modifierInvocation","modifierName":{"id":1010,"name":"onlyRole","nameLocations":["8121:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"8121:8:4"},"nodeType":"ModifierInvocation","src":"8121:28:4"}],"name":"beginDefaultAdminTransfer","nameLocation":"8062:25:4","nodeType":"FunctionDefinition","parameters":{"id":1009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1008,"mutability":"mutable","name":"newAdmin","nameLocation":"8096:8:4","nodeType":"VariableDeclaration","scope":1019,"src":"8088:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1007,"name":"address","nodeType":"ElementaryTypeName","src":"8088:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8087:18:4"},"returnParameters":{"id":1013,"nodeType":"ParameterList","parameters":[],"src":"8150:0:4"},"scope":1331,"src":"8053:150:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1046,"nodeType":"Block","src":"8401:217:4","statements":[{"assignments":[1026],"declarations":[{"constant":false,"id":1026,"mutability":"mutable","name":"newSchedule","nameLocation":"8418:11:4","nodeType":"VariableDeclaration","scope":1046,"src":"8411:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1025,"name":"uint48","nodeType":"ElementaryTypeName","src":"8411:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1035,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1029,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"8450:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8456:9:4","memberName":"timestamp","nodeType":"MemberAccess","src":"8450:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1027,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"8432:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":1028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8441:8:4","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":8680,"src":"8432:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8432:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1032,"name":"defaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"8469:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8469:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"8432:56:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"8411:77:4"},{"expression":{"arguments":[{"id":1037,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"8522:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1038,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"8532:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1036,"name":"_setPendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1264,"src":"8498:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint48_$returns$__$","typeString":"function (address,uint48)"}},"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8498:46:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1040,"nodeType":"ExpressionStatement","src":"8498:46:4"},{"eventCall":{"arguments":[{"id":1042,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"8589:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1043,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"8599:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1041,"name":"DefaultAdminTransferScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1358,"src":"8559:29:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint48_$returns$__$","typeString":"function (address,uint48)"}},"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8559:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1045,"nodeType":"EmitStatement","src":"8554:57:4"}]},"documentation":{"id":1020,"nodeType":"StructuredDocumentation","src":"8209:116:4","text":" @dev See {beginDefaultAdminTransfer}.\n Internal function without access restriction."},"id":1047,"implemented":true,"kind":"function","modifiers":[],"name":"_beginDefaultAdminTransfer","nameLocation":"8339:26:4","nodeType":"FunctionDefinition","parameters":{"id":1023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1022,"mutability":"mutable","name":"newAdmin","nameLocation":"8374:8:4","nodeType":"VariableDeclaration","scope":1047,"src":"8366:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1021,"name":"address","nodeType":"ElementaryTypeName","src":"8366:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8365:18:4"},"returnParameters":{"id":1024,"nodeType":"ParameterList","parameters":[],"src":"8401:0:4"},"scope":1331,"src":"8330:288:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1409],"body":{"id":1057,"nodeType":"Block","src":"8758:46:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1054,"name":"_cancelDefaultAdminTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1071,"src":"8768:27:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8768:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1056,"nodeType":"ExpressionStatement","src":"8768:29:4"}]},"documentation":{"id":1048,"nodeType":"StructuredDocumentation","src":"8624:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"d602b9fd","id":1058,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1051,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"8738:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1052,"kind":"modifierInvocation","modifierName":{"id":1050,"name":"onlyRole","nameLocations":["8729:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"8729:8:4"},"nodeType":"ModifierInvocation","src":"8729:28:4"}],"name":"cancelDefaultAdminTransfer","nameLocation":"8685:26:4","nodeType":"FunctionDefinition","parameters":{"id":1049,"nodeType":"ParameterList","parameters":[],"src":"8711:2:4"},"returnParameters":{"id":1053,"nodeType":"ParameterList","parameters":[],"src":"8758:0:4"},"scope":1331,"src":"8676:128:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1070,"nodeType":"Block","src":"8988:55:4","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9030:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1064,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9022:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1063,"name":"address","nodeType":"ElementaryTypeName","src":"9022:7:4","typeDescriptions":{}}},"id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9022:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":1067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9034:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1062,"name":"_setPendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1264,"src":"8998:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint48_$returns$__$","typeString":"function (address,uint48)"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8998:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1069,"nodeType":"ExpressionStatement","src":"8998:38:4"}]},"documentation":{"id":1059,"nodeType":"StructuredDocumentation","src":"8810:117:4","text":" @dev See {cancelDefaultAdminTransfer}.\n Internal function without access restriction."},"id":1071,"implemented":true,"kind":"function","modifiers":[],"name":"_cancelDefaultAdminTransfer","nameLocation":"8941:27:4","nodeType":"FunctionDefinition","parameters":{"id":1060,"nodeType":"ParameterList","parameters":[],"src":"8968:2:4"},"returnParameters":{"id":1061,"nodeType":"ParameterList","parameters":[],"src":"8988:0:4"},"scope":1331,"src":"8932:111:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1413],"body":{"id":1094,"nodeType":"Block","src":"9154:291:4","statements":[{"assignments":[1076,null],"declarations":[{"constant":false,"id":1076,"mutability":"mutable","name":"newDefaultAdmin","nameLocation":"9173:15:4","nodeType":"VariableDeclaration","scope":1094,"src":"9165:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1075,"name":"address","nodeType":"ElementaryTypeName","src":"9165:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":1079,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1077,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"9194:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9194:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"9164:51:4"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1080,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"9229:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9229:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1082,"name":"newDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"9245:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9229:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1090,"nodeType":"IfStatement","src":"9225:175:4","trueBody":{"id":1089,"nodeType":"Block","src":"9262:138:4","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1085,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"9376:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9376:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1084,"name":"AccessControlInvalidDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1343,"src":"9343:32:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9343:46:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1088,"nodeType":"RevertStatement","src":"9336:53:4"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1091,"name":"_acceptDefaultAdminTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"9409:27:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9409:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1093,"nodeType":"ExpressionStatement","src":"9409:29:4"}]},"documentation":{"id":1072,"nodeType":"StructuredDocumentation","src":"9049:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"cefc1429","id":1095,"implemented":true,"kind":"function","modifiers":[],"name":"acceptDefaultAdminTransfer","nameLocation":"9110:26:4","nodeType":"FunctionDefinition","parameters":{"id":1073,"nodeType":"ParameterList","parameters":[],"src":"9136:2:4"},"returnParameters":{"id":1074,"nodeType":"ParameterList","parameters":[],"src":"9154:0:4"},"scope":1331,"src":"9101:344:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1138,"nodeType":"Block","src":"9629:418:4","statements":[{"assignments":[1100,1102],"declarations":[{"constant":false,"id":1100,"mutability":"mutable","name":"newAdmin","nameLocation":"9648:8:4","nodeType":"VariableDeclaration","scope":1138,"src":"9640:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1099,"name":"address","nodeType":"ElementaryTypeName","src":"9640:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1102,"mutability":"mutable","name":"schedule","nameLocation":"9665:8:4","nodeType":"VariableDeclaration","scope":1138,"src":"9658:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1101,"name":"uint48","nodeType":"ElementaryTypeName","src":"9658:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1105,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1103,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"9677:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":1104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9677:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"9639:59:4"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9712:25:4","subExpression":{"arguments":[{"id":1107,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"9728:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1106,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"9713:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":1108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9713:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9741:29:4","subExpression":{"arguments":[{"id":1111,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"9761:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1110,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9742:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9742:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9712:58:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1120,"nodeType":"IfStatement","src":"9708:144:4","trueBody":{"id":1119,"nodeType":"Block","src":"9772:80:4","statements":[{"errorCall":{"arguments":[{"id":1116,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"9832:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1115,"name":"AccessControlEnforcedDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1351,"src":"9793:38:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint48_$returns$_t_error_$","typeString":"function (uint48) pure returns (error)"}},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9793:48:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1118,"nodeType":"RevertStatement","src":"9786:55:4"}]}},{"expression":{"arguments":[{"id":1122,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"9873:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1123,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"9893:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9893:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1121,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[896],"referencedDeclaration":896,"src":"9861:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1126,"nodeType":"ExpressionStatement","src":"9861:47:4"},{"expression":{"arguments":[{"id":1128,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"9929:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1129,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"9949:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1127,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[865],"referencedDeclaration":865,"src":"9918:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":1130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9918:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1131,"nodeType":"ExpressionStatement","src":"9918:40:4"},{"expression":{"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9968:27:4","subExpression":{"id":1132,"name":"_pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"9975:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1134,"nodeType":"ExpressionStatement","src":"9968:27:4"},{"expression":{"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10005:35:4","subExpression":{"id":1135,"name":"_pendingDefaultAdminSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"10012:28:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1137,"nodeType":"ExpressionStatement","src":"10005:35:4"}]},"documentation":{"id":1096,"nodeType":"StructuredDocumentation","src":"9451:117:4","text":" @dev See {acceptDefaultAdminTransfer}.\n Internal function without access restriction."},"id":1139,"implemented":true,"kind":"function","modifiers":[],"name":"_acceptDefaultAdminTransfer","nameLocation":"9582:27:4","nodeType":"FunctionDefinition","parameters":{"id":1097,"nodeType":"ParameterList","parameters":[],"src":"9609:2:4"},"returnParameters":{"id":1098,"nodeType":"ParameterList","parameters":[],"src":"9629:0:4"},"scope":1331,"src":"9573:474:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1419],"body":{"id":1152,"nodeType":"Block","src":"10330:51:4","statements":[{"expression":{"arguments":[{"id":1149,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"10365:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1148,"name":"_changeDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"10340:24:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$returns$__$","typeString":"function (uint48)"}},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10340:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1151,"nodeType":"ExpressionStatement","src":"10340:34:4"}]},"documentation":{"id":1140,"nodeType":"StructuredDocumentation","src":"10184:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"649a5ec7","id":1153,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1145,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"10310:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1146,"kind":"modifierInvocation","modifierName":{"id":1144,"name":"onlyRole","nameLocations":["10301:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"10301:8:4"},"nodeType":"ModifierInvocation","src":"10301:28:4"}],"name":"changeDefaultAdminDelay","nameLocation":"10245:23:4","nodeType":"FunctionDefinition","parameters":{"id":1143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1142,"mutability":"mutable","name":"newDelay","nameLocation":"10276:8:4","nodeType":"VariableDeclaration","scope":1153,"src":"10269:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1141,"name":"uint48","nodeType":"ElementaryTypeName","src":"10269:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"10268:17:4"},"returnParameters":{"id":1147,"nodeType":"ParameterList","parameters":[],"src":"10330:0:4"},"scope":1331,"src":"10236:145:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1181,"nodeType":"Block","src":"10574:220:4","statements":[{"assignments":[1160],"declarations":[{"constant":false,"id":1160,"mutability":"mutable","name":"newSchedule","nameLocation":"10591:11:4","nodeType":"VariableDeclaration","scope":1181,"src":"10584:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1159,"name":"uint48","nodeType":"ElementaryTypeName","src":"10584:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1170,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1163,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"10623:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10629:9:4","memberName":"timestamp","nodeType":"MemberAccess","src":"10623:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1161,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"10605:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10614:8:4","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":8680,"src":"10605:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":1165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10605:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":1167,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"10659:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1166,"name":"_delayChangeWait","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"10642:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_uint48_$","typeString":"function (uint48) view returns (uint48)"}},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10642:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"10605:63:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"10584:84:4"},{"expression":{"arguments":[{"id":1172,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"10695:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":1173,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"10705:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1171,"name":"_setPendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"10678:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (uint48,uint48)"}},"id":1174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10678:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1175,"nodeType":"ExpressionStatement","src":"10678:39:4"},{"eventCall":{"arguments":[{"id":1177,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1156,"src":"10765:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":1178,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"10775:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1176,"name":"DefaultAdminDelayChangeScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"10732:32:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (uint48,uint48)"}},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10732:55:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1180,"nodeType":"EmitStatement","src":"10727:60:4"}]},"documentation":{"id":1154,"nodeType":"StructuredDocumentation","src":"10387:114:4","text":" @dev See {changeDefaultAdminDelay}.\n Internal function without access restriction."},"id":1182,"implemented":true,"kind":"function","modifiers":[],"name":"_changeDefaultAdminDelay","nameLocation":"10515:24:4","nodeType":"FunctionDefinition","parameters":{"id":1157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1156,"mutability":"mutable","name":"newDelay","nameLocation":"10547:8:4","nodeType":"VariableDeclaration","scope":1182,"src":"10540:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1155,"name":"uint48","nodeType":"ElementaryTypeName","src":"10540:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"10539:17:4"},"returnParameters":{"id":1158,"nodeType":"ParameterList","parameters":[],"src":"10574:0:4"},"scope":1331,"src":"10506:288:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1423],"body":{"id":1192,"nodeType":"Block","src":"10933:45:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1189,"name":"_rollbackDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"10943:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10943:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1191,"nodeType":"ExpressionStatement","src":"10943:28:4"}]},"documentation":{"id":1183,"nodeType":"StructuredDocumentation","src":"10800:47:4","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"0aa6220b","id":1193,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1186,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"10913:18:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1187,"kind":"modifierInvocation","modifierName":{"id":1185,"name":"onlyRole","nameLocations":["10904:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"10904:8:4"},"nodeType":"ModifierInvocation","src":"10904:28:4"}],"name":"rollbackDefaultAdminDelay","nameLocation":"10861:25:4","nodeType":"FunctionDefinition","parameters":{"id":1184,"nodeType":"ParameterList","parameters":[],"src":"10886:2:4"},"returnParameters":{"id":1188,"nodeType":"ParameterList","parameters":[],"src":"10933:0:4"},"scope":1331,"src":"10852:126:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1202,"nodeType":"Block","src":"11160:39:4","statements":[{"expression":{"arguments":[{"hexValue":"30","id":1198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11187:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11190:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1197,"name":"_setPendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"11170:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (uint48,uint48)"}},"id":1200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11170:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1201,"nodeType":"ExpressionStatement","src":"11170:22:4"}]},"documentation":{"id":1194,"nodeType":"StructuredDocumentation","src":"10984:116:4","text":" @dev See {rollbackDefaultAdminDelay}.\n Internal function without access restriction."},"id":1203,"implemented":true,"kind":"function","modifiers":[],"name":"_rollbackDefaultAdminDelay","nameLocation":"11114:26:4","nodeType":"FunctionDefinition","parameters":{"id":1195,"nodeType":"ParameterList","parameters":[],"src":"11140:2:4"},"returnParameters":{"id":1196,"nodeType":"ParameterList","parameters":[],"src":"11160:0:4"},"scope":1331,"src":"11105:94:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1233,"nodeType":"Block","src":"11628:1167:4","statements":[{"assignments":[1212],"declarations":[{"constant":false,"id":1212,"mutability":"mutable","name":"currentDelay","nameLocation":"11645:12:4","nodeType":"VariableDeclaration","scope":1233,"src":"11638:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1211,"name":"uint48","nodeType":"ElementaryTypeName","src":"11638:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1215,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1213,"name":"defaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"11660:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":1214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11660:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"11638:41:4"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1216,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"12598:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1217,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1212,"src":"12609:12:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12598:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1228,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1212,"src":"12765:12:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1229,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"12780:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12765:23:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12598:190:4","trueExpression":{"arguments":[{"arguments":[{"id":1223,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"12656:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1224,"name":"defaultAdminDelayIncreaseWait","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1005,"src":"12666:29:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12666:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":1221,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"12647:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12652:3:4","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"12647:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12647:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12640:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":1219,"name":"uint48","nodeType":"ElementaryTypeName","src":"12640:6:4","typeDescriptions":{}}},"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12640:59:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":1210,"id":1232,"nodeType":"Return","src":"12579:209:4"}]},"documentation":{"id":1204,"nodeType":"StructuredDocumentation","src":"11205:336:4","text":" @dev Returns the amount of seconds to wait after the `newDelay` will\n become the new {defaultAdminDelay}.\n The value returned guarantees that if the delay is reduced, it will go into effect\n after a wait that honors the previously set delay.\n See {defaultAdminDelayIncreaseWait}."},"id":1234,"implemented":true,"kind":"function","modifiers":[],"name":"_delayChangeWait","nameLocation":"11555:16:4","nodeType":"FunctionDefinition","parameters":{"id":1207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1206,"mutability":"mutable","name":"newDelay","nameLocation":"11579:8:4","nodeType":"VariableDeclaration","scope":1234,"src":"11572:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1205,"name":"uint48","nodeType":"ElementaryTypeName","src":"11572:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"11571:17:4"},"returnParameters":{"id":1210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1234,"src":"11620:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1208,"name":"uint48","nodeType":"ElementaryTypeName","src":"11620:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"11619:8:4"},"scope":1331,"src":"11546:1249:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1263,"nodeType":"Block","src":"13068:446:4","statements":[{"assignments":[null,1243],"declarations":[null,{"constant":false,"id":1243,"mutability":"mutable","name":"oldSchedule","nameLocation":"13088:11:4","nodeType":"VariableDeclaration","scope":1263,"src":"13081:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1242,"name":"uint48","nodeType":"ElementaryTypeName","src":"13081:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1246,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1244,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"13103:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13103:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"13078:46:4"},{"expression":{"id":1249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1247,"name":"_pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"13135:20:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1248,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"13158:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13135:31:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1250,"nodeType":"ExpressionStatement","src":"13135:31:4"},{"expression":{"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1251,"name":"_pendingDefaultAdminSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"13176:28:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1252,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"13207:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"13176:42:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1254,"nodeType":"ExpressionStatement","src":"13176:42:4"},{"condition":{"arguments":[{"id":1256,"name":"oldSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"13345:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1255,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"13330:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":1257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13330:27:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1262,"nodeType":"IfStatement","src":"13326:182:4","trueBody":{"id":1261,"nodeType":"Block","src":"13359:149:4","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1258,"name":"DefaultAdminTransferCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"13467:28:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13467:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1260,"nodeType":"EmitStatement","src":"13462:35:4"}]}}]},"documentation":{"id":1235,"nodeType":"StructuredDocumentation","src":"12842:142:4","text":" @dev Setter of the tuple for pending admin and its schedule.\n May emit a {DefaultAdminTransferCanceled} event."},"id":1264,"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingDefaultAdmin","nameLocation":"12998:23:4","nodeType":"FunctionDefinition","parameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1237,"mutability":"mutable","name":"newAdmin","nameLocation":"13030:8:4","nodeType":"VariableDeclaration","scope":1264,"src":"13022:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1236,"name":"address","nodeType":"ElementaryTypeName","src":"13022:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1239,"mutability":"mutable","name":"newSchedule","nameLocation":"13047:11:4","nodeType":"VariableDeclaration","scope":1264,"src":"13040:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1238,"name":"uint48","nodeType":"ElementaryTypeName","src":"13040:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"13021:38:4"},"returnParameters":{"id":1241,"nodeType":"ParameterList","parameters":[],"src":"13068:0:4"},"scope":1331,"src":"12989:525:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1302,"nodeType":"Block","src":"13741:514:4","statements":[{"assignments":[1273],"declarations":[{"constant":false,"id":1273,"mutability":"mutable","name":"oldSchedule","nameLocation":"13758:11:4","nodeType":"VariableDeclaration","scope":1302,"src":"13751:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1272,"name":"uint48","nodeType":"ElementaryTypeName","src":"13751:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1275,"initialValue":{"id":1274,"name":"_pendingDelaySchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"13772:21:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"13751:42:4"},{"condition":{"arguments":[{"id":1277,"name":"oldSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1273,"src":"13823:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1276,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"13808:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":1278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13808:27:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1293,"nodeType":"IfStatement","src":"13804:365:4","trueBody":{"id":1292,"nodeType":"Block","src":"13837:332:4","statements":[{"condition":{"arguments":[{"id":1280,"name":"oldSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1273,"src":"13874:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1279,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"13855:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13855:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1290,"nodeType":"Block","src":"14003:156:4","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1287,"name":"DefaultAdminDelayChangeCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"14111:31:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14111:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1289,"nodeType":"EmitStatement","src":"14106:38:4"}]},"id":1291,"nodeType":"IfStatement","src":"13851:308:4","trueBody":{"id":1286,"nodeType":"Block","src":"13888:109:4","statements":[{"expression":{"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1282,"name":"_currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":640,"src":"13953:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1283,"name":"_pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"13969:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"13953:29:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1285,"nodeType":"ExpressionStatement","src":"13953:29:4"}]}}]}},{"expression":{"id":1296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1294,"name":"_pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"14179:13:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1295,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1267,"src":"14195:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14179:24:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1297,"nodeType":"ExpressionStatement","src":"14179:24:4"},{"expression":{"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1298,"name":"_pendingDelaySchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"14213:21:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1299,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"14237:11:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14213:35:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1301,"nodeType":"ExpressionStatement","src":"14213:35:4"}]},"documentation":{"id":1265,"nodeType":"StructuredDocumentation","src":"13520:145:4","text":" @dev Setter of the tuple for pending delay and its schedule.\n May emit a {DefaultAdminDelayChangeCanceled} event."},"id":1303,"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingDelay","nameLocation":"13679:16:4","nodeType":"FunctionDefinition","parameters":{"id":1270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1267,"mutability":"mutable","name":"newDelay","nameLocation":"13703:8:4","nodeType":"VariableDeclaration","scope":1303,"src":"13696:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1266,"name":"uint48","nodeType":"ElementaryTypeName","src":"13696:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":1269,"mutability":"mutable","name":"newSchedule","nameLocation":"13720:11:4","nodeType":"VariableDeclaration","scope":1303,"src":"13713:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1268,"name":"uint48","nodeType":"ElementaryTypeName","src":"13713:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"13695:37:4"},"returnParameters":{"id":1271,"nodeType":"ParameterList","parameters":[],"src":"13741:0:4"},"scope":1331,"src":"13670:585:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1315,"nodeType":"Block","src":"14468:37:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1311,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1306,"src":"14485:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14497:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14485:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1310,"id":1314,"nodeType":"Return","src":"14478:20:4"}]},"documentation":{"id":1304,"nodeType":"StructuredDocumentation","src":"14302:92:4","text":" @dev Defines if a `schedule` is considered set. For consistency purposes."},"id":1316,"implemented":true,"kind":"function","modifiers":[],"name":"_isScheduleSet","nameLocation":"14408:14:4","nodeType":"FunctionDefinition","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1306,"mutability":"mutable","name":"schedule","nameLocation":"14430:8:4","nodeType":"VariableDeclaration","scope":1316,"src":"14423:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1305,"name":"uint48","nodeType":"ElementaryTypeName","src":"14423:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14422:17:4"},"returnParameters":{"id":1310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1316,"src":"14462:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1308,"name":"bool","nodeType":"ElementaryTypeName","src":"14462:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14461:6:4"},"scope":1331,"src":"14399:106:4","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1329,"nodeType":"Block","src":"14684:50:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1324,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"14701:8:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1325,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"14712:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14718:9:4","memberName":"timestamp","nodeType":"MemberAccess","src":"14712:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14701:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1323,"id":1328,"nodeType":"Return","src":"14694:33:4"}]},"documentation":{"id":1317,"nodeType":"StructuredDocumentation","src":"14511:95:4","text":" @dev Defines if a `schedule` is considered passed. For consistency purposes."},"id":1330,"implemented":true,"kind":"function","modifiers":[],"name":"_hasSchedulePassed","nameLocation":"14620:18:4","nodeType":"FunctionDefinition","parameters":{"id":1320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1319,"mutability":"mutable","name":"schedule","nameLocation":"14646:8:4","nodeType":"VariableDeclaration","scope":1330,"src":"14639:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1318,"name":"uint48","nodeType":"ElementaryTypeName","src":"14639:6:4","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14638:17:4"},"returnParameters":{"id":1323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1322,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1330,"src":"14678:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1321,"name":"bool","nodeType":"ElementaryTypeName","src":"14678:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14677:6:4"},"scope":1331,"src":"14611:123:4","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":1332,"src":"1853:12883:4","usedErrors":[305,308,1343,1346,1351,7935],"usedEvents":[317,326,335,1358,1361,1368,1371]}],"src":"136:14601:4"},"id":4},"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol","exportedSymbols":{"IAccessControl":[378],"IAccessControlDefaultAdminRules":[1430]},"id":1431,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1333,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"137:24:5"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"../IAccessControl.sol","id":1335,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1431,"sourceUnit":379,"src":"163:53:5","symbolAliases":[{"foreign":{"id":1334,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"171:14:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1337,"name":"IAccessControl","nameLocations":["371:14:5"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"371:14:5"},"id":1338,"nodeType":"InheritanceSpecifier","src":"371:14:5"}],"canonicalName":"IAccessControlDefaultAdminRules","contractDependencies":[],"contractKind":"interface","documentation":{"id":1336,"nodeType":"StructuredDocumentation","src":"218:107:5","text":" @dev External interface of AccessControlDefaultAdminRules declared to support ERC-165 detection."},"fullyImplemented":false,"id":1430,"linearizedBaseContracts":[1430,378],"name":"IAccessControlDefaultAdminRules","nameLocation":"336:31:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1339,"nodeType":"StructuredDocumentation","src":"392:75:5","text":" @dev The new default admin is not a valid default admin."},"errorSelector":"c22c8022","id":1343,"name":"AccessControlInvalidDefaultAdmin","nameLocation":"478:32:5","nodeType":"ErrorDefinition","parameters":{"id":1342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1341,"mutability":"mutable","name":"defaultAdmin","nameLocation":"519:12:5","nodeType":"VariableDeclaration","scope":1343,"src":"511:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1340,"name":"address","nodeType":"ElementaryTypeName","src":"511:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"510:22:5"},"src":"472:61:5"},{"documentation":{"id":1344,"nodeType":"StructuredDocumentation","src":"539:299:5","text":" @dev At least one of the following rules was violated:\n - The `DEFAULT_ADMIN_ROLE` must only be managed by itself.\n - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time.\n - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps."},"errorSelector":"3fc3c27a","id":1346,"name":"AccessControlEnforcedDefaultAdminRules","nameLocation":"849:38:5","nodeType":"ErrorDefinition","parameters":{"id":1345,"nodeType":"ParameterList","parameters":[],"src":"887:2:5"},"src":"843:47:5"},{"documentation":{"id":1347,"nodeType":"StructuredDocumentation","src":"896:221:5","text":" @dev The delay for transferring the default admin delay is enforced and\n the operation must wait until `schedule`.\n NOTE: `schedule` can be 0 indicating there's no transfer scheduled."},"errorSelector":"19ca5ebb","id":1351,"name":"AccessControlEnforcedDefaultAdminDelay","nameLocation":"1128:38:5","nodeType":"ErrorDefinition","parameters":{"id":1350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1349,"mutability":"mutable","name":"schedule","nameLocation":"1174:8:5","nodeType":"VariableDeclaration","scope":1351,"src":"1167:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1348,"name":"uint48","nodeType":"ElementaryTypeName","src":"1167:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1166:17:5"},"src":"1122:62:5"},{"anonymous":false,"documentation":{"id":1352,"nodeType":"StructuredDocumentation","src":"1190:232:5","text":" @dev Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next\n address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule`\n passes."},"eventSelector":"3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed6","id":1358,"name":"DefaultAdminTransferScheduled","nameLocation":"1433:29:5","nodeType":"EventDefinition","parameters":{"id":1357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1354,"indexed":true,"mutability":"mutable","name":"newAdmin","nameLocation":"1479:8:5","nodeType":"VariableDeclaration","scope":1358,"src":"1463:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1353,"name":"address","nodeType":"ElementaryTypeName","src":"1463:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1356,"indexed":false,"mutability":"mutable","name":"acceptSchedule","nameLocation":"1496:14:5","nodeType":"VariableDeclaration","scope":1358,"src":"1489:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1355,"name":"uint48","nodeType":"ElementaryTypeName","src":"1489:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1462:49:5"},"src":"1427:85:5"},{"anonymous":false,"documentation":{"id":1359,"nodeType":"StructuredDocumentation","src":"1518:123:5","text":" @dev Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule."},"eventSelector":"8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109","id":1361,"name":"DefaultAdminTransferCanceled","nameLocation":"1652:28:5","nodeType":"EventDefinition","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[],"src":"1680:2:5"},"src":"1646:37:5"},{"anonymous":false,"documentation":{"id":1362,"nodeType":"StructuredDocumentation","src":"1689:201:5","text":" @dev Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next\n delay to be applied between default admin transfer after `effectSchedule` has passed."},"eventSelector":"f1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b","id":1368,"name":"DefaultAdminDelayChangeScheduled","nameLocation":"1901:32:5","nodeType":"EventDefinition","parameters":{"id":1367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1364,"indexed":false,"mutability":"mutable","name":"newDelay","nameLocation":"1941:8:5","nodeType":"VariableDeclaration","scope":1368,"src":"1934:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1363,"name":"uint48","nodeType":"ElementaryTypeName","src":"1934:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":1366,"indexed":false,"mutability":"mutable","name":"effectSchedule","nameLocation":"1958:14:5","nodeType":"VariableDeclaration","scope":1368,"src":"1951:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1365,"name":"uint48","nodeType":"ElementaryTypeName","src":"1951:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1933:40:5"},"src":"1895:79:5"},{"anonymous":false,"documentation":{"id":1369,"nodeType":"StructuredDocumentation","src":"1980:103:5","text":" @dev Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass."},"eventSelector":"2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5","id":1371,"name":"DefaultAdminDelayChangeCanceled","nameLocation":"2094:31:5","nodeType":"EventDefinition","parameters":{"id":1370,"nodeType":"ParameterList","parameters":[],"src":"2125:2:5"},"src":"2088:40:5"},{"documentation":{"id":1372,"nodeType":"StructuredDocumentation","src":"2134:87:5","text":" @dev Returns the address of the current `DEFAULT_ADMIN_ROLE` holder."},"functionSelector":"84ef8ffc","id":1377,"implemented":false,"kind":"function","modifiers":[],"name":"defaultAdmin","nameLocation":"2235:12:5","nodeType":"FunctionDefinition","parameters":{"id":1373,"nodeType":"ParameterList","parameters":[],"src":"2247:2:5"},"returnParameters":{"id":1376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1377,"src":"2273:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1374,"name":"address","nodeType":"ElementaryTypeName","src":"2273:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2272:9:5"},"scope":1430,"src":"2226:56:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1378,"nodeType":"StructuredDocumentation","src":"2288:443:5","text":" @dev Returns a tuple of a `newAdmin` and an accept schedule.\n After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role\n by calling {acceptDefaultAdminTransfer}, completing the role transfer.\n A zero value only in `acceptSchedule` indicates no pending admin transfer.\n NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced."},"functionSelector":"cf6eefb7","id":1385,"implemented":false,"kind":"function","modifiers":[],"name":"pendingDefaultAdmin","nameLocation":"2745:19:5","nodeType":"FunctionDefinition","parameters":{"id":1379,"nodeType":"ParameterList","parameters":[],"src":"2764:2:5"},"returnParameters":{"id":1384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1381,"mutability":"mutable","name":"newAdmin","nameLocation":"2798:8:5","nodeType":"VariableDeclaration","scope":1385,"src":"2790:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1380,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1383,"mutability":"mutable","name":"acceptSchedule","nameLocation":"2815:14:5","nodeType":"VariableDeclaration","scope":1385,"src":"2808:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1382,"name":"uint48","nodeType":"ElementaryTypeName","src":"2808:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2789:41:5"},"scope":1430,"src":"2736:95:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1386,"nodeType":"StructuredDocumentation","src":"2837:451:5","text":" @dev Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started.\n This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set\n the acceptance schedule.\n NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this\n function returns the new delay. See {changeDefaultAdminDelay}."},"functionSelector":"cc8463c8","id":1391,"implemented":false,"kind":"function","modifiers":[],"name":"defaultAdminDelay","nameLocation":"3302:17:5","nodeType":"FunctionDefinition","parameters":{"id":1387,"nodeType":"ParameterList","parameters":[],"src":"3319:2:5"},"returnParameters":{"id":1390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1389,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1391,"src":"3345:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1388,"name":"uint48","nodeType":"ElementaryTypeName","src":"3345:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3344:8:5"},"scope":1430,"src":"3293:60:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1392,"nodeType":"StructuredDocumentation","src":"3359:482:5","text":" @dev Returns a tuple of `newDelay` and an effect schedule.\n After the `schedule` passes, the `newDelay` will get into effect immediately for every\n new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}.\n A zero value only in `effectSchedule` indicates no pending delay change.\n NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay}\n will be zero after the effect schedule."},"functionSelector":"a1eda53c","id":1399,"implemented":false,"kind":"function","modifiers":[],"name":"pendingDefaultAdminDelay","nameLocation":"3855:24:5","nodeType":"FunctionDefinition","parameters":{"id":1393,"nodeType":"ParameterList","parameters":[],"src":"3879:2:5"},"returnParameters":{"id":1398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1395,"mutability":"mutable","name":"newDelay","nameLocation":"3912:8:5","nodeType":"VariableDeclaration","scope":1399,"src":"3905:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1394,"name":"uint48","nodeType":"ElementaryTypeName","src":"3905:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":1397,"mutability":"mutable","name":"effectSchedule","nameLocation":"3929:14:5","nodeType":"VariableDeclaration","scope":1399,"src":"3922:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1396,"name":"uint48","nodeType":"ElementaryTypeName","src":"3922:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3904:40:5"},"scope":1430,"src":"3846:99:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1400,"nodeType":"StructuredDocumentation","src":"3951:334:5","text":" @dev Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance\n after the current timestamp plus a {defaultAdminDelay}.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n Emits a {DefaultAdminTransferScheduled} event."},"functionSelector":"634e93da","id":1405,"implemented":false,"kind":"function","modifiers":[],"name":"beginDefaultAdminTransfer","nameLocation":"4299:25:5","nodeType":"FunctionDefinition","parameters":{"id":1403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1402,"mutability":"mutable","name":"newAdmin","nameLocation":"4333:8:5","nodeType":"VariableDeclaration","scope":1405,"src":"4325:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1401,"name":"address","nodeType":"ElementaryTypeName","src":"4325:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4324:18:5"},"returnParameters":{"id":1404,"nodeType":"ParameterList","parameters":[],"src":"4351:0:5"},"scope":1430,"src":"4290:62:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1406,"nodeType":"StructuredDocumentation","src":"4358:364:5","text":" @dev Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}.\n A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n May emit a {DefaultAdminTransferCanceled} event."},"functionSelector":"d602b9fd","id":1409,"implemented":false,"kind":"function","modifiers":[],"name":"cancelDefaultAdminTransfer","nameLocation":"4736:26:5","nodeType":"FunctionDefinition","parameters":{"id":1407,"nodeType":"ParameterList","parameters":[],"src":"4762:2:5"},"returnParameters":{"id":1408,"nodeType":"ParameterList","parameters":[],"src":"4773:0:5"},"scope":1430,"src":"4727:47:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1410,"nodeType":"StructuredDocumentation","src":"4780:539:5","text":" @dev Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}.\n After calling the function:\n - `DEFAULT_ADMIN_ROLE` should be granted to the caller.\n - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder.\n - {pendingDefaultAdmin} should be reset to zero values.\n Requirements:\n - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`.\n - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed."},"functionSelector":"cefc1429","id":1413,"implemented":false,"kind":"function","modifiers":[],"name":"acceptDefaultAdminTransfer","nameLocation":"5333:26:5","nodeType":"FunctionDefinition","parameters":{"id":1411,"nodeType":"ParameterList","parameters":[],"src":"5359:2:5"},"returnParameters":{"id":1412,"nodeType":"ParameterList","parameters":[],"src":"5370:0:5"},"scope":1430,"src":"5324:47:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1414,"nodeType":"StructuredDocumentation","src":"5377:1414:5","text":" @dev Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting\n into effect after the current timestamp plus a {defaultAdminDelay}.\n This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this\n method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay}\n set before calling.\n The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then\n calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin}\n complete transfer (including acceptance).\n The schedule is designed for two scenarios:\n - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by\n {defaultAdminDelayIncreaseWait}.\n - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`.\n A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n Emits a {DefaultAdminDelayChangeScheduled} event and may emit a {DefaultAdminDelayChangeCanceled} event."},"functionSelector":"649a5ec7","id":1419,"implemented":false,"kind":"function","modifiers":[],"name":"changeDefaultAdminDelay","nameLocation":"6805:23:5","nodeType":"FunctionDefinition","parameters":{"id":1417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1416,"mutability":"mutable","name":"newDelay","nameLocation":"6836:8:5","nodeType":"VariableDeclaration","scope":1419,"src":"6829:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1415,"name":"uint48","nodeType":"ElementaryTypeName","src":"6829:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6828:17:5"},"returnParameters":{"id":1418,"nodeType":"ParameterList","parameters":[],"src":"6854:0:5"},"scope":1430,"src":"6796:59:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1420,"nodeType":"StructuredDocumentation","src":"6861:231:5","text":" @dev Cancels a scheduled {defaultAdminDelay} change.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n May emit a {DefaultAdminDelayChangeCanceled} event."},"functionSelector":"0aa6220b","id":1423,"implemented":false,"kind":"function","modifiers":[],"name":"rollbackDefaultAdminDelay","nameLocation":"7106:25:5","nodeType":"FunctionDefinition","parameters":{"id":1421,"nodeType":"ParameterList","parameters":[],"src":"7131:2:5"},"returnParameters":{"id":1422,"nodeType":"ParameterList","parameters":[],"src":"7142:0:5"},"scope":1430,"src":"7097:46:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1424,"nodeType":"StructuredDocumentation","src":"7149:954:5","text":" @dev Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay})\n to take effect. Default to 5 days.\n When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with\n the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds)\n that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can\n be overridden for a custom {defaultAdminDelay} increase scheduling.\n IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise,\n there's a risk of setting a high new delay that goes into effect almost immediately without the\n possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds)."},"functionSelector":"022d63fb","id":1429,"implemented":false,"kind":"function","modifiers":[],"name":"defaultAdminDelayIncreaseWait","nameLocation":"8117:29:5","nodeType":"FunctionDefinition","parameters":{"id":1425,"nodeType":"ParameterList","parameters":[],"src":"8146:2:5"},"returnParameters":{"id":1428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1427,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1429,"src":"8172:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1426,"name":"uint48","nodeType":"ElementaryTypeName","src":"8172:6:5","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"8171:8:5"},"scope":1430,"src":"8108:72:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1431,"src":"326:7856:5","usedErrors":[305,308,1343,1346,1351],"usedEvents":[317,326,335,1358,1361,1368,1371]}],"src":"137:8046:5"},"id":5},"@openzeppelin/contracts/interfaces/IERC2981.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC2981.sol","exportedSymbols":{"IERC165":[6268],"IERC2981":[1450]},"id":1451,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1432,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"107:24:6"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","id":1434,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1451,"sourceUnit":6269,"src":"133:59:6","symbolAliases":[{"foreign":{"id":1433,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6268,"src":"141:7:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1436,"name":"IERC165","nameLocations":["476:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":6268,"src":"476:7:6"},"id":1437,"nodeType":"InheritanceSpecifier","src":"476:7:6"}],"canonicalName":"IERC2981","contractDependencies":[],"contractKind":"interface","documentation":{"id":1435,"nodeType":"StructuredDocumentation","src":"194:259:6","text":" @dev Interface for the NFT Royalty Standard.\n A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\n support for royalty payments across all NFT marketplaces and ecosystem participants."},"fullyImplemented":false,"id":1450,"linearizedBaseContracts":[1450,6268],"name":"IERC2981","nameLocation":"464:8:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1438,"nodeType":"StructuredDocumentation","src":"490:473:6","text":" @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\n exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\n NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the\n royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers."},"functionSelector":"2a55205a","id":1449,"implemented":false,"kind":"function","modifiers":[],"name":"royaltyInfo","nameLocation":"977:11:6","nodeType":"FunctionDefinition","parameters":{"id":1443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1440,"mutability":"mutable","name":"tokenId","nameLocation":"1006:7:6","nodeType":"VariableDeclaration","scope":1449,"src":"998:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"998:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1442,"mutability":"mutable","name":"salePrice","nameLocation":"1031:9:6","nodeType":"VariableDeclaration","scope":1449,"src":"1023:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1441,"name":"uint256","nodeType":"ElementaryTypeName","src":"1023:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"988:58:6"},"returnParameters":{"id":1448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1445,"mutability":"mutable","name":"receiver","nameLocation":"1078:8:6","nodeType":"VariableDeclaration","scope":1449,"src":"1070:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1444,"name":"address","nodeType":"ElementaryTypeName","src":"1070:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1447,"mutability":"mutable","name":"royaltyAmount","nameLocation":"1096:13:6","nodeType":"VariableDeclaration","scope":1449,"src":"1088:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1446,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1069:41:6"},"scope":1450,"src":"968:143:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1451,"src":"454:659:6","usedErrors":[],"usedEvents":[]}],"src":"107:1007:6"},"id":6},"@openzeppelin/contracts/interfaces/IERC5313.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5313.sol","exportedSymbols":{"IERC5313":[1460]},"id":1461,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1452,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"107:25:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC5313","contractDependencies":[],"contractKind":"interface","documentation":{"id":1453,"nodeType":"StructuredDocumentation","src":"134:164:7","text":" @dev Interface for the Light Contract Ownership Standard.\n A standardized minimal interface required to identify an account that controls a contract"},"fullyImplemented":false,"id":1460,"linearizedBaseContracts":[1460],"name":"IERC5313","nameLocation":"309:8:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1454,"nodeType":"StructuredDocumentation","src":"324:54:7","text":" @dev Gets the address of the owner."},"functionSelector":"8da5cb5b","id":1459,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"392:5:7","nodeType":"FunctionDefinition","parameters":{"id":1455,"nodeType":"ParameterList","parameters":[],"src":"397:2:7"},"returnParameters":{"id":1458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1459,"src":"423:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1456,"name":"address","nodeType":"ElementaryTypeName","src":"423:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"422:9:7"},"scope":1460,"src":"383:49:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1461,"src":"299:135:7","usedErrors":[],"usedEvents":[]}],"src":"107:328:7"},"id":7},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[1597],"IERC20Errors":[1502],"IERC721Errors":[1550]},"id":1598,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1462,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"113:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1463,"nodeType":"StructuredDocumentation","src":"139:141:8","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"id":1502,"linearizedBaseContracts":[1502],"name":"IERC20Errors","nameLocation":"291:12:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1464,"nodeType":"StructuredDocumentation","src":"310:309:8","text":" @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."},"errorSelector":"e450d38c","id":1472,"name":"ERC20InsufficientBalance","nameLocation":"630:24:8","nodeType":"ErrorDefinition","parameters":{"id":1471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1466,"mutability":"mutable","name":"sender","nameLocation":"663:6:8","nodeType":"VariableDeclaration","scope":1472,"src":"655:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1465,"name":"address","nodeType":"ElementaryTypeName","src":"655:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1468,"mutability":"mutable","name":"balance","nameLocation":"679:7:8","nodeType":"VariableDeclaration","scope":1472,"src":"671:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1467,"name":"uint256","nodeType":"ElementaryTypeName","src":"671:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1470,"mutability":"mutable","name":"needed","nameLocation":"696:6:8","nodeType":"VariableDeclaration","scope":1472,"src":"688:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1469,"name":"uint256","nodeType":"ElementaryTypeName","src":"688:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:49:8"},"src":"624:80:8"},{"documentation":{"id":1473,"nodeType":"StructuredDocumentation","src":"710:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":1477,"name":"ERC20InvalidSender","nameLocation":"873:18:8","nodeType":"ErrorDefinition","parameters":{"id":1476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1475,"mutability":"mutable","name":"sender","nameLocation":"900:6:8","nodeType":"VariableDeclaration","scope":1477,"src":"892:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1474,"name":"address","nodeType":"ElementaryTypeName","src":"892:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"891:16:8"},"src":"867:41:8"},{"documentation":{"id":1478,"nodeType":"StructuredDocumentation","src":"914:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":1482,"name":"ERC20InvalidReceiver","nameLocation":"1084:20:8","nodeType":"ErrorDefinition","parameters":{"id":1481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1480,"mutability":"mutable","name":"receiver","nameLocation":"1113:8:8","nodeType":"VariableDeclaration","scope":1482,"src":"1105:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1479,"name":"address","nodeType":"ElementaryTypeName","src":"1105:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1104:18:8"},"src":"1078:45:8"},{"documentation":{"id":1483,"nodeType":"StructuredDocumentation","src":"1129:345:8","text":" @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."},"errorSelector":"fb8f41b2","id":1491,"name":"ERC20InsufficientAllowance","nameLocation":"1485:26:8","nodeType":"ErrorDefinition","parameters":{"id":1490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1485,"mutability":"mutable","name":"spender","nameLocation":"1520:7:8","nodeType":"VariableDeclaration","scope":1491,"src":"1512:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1484,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1487,"mutability":"mutable","name":"allowance","nameLocation":"1537:9:8","nodeType":"VariableDeclaration","scope":1491,"src":"1529:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1486,"name":"uint256","nodeType":"ElementaryTypeName","src":"1529:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1489,"mutability":"mutable","name":"needed","nameLocation":"1556:6:8","nodeType":"VariableDeclaration","scope":1491,"src":"1548:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1488,"name":"uint256","nodeType":"ElementaryTypeName","src":"1548:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1511:52:8"},"src":"1479:85:8"},{"documentation":{"id":1492,"nodeType":"StructuredDocumentation","src":"1570:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":1496,"name":"ERC20InvalidApprover","nameLocation":"1755:20:8","nodeType":"ErrorDefinition","parameters":{"id":1495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1494,"mutability":"mutable","name":"approver","nameLocation":"1784:8:8","nodeType":"VariableDeclaration","scope":1496,"src":"1776:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1493,"name":"address","nodeType":"ElementaryTypeName","src":"1776:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1775:18:8"},"src":"1749:45:8"},{"documentation":{"id":1497,"nodeType":"StructuredDocumentation","src":"1800:195:8","text":" @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."},"errorSelector":"94280d62","id":1501,"name":"ERC20InvalidSpender","nameLocation":"2006:19:8","nodeType":"ErrorDefinition","parameters":{"id":1500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1499,"mutability":"mutable","name":"spender","nameLocation":"2034:7:8","nodeType":"VariableDeclaration","scope":1501,"src":"2026:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1498,"name":"address","nodeType":"ElementaryTypeName","src":"2026:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2025:17:8"},"src":"2000:43:8"}],"scope":1598,"src":"281:1764:8","usedErrors":[1472,1477,1482,1491,1496,1501],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1503,"nodeType":"StructuredDocumentation","src":"2047:143:8","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"id":1550,"linearizedBaseContracts":[1550],"name":"IERC721Errors","nameLocation":"2201:13:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1504,"nodeType":"StructuredDocumentation","src":"2221:220:8","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":1508,"name":"ERC721InvalidOwner","nameLocation":"2452:18:8","nodeType":"ErrorDefinition","parameters":{"id":1507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1506,"mutability":"mutable","name":"owner","nameLocation":"2479:5:8","nodeType":"VariableDeclaration","scope":1508,"src":"2471:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1505,"name":"address","nodeType":"ElementaryTypeName","src":"2471:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2470:15:8"},"src":"2446:40:8"},{"documentation":{"id":1509,"nodeType":"StructuredDocumentation","src":"2492:132:8","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":1513,"name":"ERC721NonexistentToken","nameLocation":"2635:22:8","nodeType":"ErrorDefinition","parameters":{"id":1512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1511,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:8","nodeType":"VariableDeclaration","scope":1513,"src":"2658:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1510,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2657:17:8"},"src":"2629:46:8"},{"documentation":{"id":1514,"nodeType":"StructuredDocumentation","src":"2681:289:8","text":" @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."},"errorSelector":"64283d7b","id":1522,"name":"ERC721IncorrectOwner","nameLocation":"2981:20:8","nodeType":"ErrorDefinition","parameters":{"id":1521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1516,"mutability":"mutable","name":"sender","nameLocation":"3010:6:8","nodeType":"VariableDeclaration","scope":1522,"src":"3002:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1515,"name":"address","nodeType":"ElementaryTypeName","src":"3002:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1518,"mutability":"mutable","name":"tokenId","nameLocation":"3026:7:8","nodeType":"VariableDeclaration","scope":1522,"src":"3018:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1517,"name":"uint256","nodeType":"ElementaryTypeName","src":"3018:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1520,"mutability":"mutable","name":"owner","nameLocation":"3043:5:8","nodeType":"VariableDeclaration","scope":1522,"src":"3035:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1519,"name":"address","nodeType":"ElementaryTypeName","src":"3035:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3001:48:8"},"src":"2975:75:8"},{"documentation":{"id":1523,"nodeType":"StructuredDocumentation","src":"3056:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":1527,"name":"ERC721InvalidSender","nameLocation":"3219:19:8","nodeType":"ErrorDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1525,"mutability":"mutable","name":"sender","nameLocation":"3247:6:8","nodeType":"VariableDeclaration","scope":1527,"src":"3239:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1524,"name":"address","nodeType":"ElementaryTypeName","src":"3239:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3238:16:8"},"src":"3213:42:8"},{"documentation":{"id":1528,"nodeType":"StructuredDocumentation","src":"3261:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":1532,"name":"ERC721InvalidReceiver","nameLocation":"3431:21:8","nodeType":"ErrorDefinition","parameters":{"id":1531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1530,"mutability":"mutable","name":"receiver","nameLocation":"3461:8:8","nodeType":"VariableDeclaration","scope":1532,"src":"3453:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1529,"name":"address","nodeType":"ElementaryTypeName","src":"3453:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3452:18:8"},"src":"3425:46:8"},{"documentation":{"id":1533,"nodeType":"StructuredDocumentation","src":"3477:247:8","text":" @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."},"errorSelector":"177e802f","id":1539,"name":"ERC721InsufficientApproval","nameLocation":"3735:26:8","nodeType":"ErrorDefinition","parameters":{"id":1538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1535,"mutability":"mutable","name":"operator","nameLocation":"3770:8:8","nodeType":"VariableDeclaration","scope":1539,"src":"3762:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1534,"name":"address","nodeType":"ElementaryTypeName","src":"3762:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1537,"mutability":"mutable","name":"tokenId","nameLocation":"3788:7:8","nodeType":"VariableDeclaration","scope":1539,"src":"3780:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1536,"name":"uint256","nodeType":"ElementaryTypeName","src":"3780:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3761:35:8"},"src":"3729:68:8"},{"documentation":{"id":1540,"nodeType":"StructuredDocumentation","src":"3803:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":1544,"name":"ERC721InvalidApprover","nameLocation":"3988:21:8","nodeType":"ErrorDefinition","parameters":{"id":1543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1542,"mutability":"mutable","name":"approver","nameLocation":"4018:8:8","nodeType":"VariableDeclaration","scope":1544,"src":"4010:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1541,"name":"address","nodeType":"ElementaryTypeName","src":"4010:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4009:18:8"},"src":"3982:46:8"},{"documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"4034:197:8","text":" @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."},"errorSelector":"5b08ba18","id":1549,"name":"ERC721InvalidOperator","nameLocation":"4242:21:8","nodeType":"ErrorDefinition","parameters":{"id":1548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1547,"mutability":"mutable","name":"operator","nameLocation":"4272:8:8","nodeType":"VariableDeclaration","scope":1549,"src":"4264:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1546,"name":"address","nodeType":"ElementaryTypeName","src":"4264:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4263:18:8"},"src":"4236:46:8"}],"scope":1598,"src":"2191:2093:8","usedErrors":[1508,1513,1522,1527,1532,1539,1544,1549],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1551,"nodeType":"StructuredDocumentation","src":"4286:145:8","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"id":1597,"linearizedBaseContracts":[1597],"name":"IERC1155Errors","nameLocation":"4442:14:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1552,"nodeType":"StructuredDocumentation","src":"4463:361:8","text":" @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."},"errorSelector":"03dee4c5","id":1562,"name":"ERC1155InsufficientBalance","nameLocation":"4835:26:8","nodeType":"ErrorDefinition","parameters":{"id":1561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1554,"mutability":"mutable","name":"sender","nameLocation":"4870:6:8","nodeType":"VariableDeclaration","scope":1562,"src":"4862:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1553,"name":"address","nodeType":"ElementaryTypeName","src":"4862:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1556,"mutability":"mutable","name":"balance","nameLocation":"4886:7:8","nodeType":"VariableDeclaration","scope":1562,"src":"4878:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1555,"name":"uint256","nodeType":"ElementaryTypeName","src":"4878:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1558,"mutability":"mutable","name":"needed","nameLocation":"4903:6:8","nodeType":"VariableDeclaration","scope":1562,"src":"4895:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1557,"name":"uint256","nodeType":"ElementaryTypeName","src":"4895:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1560,"mutability":"mutable","name":"tokenId","nameLocation":"4919:7:8","nodeType":"VariableDeclaration","scope":1562,"src":"4911:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1559,"name":"uint256","nodeType":"ElementaryTypeName","src":"4911:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4861:66:8"},"src":"4829:99:8"},{"documentation":{"id":1563,"nodeType":"StructuredDocumentation","src":"4934:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":1567,"name":"ERC1155InvalidSender","nameLocation":"5097:20:8","nodeType":"ErrorDefinition","parameters":{"id":1566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1565,"mutability":"mutable","name":"sender","nameLocation":"5126:6:8","nodeType":"VariableDeclaration","scope":1567,"src":"5118:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1564,"name":"address","nodeType":"ElementaryTypeName","src":"5118:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5117:16:8"},"src":"5091:43:8"},{"documentation":{"id":1568,"nodeType":"StructuredDocumentation","src":"5140:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":1572,"name":"ERC1155InvalidReceiver","nameLocation":"5310:22:8","nodeType":"ErrorDefinition","parameters":{"id":1571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1570,"mutability":"mutable","name":"receiver","nameLocation":"5341:8:8","nodeType":"VariableDeclaration","scope":1572,"src":"5333:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1569,"name":"address","nodeType":"ElementaryTypeName","src":"5333:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5332:18:8"},"src":"5304:47:8"},{"documentation":{"id":1573,"nodeType":"StructuredDocumentation","src":"5357:256:8","text":" @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."},"errorSelector":"e237d922","id":1579,"name":"ERC1155MissingApprovalForAll","nameLocation":"5624:28:8","nodeType":"ErrorDefinition","parameters":{"id":1578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1575,"mutability":"mutable","name":"operator","nameLocation":"5661:8:8","nodeType":"VariableDeclaration","scope":1579,"src":"5653:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1574,"name":"address","nodeType":"ElementaryTypeName","src":"5653:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1577,"mutability":"mutable","name":"owner","nameLocation":"5679:5:8","nodeType":"VariableDeclaration","scope":1579,"src":"5671:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"5671:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5652:33:8"},"src":"5618:68:8"},{"documentation":{"id":1580,"nodeType":"StructuredDocumentation","src":"5692:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":1584,"name":"ERC1155InvalidApprover","nameLocation":"5877:22:8","nodeType":"ErrorDefinition","parameters":{"id":1583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1582,"mutability":"mutable","name":"approver","nameLocation":"5908:8:8","nodeType":"VariableDeclaration","scope":1584,"src":"5900:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1581,"name":"address","nodeType":"ElementaryTypeName","src":"5900:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5899:18:8"},"src":"5871:47:8"},{"documentation":{"id":1585,"nodeType":"StructuredDocumentation","src":"5924:197:8","text":" @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."},"errorSelector":"ced3e100","id":1589,"name":"ERC1155InvalidOperator","nameLocation":"6132:22:8","nodeType":"ErrorDefinition","parameters":{"id":1588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1587,"mutability":"mutable","name":"operator","nameLocation":"6163:8:8","nodeType":"VariableDeclaration","scope":1589,"src":"6155:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1586,"name":"address","nodeType":"ElementaryTypeName","src":"6155:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6154:18:8"},"src":"6126:47:8"},{"documentation":{"id":1590,"nodeType":"StructuredDocumentation","src":"6179:280:8","text":" @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"},"errorSelector":"5b059991","id":1596,"name":"ERC1155InvalidArrayLength","nameLocation":"6470:25:8","nodeType":"ErrorDefinition","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1592,"mutability":"mutable","name":"idsLength","nameLocation":"6504:9:8","nodeType":"VariableDeclaration","scope":1596,"src":"6496:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1591,"name":"uint256","nodeType":"ElementaryTypeName","src":"6496:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1594,"mutability":"mutable","name":"valuesLength","nameLocation":"6523:12:8","nodeType":"VariableDeclaration","scope":1596,"src":"6515:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1593,"name":"uint256","nodeType":"ElementaryTypeName","src":"6515:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6495:41:8"},"src":"6464:73:8"}],"scope":1598,"src":"4432:2107:8","usedErrors":[1562,1567,1572,1579,1584,1589,1596],"usedEvents":[]}],"src":"113:6427:8"},"id":8},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","exportedSymbols":{"Context":[4325],"ERC165":[6256],"ERC721":[2569],"ERC721Utils":[3227],"IERC165":[6268],"IERC721":[2686],"IERC721Errors":[1550],"IERC721Metadata":[3150],"Strings":[6232]},"id":2570,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1599,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"107:24:9"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":1601,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":2687,"src":"133:38:9","symbolAliases":[{"foreign":{"id":1600,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"141:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","id":1603,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":3151,"src":"172:65:9","symbolAliases":[{"foreign":{"id":1602,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"180:15:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol","file":"./utils/ERC721Utils.sol","id":1605,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":3228,"src":"238:52:9","symbolAliases":[{"foreign":{"id":1604,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3227,"src":"246:11:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":1607,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":4326,"src":"291:48:9","symbolAliases":[{"foreign":{"id":1606,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"299:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","id":1609,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":6233,"src":"340:48:9","symbolAliases":[{"foreign":{"id":1608,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"348:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":1612,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":6257,"src":"389:69:9","symbolAliases":[{"foreign":{"id":1610,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6268,"src":"397:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1611,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6256,"src":"406:6:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":1614,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2570,"sourceUnit":1598,"src":"459:66:9","symbolAliases":[{"foreign":{"id":1613,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"467:13:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1616,"name":"Context","nameLocations":["803:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":4325,"src":"803:7:9"},"id":1617,"nodeType":"InheritanceSpecifier","src":"803:7:9"},{"baseName":{"id":1618,"name":"ERC165","nameLocations":["812:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":6256,"src":"812:6:9"},"id":1619,"nodeType":"InheritanceSpecifier","src":"812:6:9"},{"baseName":{"id":1620,"name":"IERC721","nameLocations":["820:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2686,"src":"820:7:9"},"id":1621,"nodeType":"InheritanceSpecifier","src":"820:7:9"},{"baseName":{"id":1622,"name":"IERC721Metadata","nameLocations":["829:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":3150,"src":"829:15:9"},"id":1623,"nodeType":"InheritanceSpecifier","src":"829:15:9"},{"baseName":{"id":1624,"name":"IERC721Errors","nameLocations":["846:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":1550,"src":"846:13:9"},"id":1625,"nodeType":"InheritanceSpecifier","src":"846:13:9"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1615,"nodeType":"StructuredDocumentation","src":"527:247:9","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"id":2569,"linearizedBaseContracts":[2569,1550,3150,2686,6256,6268,4325],"name":"ERC721","nameLocation":"793:6:9","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1628,"libraryName":{"id":1626,"name":"Strings","nameLocations":["872:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6232,"src":"872:7:9"},"nodeType":"UsingForDirective","src":"866:26:9","typeName":{"id":1627,"name":"uint256","nodeType":"ElementaryTypeName","src":"884:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":1630,"mutability":"mutable","name":"_name","nameLocation":"931:5:9","nodeType":"VariableDeclaration","scope":2569,"src":"916:20:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1629,"name":"string","nodeType":"ElementaryTypeName","src":"916:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":1632,"mutability":"mutable","name":"_symbol","nameLocation":"978:7:9","nodeType":"VariableDeclaration","scope":2569,"src":"963:22:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1631,"name":"string","nodeType":"ElementaryTypeName","src":"963:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":1636,"mutability":"mutable","name":"_owners","nameLocation":"1036:7:9","nodeType":"VariableDeclaration","scope":2569,"src":"992:51:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1635,"keyName":"tokenId","keyNameLocation":"1008:7:9","keyType":{"id":1633,"name":"uint256","nodeType":"ElementaryTypeName","src":"1000:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"992:35:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1634,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":1640,"mutability":"mutable","name":"_balances","nameLocation":"1092:9:9","nodeType":"VariableDeclaration","scope":2569,"src":"1050:51:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1639,"keyName":"owner","keyNameLocation":"1066:5:9","keyType":{"id":1637,"name":"address","nodeType":"ElementaryTypeName","src":"1058:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1050:33:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1638,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":1644,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1152:15:9","nodeType":"VariableDeclaration","scope":2569,"src":"1108:59:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1643,"keyName":"tokenId","keyNameLocation":"1124:7:9","keyType":{"id":1641,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1108:35:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1642,"name":"address","nodeType":"ElementaryTypeName","src":"1135:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":1650,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1242:18:9","nodeType":"VariableDeclaration","scope":2569,"src":"1174:86:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1649,"keyName":"owner","keyNameLocation":"1190:5:9","keyType":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"1182:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1174:59:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1648,"keyName":"operator","keyNameLocation":"1215:8:9","keyType":{"id":1646,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1199:33:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1647,"name":"bool","nodeType":"ElementaryTypeName","src":"1227:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":1666,"nodeType":"Block","src":"1436:57:9","statements":[{"expression":{"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1658,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"1446:5:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1659,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1653,"src":"1454:5:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1446:13:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1661,"nodeType":"ExpressionStatement","src":"1446:13:9"},{"expression":{"id":1664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1662,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"1469:7:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1663,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1655,"src":"1479:7:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1469:17:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1665,"nodeType":"ExpressionStatement","src":"1469:17:9"}]},"documentation":{"id":1651,"nodeType":"StructuredDocumentation","src":"1267:108:9","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":1667,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1653,"mutability":"mutable","name":"name_","nameLocation":"1406:5:9","nodeType":"VariableDeclaration","scope":1667,"src":"1392:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1652,"name":"string","nodeType":"ElementaryTypeName","src":"1392:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1655,"mutability":"mutable","name":"symbol_","nameLocation":"1427:7:9","nodeType":"VariableDeclaration","scope":1667,"src":"1413:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1654,"name":"string","nodeType":"ElementaryTypeName","src":"1413:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1391:44:9"},"returnParameters":{"id":1657,"nodeType":"ParameterList","parameters":[],"src":"1436:0:9"},"scope":2569,"src":"1380:113:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[6255,6267],"body":{"id":1697,"nodeType":"Block","src":"1635:192:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1678,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"1664:11:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1680,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"1684:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$2686_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$2686_$","typeString":"type(contract IERC721)"}],"id":1679,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1679:4:9","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1679:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$2686","typeString":"type(contract IERC721)"}},"id":1682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1693:11:9","memberName":"interfaceId","nodeType":"MemberAccess","src":"1679:25:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1664:40:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1684,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"1720:11:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1686,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"1740:15:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$3150_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$3150_$","typeString":"type(contract IERC721Metadata)"}],"id":1685,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1735:4:9","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1735:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$3150","typeString":"type(contract IERC721Metadata)"}},"id":1688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1757:11:9","memberName":"interfaceId","nodeType":"MemberAccess","src":"1735:33:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1720:48:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1664:104:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1693,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"1808:11:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1691,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1784:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2569_$","typeString":"type(contract super ERC721)"}},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1790:17:9","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":6255,"src":"1784:23:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1784:36:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1664:156:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1677,"id":1696,"nodeType":"Return","src":"1645:175:9"}]},"documentation":{"id":1668,"nodeType":"StructuredDocumentation","src":"1499:23:9","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":1698,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1536:17:9","nodeType":"FunctionDefinition","overrides":{"id":1674,"nodeType":"OverrideSpecifier","overrides":[{"id":1672,"name":"ERC165","nameLocations":["1603:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":6256,"src":"1603:6:9"},{"id":1673,"name":"IERC165","nameLocations":["1611:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":6268,"src":"1611:7:9"}],"src":"1594:25:9"},"parameters":{"id":1671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1670,"mutability":"mutable","name":"interfaceId","nameLocation":"1561:11:9","nodeType":"VariableDeclaration","scope":1698,"src":"1554:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1669,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1554:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1553:20:9"},"returnParameters":{"id":1677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1698,"src":"1629:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1675,"name":"bool","nodeType":"ElementaryTypeName","src":"1629:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1628:6:9"},"scope":2569,"src":"1527:300:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2611],"body":{"id":1725,"nodeType":"Block","src":"1933:136:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1706,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1701,"src":"1947:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1964:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1956:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1707,"name":"address","nodeType":"ElementaryTypeName","src":"1956:7:9","typeDescriptions":{}}},"id":1710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1956:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1947:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1720,"nodeType":"IfStatement","src":"1943:87:9","trueBody":{"id":1719,"nodeType":"Block","src":"1968:62:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2016:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2008:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1713,"name":"address","nodeType":"ElementaryTypeName","src":"2008:7:9","typeDescriptions":{}}},"id":1716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2008:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1712,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"1989:18:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1989:30:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1718,"nodeType":"RevertStatement","src":"1982:37:9"}]}},{"expression":{"baseExpression":{"id":1721,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"2046:9:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1723,"indexExpression":{"id":1722,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1701,"src":"2056:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2046:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1705,"id":1724,"nodeType":"Return","src":"2039:23:9"}]},"documentation":{"id":1699,"nodeType":"StructuredDocumentation","src":"1833:23:9","text":"@inheritdoc IERC721"},"functionSelector":"70a08231","id":1726,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1870:9:9","nodeType":"FunctionDefinition","parameters":{"id":1702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1701,"mutability":"mutable","name":"owner","nameLocation":"1888:5:9","nodeType":"VariableDeclaration","scope":1726,"src":"1880:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1700,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1879:15:9"},"returnParameters":{"id":1705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1726,"src":"1924:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1703,"name":"uint256","nodeType":"ElementaryTypeName","src":"1924:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1923:9:9"},"scope":2569,"src":"1861:208:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2619],"body":{"id":1738,"nodeType":"Block","src":"2175:46:9","statements":[{"expression":{"arguments":[{"id":1735,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1729,"src":"2206:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1734,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"2192:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2192:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1733,"id":1737,"nodeType":"Return","src":"2185:29:9"}]},"documentation":{"id":1727,"nodeType":"StructuredDocumentation","src":"2075:23:9","text":"@inheritdoc IERC721"},"functionSelector":"6352211e","id":1739,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2112:7:9","nodeType":"FunctionDefinition","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1729,"mutability":"mutable","name":"tokenId","nameLocation":"2128:7:9","nodeType":"VariableDeclaration","scope":1739,"src":"2120:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1728,"name":"uint256","nodeType":"ElementaryTypeName","src":"2120:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2119:17:9"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1739,"src":"2166:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1731,"name":"address","nodeType":"ElementaryTypeName","src":"2166:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2165:9:9"},"scope":2569,"src":"2103:118:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3135],"body":{"id":1747,"nodeType":"Block","src":"2323:29:9","statements":[{"expression":{"id":1745,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"2340:5:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1744,"id":1746,"nodeType":"Return","src":"2333:12:9"}]},"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"2227:31:9","text":"@inheritdoc IERC721Metadata"},"functionSelector":"06fdde03","id":1748,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2272:4:9","nodeType":"FunctionDefinition","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"2276:2:9"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1748,"src":"2308:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"2308:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2307:15:9"},"scope":2569,"src":"2263:89:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3141],"body":{"id":1756,"nodeType":"Block","src":"2456:31:9","statements":[{"expression":{"id":1754,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"2473:7:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1753,"id":1755,"nodeType":"Return","src":"2466:14:9"}]},"documentation":{"id":1749,"nodeType":"StructuredDocumentation","src":"2358:31:9","text":"@inheritdoc IERC721Metadata"},"functionSelector":"95d89b41","id":1757,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2403:6:9","nodeType":"FunctionDefinition","parameters":{"id":1750,"nodeType":"ParameterList","parameters":[],"src":"2409:2:9"},"returnParameters":{"id":1753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1757,"src":"2441:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1751,"name":"string","nodeType":"ElementaryTypeName","src":"2441:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2440:15:9"},"scope":2569,"src":"2394:93:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3149],"body":{"id":1792,"nodeType":"Block","src":"2608:176:9","statements":[{"expression":{"arguments":[{"id":1766,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"2632:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1765,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"2618:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2618:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1768,"nodeType":"ExpressionStatement","src":"2618:22:9"},{"assignments":[1770],"declarations":[{"constant":false,"id":1770,"mutability":"mutable","name":"baseURI","nameLocation":"2665:7:9","nodeType":"VariableDeclaration","scope":1792,"src":"2651:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1769,"name":"string","nodeType":"ElementaryTypeName","src":"2651:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1773,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1771,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"2675:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2675:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2651:34:9"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1776,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1770,"src":"2708:7:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2702:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1774,"name":"bytes","nodeType":"ElementaryTypeName","src":"2702:5:9","typeDescriptions":{}}},"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2702:14:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2717:6:9","memberName":"length","nodeType":"MemberAccess","src":"2702:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2726:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2702:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2775:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2702:75:9","trueExpression":{"arguments":[{"id":1784,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1770,"src":"2744:7:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1785,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"2753:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:8:9","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":4815,"src":"2753:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2753:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2730:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1781,"name":"string","nodeType":"ElementaryTypeName","src":"2730:6:9","typeDescriptions":{}}},"id":1783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2737:6:9","memberName":"concat","nodeType":"MemberAccess","src":"2730:13:9","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2730:42:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1764,"id":1791,"nodeType":"Return","src":"2695:82:9"}]},"documentation":{"id":1758,"nodeType":"StructuredDocumentation","src":"2493:31:9","text":"@inheritdoc IERC721Metadata"},"functionSelector":"c87b56dd","id":1793,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2538:8:9","nodeType":"FunctionDefinition","parameters":{"id":1761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1760,"mutability":"mutable","name":"tokenId","nameLocation":"2555:7:9","nodeType":"VariableDeclaration","scope":1793,"src":"2547:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1759,"name":"uint256","nodeType":"ElementaryTypeName","src":"2547:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2546:17:9"},"returnParameters":{"id":1764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1793,"src":"2593:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1762,"name":"string","nodeType":"ElementaryTypeName","src":"2593:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2592:15:9"},"scope":2569,"src":"2529:255:9","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1801,"nodeType":"Block","src":"3092:26:9","statements":[{"expression":{"hexValue":"","id":1799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3109:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1798,"id":1800,"nodeType":"Return","src":"3102:9:9"}]},"documentation":{"id":1794,"nodeType":"StructuredDocumentation","src":"2790:231:9","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":1802,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3035:8:9","nodeType":"FunctionDefinition","parameters":{"id":1795,"nodeType":"ParameterList","parameters":[],"src":"3043:2:9"},"returnParameters":{"id":1798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1802,"src":"3077:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1796,"name":"string","nodeType":"ElementaryTypeName","src":"3077:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3076:15:9"},"scope":2569,"src":"3026:92:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[2659],"body":{"id":1817,"nodeType":"Block","src":"3213:52:9","statements":[{"expression":{"arguments":[{"id":1811,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"3232:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1812,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"3236:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1813,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"3245:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3245:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1810,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2421,2487],"referencedDeclaration":2421,"src":"3223:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3223:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1816,"nodeType":"ExpressionStatement","src":"3223:35:9"}]},"documentation":{"id":1803,"nodeType":"StructuredDocumentation","src":"3124:23:9","text":"@inheritdoc IERC721"},"functionSelector":"095ea7b3","id":1818,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3161:7:9","nodeType":"FunctionDefinition","parameters":{"id":1808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1805,"mutability":"mutable","name":"to","nameLocation":"3177:2:9","nodeType":"VariableDeclaration","scope":1818,"src":"3169:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1804,"name":"address","nodeType":"ElementaryTypeName","src":"3169:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1807,"mutability":"mutable","name":"tokenId","nameLocation":"3189:7:9","nodeType":"VariableDeclaration","scope":1818,"src":"3181:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1806,"name":"uint256","nodeType":"ElementaryTypeName","src":"3181:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3168:29:9"},"returnParameters":{"id":1809,"nodeType":"ParameterList","parameters":[],"src":"3213:0:9"},"scope":2569,"src":"3152:113:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2675],"body":{"id":1834,"nodeType":"Block","src":"3375:78:9","statements":[{"expression":{"arguments":[{"id":1827,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"3399:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1826,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"3385:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3385:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1829,"nodeType":"ExpressionStatement","src":"3385:22:9"},{"expression":{"arguments":[{"id":1831,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"3438:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1830,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1988,"src":"3425:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3425:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1825,"id":1833,"nodeType":"Return","src":"3418:28:9"}]},"documentation":{"id":1819,"nodeType":"StructuredDocumentation","src":"3271:23:9","text":"@inheritdoc IERC721"},"functionSelector":"081812fc","id":1835,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3308:11:9","nodeType":"FunctionDefinition","parameters":{"id":1822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1821,"mutability":"mutable","name":"tokenId","nameLocation":"3328:7:9","nodeType":"VariableDeclaration","scope":1835,"src":"3320:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1820,"name":"uint256","nodeType":"ElementaryTypeName","src":"3320:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3319:17:9"},"returnParameters":{"id":1825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1835,"src":"3366:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1823,"name":"address","nodeType":"ElementaryTypeName","src":"3366:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3365:9:9"},"scope":2569,"src":"3299:154:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2667],"body":{"id":1850,"nodeType":"Block","src":"3562:69:9","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1844,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"3591:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3591:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1846,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"3605:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1847,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"3615:8:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1843,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2539,"src":"3572:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3572:52:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1849,"nodeType":"ExpressionStatement","src":"3572:52:9"}]},"documentation":{"id":1836,"nodeType":"StructuredDocumentation","src":"3459:23:9","text":"@inheritdoc IERC721"},"functionSelector":"a22cb465","id":1851,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"3496:17:9","nodeType":"FunctionDefinition","parameters":{"id":1841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1838,"mutability":"mutable","name":"operator","nameLocation":"3522:8:9","nodeType":"VariableDeclaration","scope":1851,"src":"3514:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1837,"name":"address","nodeType":"ElementaryTypeName","src":"3514:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1840,"mutability":"mutable","name":"approved","nameLocation":"3537:8:9","nodeType":"VariableDeclaration","scope":1851,"src":"3532:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1839,"name":"bool","nodeType":"ElementaryTypeName","src":"3532:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3513:33:9"},"returnParameters":{"id":1842,"nodeType":"ParameterList","parameters":[],"src":"3562:0:9"},"scope":2569,"src":"3487:144:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2685],"body":{"id":1867,"nodeType":"Block","src":"3759:59:9","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":1861,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"3776:18:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1863,"indexExpression":{"id":1862,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1854,"src":"3795:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3776:25:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1865,"indexExpression":{"id":1864,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1856,"src":"3802:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3776:35:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1860,"id":1866,"nodeType":"Return","src":"3769:42:9"}]},"documentation":{"id":1852,"nodeType":"StructuredDocumentation","src":"3637:23:9","text":"@inheritdoc IERC721"},"functionSelector":"e985e9c5","id":1868,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"3674:16:9","nodeType":"FunctionDefinition","parameters":{"id":1857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1854,"mutability":"mutable","name":"owner","nameLocation":"3699:5:9","nodeType":"VariableDeclaration","scope":1868,"src":"3691:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1853,"name":"address","nodeType":"ElementaryTypeName","src":"3691:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1856,"mutability":"mutable","name":"operator","nameLocation":"3714:8:9","nodeType":"VariableDeclaration","scope":1868,"src":"3706:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1855,"name":"address","nodeType":"ElementaryTypeName","src":"3706:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3690:33:9"},"returnParameters":{"id":1860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1868,"src":"3753:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1858,"name":"bool","nodeType":"ElementaryTypeName","src":"3753:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3752:6:9"},"scope":2569,"src":"3665:153:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2651],"body":{"id":1913,"nodeType":"Block","src":"3932:498:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1878,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"3946:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3960:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3952:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1879,"name":"address","nodeType":"ElementaryTypeName","src":"3952:7:9","typeDescriptions":{}}},"id":1882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3952:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3946:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1892,"nodeType":"IfStatement","src":"3942:87:9","trueBody":{"id":1891,"nodeType":"Block","src":"3964:65:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4015:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4007:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1885,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:9","typeDescriptions":{}}},"id":1888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1884,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"3985:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3985:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1890,"nodeType":"RevertStatement","src":"3978:40:9"}]}},{"assignments":[1894],"declarations":[{"constant":false,"id":1894,"mutability":"mutable","name":"previousOwner","nameLocation":"4255:13:9","nodeType":"VariableDeclaration","scope":1913,"src":"4247:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1893,"name":"address","nodeType":"ElementaryTypeName","src":"4247:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1901,"initialValue":{"arguments":[{"id":1896,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"4279:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1897,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1875,"src":"4283:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1898,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"4292:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4292:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1895,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"4271:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":1900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4271:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4247:58:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1902,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"4319:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1903,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"4336:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4319:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1912,"nodeType":"IfStatement","src":"4315:109:9","trueBody":{"id":1911,"nodeType":"Block","src":"4342:82:9","statements":[{"errorCall":{"arguments":[{"id":1906,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"4384:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1907,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1875,"src":"4390:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1908,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"4399:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1905,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1522,"src":"4363:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (address,uint256,address) pure returns (error)"}},"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4363:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1910,"nodeType":"RevertStatement","src":"4356:57:9"}]}}]},"documentation":{"id":1869,"nodeType":"StructuredDocumentation","src":"3824:23:9","text":"@inheritdoc IERC721"},"functionSelector":"23b872dd","id":1914,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3861:12:9","nodeType":"FunctionDefinition","parameters":{"id":1876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1871,"mutability":"mutable","name":"from","nameLocation":"3882:4:9","nodeType":"VariableDeclaration","scope":1914,"src":"3874:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1870,"name":"address","nodeType":"ElementaryTypeName","src":"3874:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1873,"mutability":"mutable","name":"to","nameLocation":"3896:2:9","nodeType":"VariableDeclaration","scope":1914,"src":"3888:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1872,"name":"address","nodeType":"ElementaryTypeName","src":"3888:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1875,"mutability":"mutable","name":"tokenId","nameLocation":"3908:7:9","nodeType":"VariableDeclaration","scope":1914,"src":"3900:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1874,"name":"uint256","nodeType":"ElementaryTypeName","src":"3900:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3873:43:9"},"returnParameters":{"id":1877,"nodeType":"ParameterList","parameters":[],"src":"3932:0:9"},"scope":2569,"src":"3852:578:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2641],"body":{"id":1931,"nodeType":"Block","src":"4540:56:9","statements":[{"expression":{"arguments":[{"id":1925,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"4567:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1926,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1919,"src":"4573:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1927,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1921,"src":"4577:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":1928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4586:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":1924,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[1932,1962],"referencedDeclaration":1962,"src":"4550:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":1929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4550:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1930,"nodeType":"ExpressionStatement","src":"4550:39:9"}]},"documentation":{"id":1915,"nodeType":"StructuredDocumentation","src":"4436:23:9","text":"@inheritdoc IERC721"},"functionSelector":"42842e0e","id":1932,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4473:16:9","nodeType":"FunctionDefinition","parameters":{"id":1922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1917,"mutability":"mutable","name":"from","nameLocation":"4498:4:9","nodeType":"VariableDeclaration","scope":1932,"src":"4490:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1916,"name":"address","nodeType":"ElementaryTypeName","src":"4490:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1919,"mutability":"mutable","name":"to","nameLocation":"4512:2:9","nodeType":"VariableDeclaration","scope":1932,"src":"4504:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1918,"name":"address","nodeType":"ElementaryTypeName","src":"4504:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1921,"mutability":"mutable","name":"tokenId","nameLocation":"4524:7:9","nodeType":"VariableDeclaration","scope":1932,"src":"4516:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1920,"name":"uint256","nodeType":"ElementaryTypeName","src":"4516:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4489:43:9"},"returnParameters":{"id":1923,"nodeType":"ParameterList","parameters":[],"src":"4540:0:9"},"scope":2569,"src":"4464:132:9","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2631],"body":{"id":1961,"nodeType":"Block","src":"4733:130:9","statements":[{"expression":{"arguments":[{"id":1945,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"4756:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1946,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"4762:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1947,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1939,"src":"4766:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1944,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1914,"src":"4743:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4743:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1949,"nodeType":"ExpressionStatement","src":"4743:31:9"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1953,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"4818:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4818:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1955,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"4832:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1956,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"4838:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1957,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1939,"src":"4842:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1958,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1941,"src":"4851:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1950,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3227,"src":"4784:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Utils_$3227_$","typeString":"type(library ERC721Utils)"}},"id":1952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4796:21:9","memberName":"checkOnERC721Received","nodeType":"MemberAccess","referencedDeclaration":3226,"src":"4784:33:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes memory)"}},"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4784:72:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1960,"nodeType":"ExpressionStatement","src":"4784:72:9"}]},"documentation":{"id":1933,"nodeType":"StructuredDocumentation","src":"4602:23:9","text":"@inheritdoc IERC721"},"functionSelector":"b88d4fde","id":1962,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4639:16:9","nodeType":"FunctionDefinition","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1935,"mutability":"mutable","name":"from","nameLocation":"4664:4:9","nodeType":"VariableDeclaration","scope":1962,"src":"4656:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1934,"name":"address","nodeType":"ElementaryTypeName","src":"4656:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1937,"mutability":"mutable","name":"to","nameLocation":"4678:2:9","nodeType":"VariableDeclaration","scope":1962,"src":"4670:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1936,"name":"address","nodeType":"ElementaryTypeName","src":"4670:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1939,"mutability":"mutable","name":"tokenId","nameLocation":"4690:7:9","nodeType":"VariableDeclaration","scope":1962,"src":"4682:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1938,"name":"uint256","nodeType":"ElementaryTypeName","src":"4682:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1941,"mutability":"mutable","name":"data","nameLocation":"4712:4:9","nodeType":"VariableDeclaration","scope":1962,"src":"4699:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1940,"name":"bytes","nodeType":"ElementaryTypeName","src":"4699:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4655:62:9"},"returnParameters":{"id":1943,"nodeType":"ParameterList","parameters":[],"src":"4733:0:9"},"scope":2569,"src":"4630:233:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1974,"nodeType":"Block","src":"5453:40:9","statements":[{"expression":{"baseExpression":{"id":1970,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"5470:7:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1972,"indexExpression":{"id":1971,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1965,"src":"5478:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5470:16:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1969,"id":1973,"nodeType":"Return","src":"5463:23:9"}]},"documentation":{"id":1963,"nodeType":"StructuredDocumentation","src":"4869:504:9","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"id":1975,"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"5387:8:9","nodeType":"FunctionDefinition","parameters":{"id":1966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1965,"mutability":"mutable","name":"tokenId","nameLocation":"5404:7:9","nodeType":"VariableDeclaration","scope":1975,"src":"5396:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1964,"name":"uint256","nodeType":"ElementaryTypeName","src":"5396:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5395:17:9"},"returnParameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1975,"src":"5444:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1967,"name":"address","nodeType":"ElementaryTypeName","src":"5444:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5443:9:9"},"scope":2569,"src":"5378:115:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1987,"nodeType":"Block","src":"5688:48:9","statements":[{"expression":{"baseExpression":{"id":1983,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"5705:15:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1985,"indexExpression":{"id":1984,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"5721:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5705:24:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1982,"id":1986,"nodeType":"Return","src":"5698:31:9"}]},"documentation":{"id":1976,"nodeType":"StructuredDocumentation","src":"5499:105:9","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"id":1988,"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"5618:12:9","nodeType":"FunctionDefinition","parameters":{"id":1979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1978,"mutability":"mutable","name":"tokenId","nameLocation":"5639:7:9","nodeType":"VariableDeclaration","scope":1988,"src":"5631:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1977,"name":"uint256","nodeType":"ElementaryTypeName","src":"5631:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5630:17:9"},"returnParameters":{"id":1982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1981,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1988,"src":"5679:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1980,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:9:9"},"scope":2569,"src":"5609:127:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2023,"nodeType":"Block","src":"6156:163:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2000,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"6185:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6204:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6196:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2001,"name":"address","nodeType":"ElementaryTypeName","src":"6196:7:9","typeDescriptions":{}}},"id":2004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6196:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6185:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2006,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"6223:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2007,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"6232:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6223:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2010,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"6260:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2011,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"6267:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2009,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1868,"src":"6243:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6243:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6223:52:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2015,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1995,"src":"6292:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2014,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1988,"src":"6279:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6279:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2017,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"6304:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6279:32:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6223:88:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2020,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6222:90:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6185:127:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1999,"id":2022,"nodeType":"Return","src":"6166:146:9"}]},"documentation":{"id":1989,"nodeType":"StructuredDocumentation","src":"5742:300:9","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"id":2024,"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"6056:13:9","nodeType":"FunctionDefinition","parameters":{"id":1996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"mutability":"mutable","name":"owner","nameLocation":"6078:5:9","nodeType":"VariableDeclaration","scope":2024,"src":"6070:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1990,"name":"address","nodeType":"ElementaryTypeName","src":"6070:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1993,"mutability":"mutable","name":"spender","nameLocation":"6093:7:9","nodeType":"VariableDeclaration","scope":2024,"src":"6085:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1992,"name":"address","nodeType":"ElementaryTypeName","src":"6085:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1995,"mutability":"mutable","name":"tokenId","nameLocation":"6110:7:9","nodeType":"VariableDeclaration","scope":2024,"src":"6102:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1994,"name":"uint256","nodeType":"ElementaryTypeName","src":"6102:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6069:49:9"},"returnParameters":{"id":1999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2024,"src":"6150:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1997,"name":"bool","nodeType":"ElementaryTypeName","src":"6150:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6149:6:9"},"scope":2569,"src":"6047:272:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2060,"nodeType":"Block","src":"6848:271:9","statements":[{"condition":{"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6862:39:9","subExpression":{"arguments":[{"id":2035,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"6877:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2036,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"6884:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2037,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"6893:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2034,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"6863:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6863:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"6858:255:9","trueBody":{"id":2058,"nodeType":"Block","src":"6903:210:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2040,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"6921:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6938:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6930:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2041,"name":"address","nodeType":"ElementaryTypeName","src":"6930:7:9","typeDescriptions":{}}},"id":2044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6930:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6921:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2056,"nodeType":"Block","src":"7019:84:9","statements":[{"errorCall":{"arguments":[{"id":2052,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"7071:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2053,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7080:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2051,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1539,"src":"7044:26:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256) pure returns (error)"}},"id":2054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7044:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2055,"nodeType":"RevertStatement","src":"7037:51:9"}]},"id":2057,"nodeType":"IfStatement","src":"6917:186:9","trueBody":{"id":2050,"nodeType":"Block","src":"6942:71:9","statements":[{"errorCall":{"arguments":[{"id":2047,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"6990:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2046,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"6967:22:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":2048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6967:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2049,"nodeType":"RevertStatement","src":"6960:38:9"}]}}]}}]},"documentation":{"id":2025,"nodeType":"StructuredDocumentation","src":"6325:421:9","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if:\n - `spender` does not have approval from `owner` for `tokenId`.\n - `spender` does not have approval to manage all of `owner`'s assets.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"id":2061,"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"6760:16:9","nodeType":"FunctionDefinition","parameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2027,"mutability":"mutable","name":"owner","nameLocation":"6785:5:9","nodeType":"VariableDeclaration","scope":2061,"src":"6777:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"6777:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2029,"mutability":"mutable","name":"spender","nameLocation":"6800:7:9","nodeType":"VariableDeclaration","scope":2061,"src":"6792:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2028,"name":"address","nodeType":"ElementaryTypeName","src":"6792:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2031,"mutability":"mutable","name":"tokenId","nameLocation":"6817:7:9","nodeType":"VariableDeclaration","scope":2061,"src":"6809:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint256","nodeType":"ElementaryTypeName","src":"6809:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6776:49:9"},"returnParameters":{"id":2033,"nodeType":"ParameterList","parameters":[],"src":"6848:0:9"},"scope":2569,"src":"6751:368:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2076,"nodeType":"Block","src":"7836:78:9","statements":[{"id":2075,"nodeType":"UncheckedBlock","src":"7846:62:9","statements":[{"expression":{"id":2073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2069,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"7870:9:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2071,"indexExpression":{"id":2070,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"7880:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7870:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2072,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"7892:5:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7870:27:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2074,"nodeType":"ExpressionStatement","src":"7870:27:9"}]}]},"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"7125:631:9","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"id":2077,"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"7770:16:9","nodeType":"FunctionDefinition","parameters":{"id":2067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"account","nameLocation":"7795:7:9","nodeType":"VariableDeclaration","scope":2077,"src":"7787:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"7787:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"value","nameLocation":"7812:5:9","nodeType":"VariableDeclaration","scope":2077,"src":"7804:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2065,"name":"uint128","nodeType":"ElementaryTypeName","src":"7804:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"7786:32:9"},"returnParameters":{"id":2068,"nodeType":"ParameterList","parameters":[],"src":"7836:0:9"},"scope":2569,"src":"7761:153:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2166,"nodeType":"Block","src":"8602:700:9","statements":[{"assignments":[2090],"declarations":[{"constant":false,"id":2090,"mutability":"mutable","name":"from","nameLocation":"8620:4:9","nodeType":"VariableDeclaration","scope":2166,"src":"8612:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2089,"name":"address","nodeType":"ElementaryTypeName","src":"8612:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2094,"initialValue":{"arguments":[{"id":2092,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"8636:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"8627:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8627:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8612:32:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2095,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"8704:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8720:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8712:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2096,"name":"address","nodeType":"ElementaryTypeName","src":"8712:7:9","typeDescriptions":{}}},"id":2099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8712:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8704:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2108,"nodeType":"IfStatement","src":"8700:86:9","trueBody":{"id":2107,"nodeType":"Block","src":"8724:62:9","statements":[{"expression":{"arguments":[{"id":2102,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"8755:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2103,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"8761:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2104,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"8767:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2101,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"8738:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8738:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2106,"nodeType":"ExpressionStatement","src":"8738:37:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2109,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"8830:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8846:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8838:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"8838:7:9","typeDescriptions":{}}},"id":2113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8838:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8830:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2136,"nodeType":"IfStatement","src":"8826:256:9","trueBody":{"id":2135,"nodeType":"Block","src":"8850:232:9","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8963:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8955:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2116,"name":"address","nodeType":"ElementaryTypeName","src":"8955:7:9","typeDescriptions":{}}},"id":2119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8955:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2120,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"8967:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8984:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8976:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2121,"name":"address","nodeType":"ElementaryTypeName","src":"8976:7:9","typeDescriptions":{}}},"id":2124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8976:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8988:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2115,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2421,2487],"referencedDeclaration":2487,"src":"8946:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8946:48:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2127,"nodeType":"ExpressionStatement","src":"8946:48:9"},{"id":2134,"nodeType":"UncheckedBlock","src":"9009:63:9","statements":[{"expression":{"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2128,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"9037:9:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2130,"indexExpression":{"id":2129,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"9047:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9037:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9056:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9037:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2133,"nodeType":"ExpressionStatement","src":"9037:20:9"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2137,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"9096:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9110:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9102:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2138,"name":"address","nodeType":"ElementaryTypeName","src":"9102:7:9","typeDescriptions":{}}},"id":2141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9102:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9096:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2151,"nodeType":"IfStatement","src":"9092:107:9","trueBody":{"id":2150,"nodeType":"Block","src":"9114:85:9","statements":[{"id":2149,"nodeType":"UncheckedBlock","src":"9128:61:9","statements":[{"expression":{"id":2147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2143,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"9156:9:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2145,"indexExpression":{"id":2144,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"9166:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9156:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9173:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9156:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2148,"nodeType":"ExpressionStatement","src":"9156:18:9"}]}]}},{"expression":{"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2152,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"9209:7:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2154,"indexExpression":{"id":2153,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"9217:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9209:16:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2155,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"9228:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9209:21:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2157,"nodeType":"ExpressionStatement","src":"9209:21:9"},{"eventCall":{"arguments":[{"id":2159,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"9255:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2160,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"9261:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2161,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"9265:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2158,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"9246:8:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9246:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2163,"nodeType":"EmitStatement","src":"9241:32:9"},{"expression":{"id":2164,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"9291:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2088,"id":2165,"nodeType":"Return","src":"9284:11:9"}]},"documentation":{"id":2078,"nodeType":"StructuredDocumentation","src":"7920:582:9","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"id":2167,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"8516:7:9","nodeType":"FunctionDefinition","parameters":{"id":2085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2080,"mutability":"mutable","name":"to","nameLocation":"8532:2:9","nodeType":"VariableDeclaration","scope":2167,"src":"8524:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2079,"name":"address","nodeType":"ElementaryTypeName","src":"8524:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2082,"mutability":"mutable","name":"tokenId","nameLocation":"8544:7:9","nodeType":"VariableDeclaration","scope":2167,"src":"8536:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2081,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"auth","nameLocation":"8561:4:9","nodeType":"VariableDeclaration","scope":2167,"src":"8553:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"8553:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8523:43:9"},"returnParameters":{"id":2088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"8593:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2086,"name":"address","nodeType":"ElementaryTypeName","src":"8593:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8592:9:9"},"scope":2569,"src":"8507:795:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2216,"nodeType":"Block","src":"9677:274:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2175,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"9691:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9705:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9697:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2176,"name":"address","nodeType":"ElementaryTypeName","src":"9697:7:9","typeDescriptions":{}}},"id":2179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9697:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9691:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2189,"nodeType":"IfStatement","src":"9687:87:9","trueBody":{"id":2188,"nodeType":"Block","src":"9709:65:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9760:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9752:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2182,"name":"address","nodeType":"ElementaryTypeName","src":"9752:7:9","typeDescriptions":{}}},"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9752:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2181,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"9730:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9730:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2187,"nodeType":"RevertStatement","src":"9723:40:9"}]}},{"assignments":[2191],"declarations":[{"constant":false,"id":2191,"mutability":"mutable","name":"previousOwner","nameLocation":"9791:13:9","nodeType":"VariableDeclaration","scope":2216,"src":"9783:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2190,"name":"address","nodeType":"ElementaryTypeName","src":"9783:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2200,"initialValue":{"arguments":[{"id":2193,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"9815:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2194,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9819:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9836:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9828:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2195,"name":"address","nodeType":"ElementaryTypeName","src":"9828:7:9","typeDescriptions":{}}},"id":2198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9828:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2192,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"9807:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9807:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9783:56:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2201,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2191,"src":"9853:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9878:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9870:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2202,"name":"address","nodeType":"ElementaryTypeName","src":"9870:7:9","typeDescriptions":{}}},"id":2205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9870:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9853:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2215,"nodeType":"IfStatement","src":"9849:96:9","trueBody":{"id":2214,"nodeType":"Block","src":"9882:63:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9931:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9923:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2208,"name":"address","nodeType":"ElementaryTypeName","src":"9923:7:9","typeDescriptions":{}}},"id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9923:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2207,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1527,"src":"9903:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9903:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2213,"nodeType":"RevertStatement","src":"9896:38:9"}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"9308:311:9","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":2217,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9633:5:9","nodeType":"FunctionDefinition","parameters":{"id":2173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"to","nameLocation":"9647:2:9","nodeType":"VariableDeclaration","scope":2217,"src":"9639:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"9639:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"tokenId","nameLocation":"9659:7:9","nodeType":"VariableDeclaration","scope":2217,"src":"9651:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"9651:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9638:29:9"},"returnParameters":{"id":2174,"nodeType":"ParameterList","parameters":[],"src":"9677:0:9"},"scope":2569,"src":"9624:327:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2231,"nodeType":"Block","src":"10359:43:9","statements":[{"expression":{"arguments":[{"id":2226,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2220,"src":"10379:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2227,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2222,"src":"10383:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10392:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2225,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2232,2262],"referencedDeclaration":2262,"src":"10369:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10369:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2230,"nodeType":"ExpressionStatement","src":"10369:26:9"}]},"documentation":{"id":2218,"nodeType":"StructuredDocumentation","src":"9957:340:9","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":2232,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10311:9:9","nodeType":"FunctionDefinition","parameters":{"id":2223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2220,"mutability":"mutable","name":"to","nameLocation":"10329:2:9","nodeType":"VariableDeclaration","scope":2232,"src":"10321:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2219,"name":"address","nodeType":"ElementaryTypeName","src":"10321:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2222,"mutability":"mutable","name":"tokenId","nameLocation":"10341:7:9","nodeType":"VariableDeclaration","scope":2232,"src":"10333:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2221,"name":"uint256","nodeType":"ElementaryTypeName","src":"10333:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10320:29:9"},"returnParameters":{"id":2224,"nodeType":"ParameterList","parameters":[],"src":"10359:0:9"},"scope":2569,"src":"10302:100:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2261,"nodeType":"Block","src":"10707:123:9","statements":[{"expression":{"arguments":[{"id":2243,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"10723:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2244,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"10727:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2242,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"10717:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10717:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2246,"nodeType":"ExpressionStatement","src":"10717:18:9"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2250,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"10779:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10779:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10801:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10793:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2252,"name":"address","nodeType":"ElementaryTypeName","src":"10793:7:9","typeDescriptions":{}}},"id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10793:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2256,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"10805:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2257,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"10809:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2258,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"10818:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2247,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3227,"src":"10745:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Utils_$3227_$","typeString":"type(library ERC721Utils)"}},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10757:21:9","memberName":"checkOnERC721Received","nodeType":"MemberAccess","referencedDeclaration":3226,"src":"10745:33:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes memory)"}},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10745:78:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2260,"nodeType":"ExpressionStatement","src":"10745:78:9"}]},"documentation":{"id":2233,"nodeType":"StructuredDocumentation","src":"10408:210:9","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":2262,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10632:9:9","nodeType":"FunctionDefinition","parameters":{"id":2240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2235,"mutability":"mutable","name":"to","nameLocation":"10650:2:9","nodeType":"VariableDeclaration","scope":2262,"src":"10642:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2234,"name":"address","nodeType":"ElementaryTypeName","src":"10642:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2237,"mutability":"mutable","name":"tokenId","nameLocation":"10662:7:9","nodeType":"VariableDeclaration","scope":2262,"src":"10654:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2236,"name":"uint256","nodeType":"ElementaryTypeName","src":"10654:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2239,"mutability":"mutable","name":"data","nameLocation":"10684:4:9","nodeType":"VariableDeclaration","scope":2262,"src":"10671:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2238,"name":"bytes","nodeType":"ElementaryTypeName","src":"10671:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10641:48:9"},"returnParameters":{"id":2241,"nodeType":"ParameterList","parameters":[],"src":"10707:0:9"},"scope":2569,"src":"10623:207:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2294,"nodeType":"Block","src":"11197:186:9","statements":[{"assignments":[2269],"declarations":[{"constant":false,"id":2269,"mutability":"mutable","name":"previousOwner","nameLocation":"11215:13:9","nodeType":"VariableDeclaration","scope":2294,"src":"11207:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2268,"name":"address","nodeType":"ElementaryTypeName","src":"11207:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2281,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11247:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11239:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2271,"name":"address","nodeType":"ElementaryTypeName","src":"11239:7:9","typeDescriptions":{}}},"id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11239:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2275,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"11251:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11268:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11260:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2276,"name":"address","nodeType":"ElementaryTypeName","src":"11260:7:9","typeDescriptions":{}}},"id":2279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11260:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2270,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"11231:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11231:40:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11207:64:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2282,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2269,"src":"11285:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11310:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11302:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2283,"name":"address","nodeType":"ElementaryTypeName","src":"11302:7:9","typeDescriptions":{}}},"id":2286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11302:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11285:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2293,"nodeType":"IfStatement","src":"11281:96:9","trueBody":{"id":2292,"nodeType":"Block","src":"11314:63:9","statements":[{"errorCall":{"arguments":[{"id":2289,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"11358:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2288,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"11335:22:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11335:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2291,"nodeType":"RevertStatement","src":"11328:38:9"}]}}]},"documentation":{"id":2263,"nodeType":"StructuredDocumentation","src":"10836:315:9","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":2295,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"11165:5:9","nodeType":"FunctionDefinition","parameters":{"id":2266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2265,"mutability":"mutable","name":"tokenId","nameLocation":"11179:7:9","nodeType":"VariableDeclaration","scope":2295,"src":"11171:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2264,"name":"uint256","nodeType":"ElementaryTypeName","src":"11171:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11170:17:9"},"returnParameters":{"id":2267,"nodeType":"ParameterList","parameters":[],"src":"11197:0:9"},"scope":2569,"src":"11156:227:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2354,"nodeType":"Block","src":"11778:389:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2305,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"11792:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11806:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11798:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2306,"name":"address","nodeType":"ElementaryTypeName","src":"11798:7:9","typeDescriptions":{}}},"id":2309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11798:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11792:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2319,"nodeType":"IfStatement","src":"11788:87:9","trueBody":{"id":2318,"nodeType":"Block","src":"11810:65:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11861:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2313,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11853:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"11853:7:9","typeDescriptions":{}}},"id":2315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11853:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2311,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"11831:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11831:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2317,"nodeType":"RevertStatement","src":"11824:40:9"}]}},{"assignments":[2321],"declarations":[{"constant":false,"id":2321,"mutability":"mutable","name":"previousOwner","nameLocation":"11892:13:9","nodeType":"VariableDeclaration","scope":2354,"src":"11884:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2320,"name":"address","nodeType":"ElementaryTypeName","src":"11884:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2330,"initialValue":{"arguments":[{"id":2323,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"11916:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2324,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"11920:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11937:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11929:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"11929:7:9","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11929:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2322,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"11908:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11908:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11884:56:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2331,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"11954:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11979:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11971:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2332,"name":"address","nodeType":"ElementaryTypeName","src":"11971:7:9","typeDescriptions":{}}},"id":2335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11971:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11954:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2342,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"12056:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2343,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"12073:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12056:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2352,"nodeType":"IfStatement","src":"12052:109:9","trueBody":{"id":2351,"nodeType":"Block","src":"12079:82:9","statements":[{"errorCall":{"arguments":[{"id":2346,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"12121:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2347,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"12127:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2348,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"12136:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2345,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1522,"src":"12100:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (address,uint256,address) pure returns (error)"}},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12100:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2350,"nodeType":"RevertStatement","src":"12093:57:9"}]}},"id":2353,"nodeType":"IfStatement","src":"11950:211:9","trueBody":{"id":2341,"nodeType":"Block","src":"11983:63:9","statements":[{"errorCall":{"arguments":[{"id":2338,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"12027:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2337,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"12004:22:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":2339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12004:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2340,"nodeType":"RevertStatement","src":"11997:38:9"}]}}]},"documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"11389:313:9","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":2355,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11716:9:9","nodeType":"FunctionDefinition","parameters":{"id":2303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2298,"mutability":"mutable","name":"from","nameLocation":"11734:4:9","nodeType":"VariableDeclaration","scope":2355,"src":"11726:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2297,"name":"address","nodeType":"ElementaryTypeName","src":"11726:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2300,"mutability":"mutable","name":"to","nameLocation":"11748:2:9","nodeType":"VariableDeclaration","scope":2355,"src":"11740:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2299,"name":"address","nodeType":"ElementaryTypeName","src":"11740:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2302,"mutability":"mutable","name":"tokenId","nameLocation":"11760:7:9","nodeType":"VariableDeclaration","scope":2355,"src":"11752:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2301,"name":"uint256","nodeType":"ElementaryTypeName","src":"11752:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11725:43:9"},"returnParameters":{"id":2304,"nodeType":"ParameterList","parameters":[],"src":"11778:0:9"},"scope":2569,"src":"11707:460:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2372,"nodeType":"Block","src":"13176:53:9","statements":[{"expression":{"arguments":[{"id":2366,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"13200:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2367,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"13206:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2368,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"13210:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13219:2:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2365,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2373,2403],"referencedDeclaration":2403,"src":"13186:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13186:36:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2371,"nodeType":"ExpressionStatement","src":"13186:36:9"}]},"documentation":{"id":2356,"nodeType":"StructuredDocumentation","src":"12173:923:9","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC-721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":2373,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13110:13:9","nodeType":"FunctionDefinition","parameters":{"id":2363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2358,"mutability":"mutable","name":"from","nameLocation":"13132:4:9","nodeType":"VariableDeclaration","scope":2373,"src":"13124:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2357,"name":"address","nodeType":"ElementaryTypeName","src":"13124:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2360,"mutability":"mutable","name":"to","nameLocation":"13146:2:9","nodeType":"VariableDeclaration","scope":2373,"src":"13138:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2359,"name":"address","nodeType":"ElementaryTypeName","src":"13138:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2362,"mutability":"mutable","name":"tokenId","nameLocation":"13158:7:9","nodeType":"VariableDeclaration","scope":2373,"src":"13150:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2361,"name":"uint256","nodeType":"ElementaryTypeName","src":"13150:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13123:43:9"},"returnParameters":{"id":2364,"nodeType":"ParameterList","parameters":[],"src":"13176:0:9"},"scope":2569,"src":"13101:128:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2402,"nodeType":"Block","src":"13568:127:9","statements":[{"expression":{"arguments":[{"id":2386,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2376,"src":"13588:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"13594:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2388,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"13598:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2355,"src":"13578:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13578:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2390,"nodeType":"ExpressionStatement","src":"13578:28:9"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2394,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"13650:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13650:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2376,"src":"13664:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2397,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"13670:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2398,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"13674:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2399,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"13683:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2391,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3227,"src":"13616:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Utils_$3227_$","typeString":"type(library ERC721Utils)"}},"id":2393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13628:21:9","memberName":"checkOnERC721Received","nodeType":"MemberAccess","referencedDeclaration":3226,"src":"13616:33:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes memory)"}},"id":2400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13616:72:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2401,"nodeType":"ExpressionStatement","src":"13616:72:9"}]},"documentation":{"id":2374,"nodeType":"StructuredDocumentation","src":"13235:226:9","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":2403,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13475:13:9","nodeType":"FunctionDefinition","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2376,"mutability":"mutable","name":"from","nameLocation":"13497:4:9","nodeType":"VariableDeclaration","scope":2403,"src":"13489:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2375,"name":"address","nodeType":"ElementaryTypeName","src":"13489:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"13511:2:9","nodeType":"VariableDeclaration","scope":2403,"src":"13503:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"13503:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"13523:7:9","nodeType":"VariableDeclaration","scope":2403,"src":"13515:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"13515:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"13545:4:9","nodeType":"VariableDeclaration","scope":2403,"src":"13532:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"13532:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13488:62:9"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"13568:0:9"},"scope":2569,"src":"13466:229:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2420,"nodeType":"Block","src":"14208:50:9","statements":[{"expression":{"arguments":[{"id":2414,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2406,"src":"14227:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2415,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"14231:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2416,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2410,"src":"14240:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14246:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2413,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2421,2487],"referencedDeclaration":2487,"src":"14218:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14218:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2419,"nodeType":"ExpressionStatement","src":"14218:33:9"}]},"documentation":{"id":2404,"nodeType":"StructuredDocumentation","src":"13701:432:9","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":2421,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14147:8:9","nodeType":"FunctionDefinition","parameters":{"id":2411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2406,"mutability":"mutable","name":"to","nameLocation":"14164:2:9","nodeType":"VariableDeclaration","scope":2421,"src":"14156:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2405,"name":"address","nodeType":"ElementaryTypeName","src":"14156:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2408,"mutability":"mutable","name":"tokenId","nameLocation":"14176:7:9","nodeType":"VariableDeclaration","scope":2421,"src":"14168:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2407,"name":"uint256","nodeType":"ElementaryTypeName","src":"14168:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2410,"mutability":"mutable","name":"auth","nameLocation":"14193:4:9","nodeType":"VariableDeclaration","scope":2421,"src":"14185:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2409,"name":"address","nodeType":"ElementaryTypeName","src":"14185:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14155:43:9"},"returnParameters":{"id":2412,"nodeType":"ParameterList","parameters":[],"src":"14208:0:9"},"scope":2569,"src":"14138:120:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2486,"nodeType":"Block","src":"14534:568:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2433,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2430,"src":"14600:9:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2434,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"14613:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14629:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14621:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2435,"name":"address","nodeType":"ElementaryTypeName","src":"14621:7:9","typeDescriptions":{}}},"id":2438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14621:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14613:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14600:31:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2479,"nodeType":"IfStatement","src":"14596:460:9","trueBody":{"id":2478,"nodeType":"Block","src":"14633:423:9","statements":[{"assignments":[2442],"declarations":[{"constant":false,"id":2442,"mutability":"mutable","name":"owner","nameLocation":"14655:5:9","nodeType":"VariableDeclaration","scope":2478,"src":"14647:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2441,"name":"address","nodeType":"ElementaryTypeName","src":"14647:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2446,"initialValue":{"arguments":[{"id":2444,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"14677:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2443,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"14663:13:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14663:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"14647:38:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2447,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"14813:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14829:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14821:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2448,"name":"address","nodeType":"ElementaryTypeName","src":"14821:7:9","typeDescriptions":{}}},"id":2451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14821:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14813:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2453,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"14835:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2454,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"14844:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14835:13:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14813:35:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14852:30:9","subExpression":{"arguments":[{"id":2458,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"14870:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2459,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"14877:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2457,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1868,"src":"14853:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14853:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14813:69:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2468,"nodeType":"IfStatement","src":"14809:142:9","trueBody":{"id":2467,"nodeType":"Block","src":"14884:67:9","statements":[{"errorCall":{"arguments":[{"id":2464,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"14931:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2463,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"14909:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14909:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2466,"nodeType":"RevertStatement","src":"14902:34:9"}]}},{"condition":{"id":2469,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2430,"src":"14969:9:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2477,"nodeType":"IfStatement","src":"14965:81:9","trueBody":{"id":2476,"nodeType":"Block","src":"14980:66:9","statements":[{"eventCall":{"arguments":[{"id":2471,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"15012:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2472,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2424,"src":"15019:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2473,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"15023:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2470,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"15003:8:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15003:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2475,"nodeType":"EmitStatement","src":"14998:33:9"}]}}]}},{"expression":{"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2480,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"15066:15:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2482,"indexExpression":{"id":2481,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"15082:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15066:24:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2483,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2424,"src":"15093:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15066:29:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2485,"nodeType":"ExpressionStatement","src":"15066:29:9"}]},"documentation":{"id":2422,"nodeType":"StructuredDocumentation","src":"14264:171:9","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"id":2487,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14449:8:9","nodeType":"FunctionDefinition","parameters":{"id":2431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2424,"mutability":"mutable","name":"to","nameLocation":"14466:2:9","nodeType":"VariableDeclaration","scope":2487,"src":"14458:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2423,"name":"address","nodeType":"ElementaryTypeName","src":"14458:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2426,"mutability":"mutable","name":"tokenId","nameLocation":"14478:7:9","nodeType":"VariableDeclaration","scope":2487,"src":"14470:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2425,"name":"uint256","nodeType":"ElementaryTypeName","src":"14470:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2428,"mutability":"mutable","name":"auth","nameLocation":"14495:4:9","nodeType":"VariableDeclaration","scope":2487,"src":"14487:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2427,"name":"address","nodeType":"ElementaryTypeName","src":"14487:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2430,"mutability":"mutable","name":"emitEvent","nameLocation":"14506:9:9","nodeType":"VariableDeclaration","scope":2487,"src":"14501:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2429,"name":"bool","nodeType":"ElementaryTypeName","src":"14501:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14457:59:9"},"returnParameters":{"id":2432,"nodeType":"ParameterList","parameters":[],"src":"14534:0:9"},"scope":2569,"src":"14440:662:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2538,"nodeType":"Block","src":"15404:318:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2497,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"15418:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15435:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15427:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"15427:7:9","typeDescriptions":{}}},"id":2501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15427:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15418:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2511,"nodeType":"IfStatement","src":"15414:90:9","trueBody":{"id":2510,"nodeType":"Block","src":"15439:65:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15490:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15482:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2504,"name":"address","nodeType":"ElementaryTypeName","src":"15482:7:9","typeDescriptions":{}}},"id":2507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15482:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2503,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"15460:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15460:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2509,"nodeType":"RevertStatement","src":"15453:40:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2512,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2492,"src":"15517:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15537:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15529:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2513,"name":"address","nodeType":"ElementaryTypeName","src":"15529:7:9","typeDescriptions":{}}},"id":2516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15529:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15517:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2523,"nodeType":"IfStatement","src":"15513:91:9","trueBody":{"id":2522,"nodeType":"Block","src":"15541:63:9","statements":[{"errorCall":{"arguments":[{"id":2519,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2492,"src":"15584:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2518,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1549,"src":"15562:21:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15562:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2521,"nodeType":"RevertStatement","src":"15555:38:9"}]}},{"expression":{"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2524,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"15613:18:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2527,"indexExpression":{"id":2525,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"15632:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15613:25:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2528,"indexExpression":{"id":2526,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2492,"src":"15639:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15613:35:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2529,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"15651:8:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15613:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2531,"nodeType":"ExpressionStatement","src":"15613:46:9"},{"eventCall":{"arguments":[{"id":2533,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"15689:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2534,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2492,"src":"15696:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2535,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"15706:8:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2532,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2603,"src":"15674:14:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15674:41:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2537,"nodeType":"EmitStatement","src":"15669:46:9"}]},"documentation":{"id":2488,"nodeType":"StructuredDocumentation","src":"15108:198:9","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"id":2539,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"15320:18:9","nodeType":"FunctionDefinition","parameters":{"id":2495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2490,"mutability":"mutable","name":"owner","nameLocation":"15347:5:9","nodeType":"VariableDeclaration","scope":2539,"src":"15339:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2489,"name":"address","nodeType":"ElementaryTypeName","src":"15339:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2492,"mutability":"mutable","name":"operator","nameLocation":"15362:8:9","nodeType":"VariableDeclaration","scope":2539,"src":"15354:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2491,"name":"address","nodeType":"ElementaryTypeName","src":"15354:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2494,"mutability":"mutable","name":"approved","nameLocation":"15377:8:9","nodeType":"VariableDeclaration","scope":2539,"src":"15372:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2493,"name":"bool","nodeType":"ElementaryTypeName","src":"15372:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15338:48:9"},"returnParameters":{"id":2496,"nodeType":"ParameterList","parameters":[],"src":"15404:0:9"},"scope":2569,"src":"15311:411:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2567,"nodeType":"Block","src":"16029:169:9","statements":[{"assignments":[2548],"declarations":[{"constant":false,"id":2548,"mutability":"mutable","name":"owner","nameLocation":"16047:5:9","nodeType":"VariableDeclaration","scope":2567,"src":"16039:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2547,"name":"address","nodeType":"ElementaryTypeName","src":"16039:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2552,"initialValue":{"arguments":[{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2542,"src":"16064:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2549,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1975,"src":"16055:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16055:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16039:33:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2553,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2548,"src":"16086:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16103:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16095:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2554,"name":"address","nodeType":"ElementaryTypeName","src":"16095:7:9","typeDescriptions":{}}},"id":2557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16095:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16086:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2564,"nodeType":"IfStatement","src":"16082:88:9","trueBody":{"id":2563,"nodeType":"Block","src":"16107:63:9","statements":[{"errorCall":{"arguments":[{"id":2560,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2542,"src":"16151:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2559,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"16128:22:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16128:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2562,"nodeType":"RevertStatement","src":"16121:38:9"}]}},{"expression":{"id":2565,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2548,"src":"16186:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2546,"id":2566,"nodeType":"Return","src":"16179:12:9"}]},"documentation":{"id":2540,"nodeType":"StructuredDocumentation","src":"15728:224:9","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"id":2568,"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"15966:13:9","nodeType":"FunctionDefinition","parameters":{"id":2543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2542,"mutability":"mutable","name":"tokenId","nameLocation":"15988:7:9","nodeType":"VariableDeclaration","scope":2568,"src":"15980:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2541,"name":"uint256","nodeType":"ElementaryTypeName","src":"15980:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15979:17:9"},"returnParameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2568,"src":"16020:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"16020:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16019:9:9"},"scope":2569,"src":"15957:241:9","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2570,"src":"775:15425:9","usedErrors":[1508,1513,1522,1527,1532,1539,1544,1549],"usedEvents":[2585,2594,2603]}],"src":"107:16094:9"},"id":9},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[6268],"IERC721":[2686]},"id":2687,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2571,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"108:24:10"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":2573,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2687,"sourceUnit":6269,"src":"134:62:10","symbolAliases":[{"foreign":{"id":2572,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6268,"src":"142:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2575,"name":"IERC165","nameLocations":["288:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":6268,"src":"288:7:10"},"id":2576,"nodeType":"InheritanceSpecifier","src":"288:7:10"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":2574,"nodeType":"StructuredDocumentation","src":"198:68:10","text":" @dev Required interface of an ERC-721 compliant contract."},"fullyImplemented":false,"id":2686,"linearizedBaseContracts":[2686,6268],"name":"IERC721","nameLocation":"277:7:10","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2577,"nodeType":"StructuredDocumentation","src":"302:88:10","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":2585,"name":"Transfer","nameLocation":"401:8:10","nodeType":"EventDefinition","parameters":{"id":2584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2579,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"426:4:10","nodeType":"VariableDeclaration","scope":2585,"src":"410:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2578,"name":"address","nodeType":"ElementaryTypeName","src":"410:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2581,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"448:2:10","nodeType":"VariableDeclaration","scope":2585,"src":"432:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2580,"name":"address","nodeType":"ElementaryTypeName","src":"432:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2583,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"468:7:10","nodeType":"VariableDeclaration","scope":2585,"src":"452:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2582,"name":"uint256","nodeType":"ElementaryTypeName","src":"452:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"409:67:10"},"src":"395:82:10"},{"anonymous":false,"documentation":{"id":2586,"nodeType":"StructuredDocumentation","src":"483:94:10","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":2594,"name":"Approval","nameLocation":"588:8:10","nodeType":"EventDefinition","parameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2588,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"613:5:10","nodeType":"VariableDeclaration","scope":2594,"src":"597:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2587,"name":"address","nodeType":"ElementaryTypeName","src":"597:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2590,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"636:8:10","nodeType":"VariableDeclaration","scope":2594,"src":"620:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2589,"name":"address","nodeType":"ElementaryTypeName","src":"620:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2592,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"662:7:10","nodeType":"VariableDeclaration","scope":2594,"src":"646:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"596:74:10"},"src":"582:89:10"},{"anonymous":false,"documentation":{"id":2595,"nodeType":"StructuredDocumentation","src":"677:117:10","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":2603,"name":"ApprovalForAll","nameLocation":"805:14:10","nodeType":"EventDefinition","parameters":{"id":2602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2597,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"836:5:10","nodeType":"VariableDeclaration","scope":2603,"src":"820:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2596,"name":"address","nodeType":"ElementaryTypeName","src":"820:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2599,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"859:8:10","nodeType":"VariableDeclaration","scope":2603,"src":"843:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2598,"name":"address","nodeType":"ElementaryTypeName","src":"843:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2601,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"874:8:10","nodeType":"VariableDeclaration","scope":2603,"src":"869:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2600,"name":"bool","nodeType":"ElementaryTypeName","src":"869:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"819:64:10"},"src":"799:85:10"},{"documentation":{"id":2604,"nodeType":"StructuredDocumentation","src":"890:76:10","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":2611,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"980:9:10","nodeType":"FunctionDefinition","parameters":{"id":2607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2606,"mutability":"mutable","name":"owner","nameLocation":"998:5:10","nodeType":"VariableDeclaration","scope":2611,"src":"990:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2605,"name":"address","nodeType":"ElementaryTypeName","src":"990:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"989:15:10"},"returnParameters":{"id":2610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2609,"mutability":"mutable","name":"balance","nameLocation":"1036:7:10","nodeType":"VariableDeclaration","scope":2611,"src":"1028:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2608,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1027:17:10"},"scope":2686,"src":"971:74:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2612,"nodeType":"StructuredDocumentation","src":"1051:131:10","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":2619,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1196:7:10","nodeType":"FunctionDefinition","parameters":{"id":2615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2614,"mutability":"mutable","name":"tokenId","nameLocation":"1212:7:10","nodeType":"VariableDeclaration","scope":2619,"src":"1204:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2613,"name":"uint256","nodeType":"ElementaryTypeName","src":"1204:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1203:17:10"},"returnParameters":{"id":2618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2617,"mutability":"mutable","name":"owner","nameLocation":"1252:5:10","nodeType":"VariableDeclaration","scope":2619,"src":"1244:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2616,"name":"address","nodeType":"ElementaryTypeName","src":"1244:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1243:15:10"},"scope":2686,"src":"1187:72:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2620,"nodeType":"StructuredDocumentation","src":"1265:565:10","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":2631,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1844:16:10","nodeType":"FunctionDefinition","parameters":{"id":2629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2622,"mutability":"mutable","name":"from","nameLocation":"1869:4:10","nodeType":"VariableDeclaration","scope":2631,"src":"1861:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2621,"name":"address","nodeType":"ElementaryTypeName","src":"1861:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2624,"mutability":"mutable","name":"to","nameLocation":"1883:2:10","nodeType":"VariableDeclaration","scope":2631,"src":"1875:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2623,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2626,"mutability":"mutable","name":"tokenId","nameLocation":"1895:7:10","nodeType":"VariableDeclaration","scope":2631,"src":"1887:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2625,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2628,"mutability":"mutable","name":"data","nameLocation":"1919:4:10","nodeType":"VariableDeclaration","scope":2631,"src":"1904:19:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2627,"name":"bytes","nodeType":"ElementaryTypeName","src":"1904:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1860:64:10"},"returnParameters":{"id":2630,"nodeType":"ParameterList","parameters":[],"src":"1933:0:10"},"scope":2686,"src":"1835:99:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2632,"nodeType":"StructuredDocumentation","src":"1940:706:10","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC-721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":2641,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2660:16:10","nodeType":"FunctionDefinition","parameters":{"id":2639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"from","nameLocation":"2685:4:10","nodeType":"VariableDeclaration","scope":2641,"src":"2677:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2636,"mutability":"mutable","name":"to","nameLocation":"2699:2:10","nodeType":"VariableDeclaration","scope":2641,"src":"2691:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2635,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2638,"mutability":"mutable","name":"tokenId","nameLocation":"2711:7:10","nodeType":"VariableDeclaration","scope":2641,"src":"2703:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2637,"name":"uint256","nodeType":"ElementaryTypeName","src":"2703:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:10"},"returnParameters":{"id":2640,"nodeType":"ParameterList","parameters":[],"src":"2728:0:10"},"scope":2686,"src":"2651:78:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2642,"nodeType":"StructuredDocumentation","src":"2735:733:10","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2651,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3482:12:10","nodeType":"FunctionDefinition","parameters":{"id":2649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2644,"mutability":"mutable","name":"from","nameLocation":"3503:4:10","nodeType":"VariableDeclaration","scope":2651,"src":"3495:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2643,"name":"address","nodeType":"ElementaryTypeName","src":"3495:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2646,"mutability":"mutable","name":"to","nameLocation":"3517:2:10","nodeType":"VariableDeclaration","scope":2651,"src":"3509:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2645,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2648,"mutability":"mutable","name":"tokenId","nameLocation":"3529:7:10","nodeType":"VariableDeclaration","scope":2651,"src":"3521:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2647,"name":"uint256","nodeType":"ElementaryTypeName","src":"3521:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3494:43:10"},"returnParameters":{"id":2650,"nodeType":"ParameterList","parameters":[],"src":"3546:0:10"},"scope":2686,"src":"3473:74:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2652,"nodeType":"StructuredDocumentation","src":"3553:452:10","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2659,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4019:7:10","nodeType":"FunctionDefinition","parameters":{"id":2657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2654,"mutability":"mutable","name":"to","nameLocation":"4035:2:10","nodeType":"VariableDeclaration","scope":2659,"src":"4027:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2653,"name":"address","nodeType":"ElementaryTypeName","src":"4027:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2656,"mutability":"mutable","name":"tokenId","nameLocation":"4047:7:10","nodeType":"VariableDeclaration","scope":2659,"src":"4039:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2655,"name":"uint256","nodeType":"ElementaryTypeName","src":"4039:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4026:29:10"},"returnParameters":{"id":2658,"nodeType":"ParameterList","parameters":[],"src":"4064:0:10"},"scope":2686,"src":"4010:55:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"4071:315:10","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":2667,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4400:17:10","nodeType":"FunctionDefinition","parameters":{"id":2665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"operator","nameLocation":"4426:8:10","nodeType":"VariableDeclaration","scope":2667,"src":"4418:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2661,"name":"address","nodeType":"ElementaryTypeName","src":"4418:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2664,"mutability":"mutable","name":"approved","nameLocation":"4441:8:10","nodeType":"VariableDeclaration","scope":2667,"src":"4436:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2663,"name":"bool","nodeType":"ElementaryTypeName","src":"4436:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4417:33:10"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[],"src":"4459:0:10"},"scope":2686,"src":"4391:69:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2668,"nodeType":"StructuredDocumentation","src":"4466:139:10","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":2675,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4619:11:10","nodeType":"FunctionDefinition","parameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"tokenId","nameLocation":"4639:7:10","nodeType":"VariableDeclaration","scope":2675,"src":"4631:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2669,"name":"uint256","nodeType":"ElementaryTypeName","src":"4631:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4630:17:10"},"returnParameters":{"id":2674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2673,"mutability":"mutable","name":"operator","nameLocation":"4679:8:10","nodeType":"VariableDeclaration","scope":2675,"src":"4671:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2672,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4670:18:10"},"scope":2686,"src":"4610:79:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2676,"nodeType":"StructuredDocumentation","src":"4695:138:10","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":2685,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4847:16:10","nodeType":"FunctionDefinition","parameters":{"id":2681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2678,"mutability":"mutable","name":"owner","nameLocation":"4872:5:10","nodeType":"VariableDeclaration","scope":2685,"src":"4864:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2677,"name":"address","nodeType":"ElementaryTypeName","src":"4864:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2680,"mutability":"mutable","name":"operator","nameLocation":"4887:8:10","nodeType":"VariableDeclaration","scope":2685,"src":"4879:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2679,"name":"address","nodeType":"ElementaryTypeName","src":"4879:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4863:33:10"},"returnParameters":{"id":2684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2683,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2685,"src":"4920:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2682,"name":"bool","nodeType":"ElementaryTypeName","src":"4920:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4919:6:10"},"scope":2686,"src":"4838:88:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2687,"src":"267:4661:10","usedErrors":[],"usedEvents":[2585,2594,2603]}],"src":"108:4821:10"},"id":10},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[2704]},"id":2705,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2688,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"116:24:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"142:154:11","text":" @title ERC-721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC-721 asset contracts."},"fullyImplemented":false,"id":2704,"linearizedBaseContracts":[2704],"name":"IERC721Receiver","nameLocation":"307:15:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2690,"nodeType":"StructuredDocumentation","src":"329:500:11","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":2703,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"843:16:11","nodeType":"FunctionDefinition","parameters":{"id":2699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2692,"mutability":"mutable","name":"operator","nameLocation":"877:8:11","nodeType":"VariableDeclaration","scope":2703,"src":"869:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2691,"name":"address","nodeType":"ElementaryTypeName","src":"869:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2694,"mutability":"mutable","name":"from","nameLocation":"903:4:11","nodeType":"VariableDeclaration","scope":2703,"src":"895:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2693,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2696,"mutability":"mutable","name":"tokenId","nameLocation":"925:7:11","nodeType":"VariableDeclaration","scope":2703,"src":"917:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2695,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2698,"mutability":"mutable","name":"data","nameLocation":"957:4:11","nodeType":"VariableDeclaration","scope":2703,"src":"942:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2697,"name":"bytes","nodeType":"ElementaryTypeName","src":"942:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"859:108:11"},"returnParameters":{"id":2702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2701,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2703,"src":"986:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2700,"name":"bytes4","nodeType":"ElementaryTypeName","src":"986:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"985:8:11"},"scope":2704,"src":"834:160:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2705,"src":"297:699:11","usedErrors":[],"usedEvents":[]}],"src":"116:881:11"},"id":11},"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol","exportedSymbols":{"ERC721":[2569],"ERC721Enumerable":[3090],"IERC165":[6268],"IERC721Enumerable":[3122]},"id":3091,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2706,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"128:24:12"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"../ERC721.sol","id":2708,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3091,"sourceUnit":2570,"src":"154:37:12","symbolAliases":[{"foreign":{"id":2707,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"162:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","file":"./IERC721Enumerable.sol","id":2710,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3091,"sourceUnit":3123,"src":"192:58:12","symbolAliases":[{"foreign":{"id":2709,"name":"IERC721Enumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3122,"src":"200:17:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../../utils/introspection/ERC165.sol","id":2712,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3091,"sourceUnit":6257,"src":"251:64:12","symbolAliases":[{"foreign":{"id":2711,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6268,"src":"259:7:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2714,"name":"ERC721","nameLocations":["746:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"746:6:12"},"id":2715,"nodeType":"InheritanceSpecifier","src":"746:6:12"},{"baseName":{"id":2716,"name":"IERC721Enumerable","nameLocations":["754:17:12"],"nodeType":"IdentifierPath","referencedDeclaration":3122,"src":"754:17:12"},"id":2717,"nodeType":"InheritanceSpecifier","src":"754:17:12"}],"canonicalName":"ERC721Enumerable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2713,"nodeType":"StructuredDocumentation","src":"317:390:12","text":" @dev This implements an optional extension of {ERC721} defined in the ERC that adds enumerability\n of all the token ids in the contract as well as all token ids owned by each account.\n CAUTION: {ERC721} extensions that implement custom `balanceOf` logic, such as {ERC721Consecutive},\n interfere with enumerability and should not be used together with {ERC721Enumerable}."},"fullyImplemented":true,"id":3090,"linearizedBaseContracts":[3090,3122,2569,1550,3150,2686,6256,6268,4325],"name":"ERC721Enumerable","nameLocation":"726:16:12","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":2723,"mutability":"mutable","name":"_ownedTokens","nameLocation":"846:12:12","nodeType":"VariableDeclaration","scope":3090,"src":"778:80:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":2722,"keyName":"owner","keyNameLocation":"794:5:12","keyType":{"id":2718,"name":"address","nodeType":"ElementaryTypeName","src":"786:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"778:59:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2721,"keyName":"index","keyNameLocation":"819:5:12","keyType":{"id":2719,"name":"uint256","nodeType":"ElementaryTypeName","src":"811:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"803:33:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2720,"name":"uint256","nodeType":"ElementaryTypeName","src":"828:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":2727,"mutability":"mutable","name":"_ownedTokensIndex","nameLocation":"908:17:12","nodeType":"VariableDeclaration","scope":3090,"src":"864:61:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":2726,"keyName":"tokenId","keyNameLocation":"880:7:12","keyType":{"id":2724,"name":"uint256","nodeType":"ElementaryTypeName","src":"872:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"864:35:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2725,"name":"uint256","nodeType":"ElementaryTypeName","src":"891:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":2730,"mutability":"mutable","name":"_allTokens","nameLocation":"950:10:12","nodeType":"VariableDeclaration","scope":3090,"src":"932:28:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[]"},"typeName":{"baseType":{"id":2728,"name":"uint256","nodeType":"ElementaryTypeName","src":"932:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2729,"nodeType":"ArrayTypeName","src":"932:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"private"},{"constant":false,"id":2734,"mutability":"mutable","name":"_allTokensIndex","nameLocation":"1010:15:12","nodeType":"VariableDeclaration","scope":3090,"src":"966:59:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":2733,"keyName":"tokenId","keyNameLocation":"982:7:12","keyType":{"id":2731,"name":"uint256","nodeType":"ElementaryTypeName","src":"974:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"966:35:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2732,"name":"uint256","nodeType":"ElementaryTypeName","src":"993:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"documentation":{"id":2735,"nodeType":"StructuredDocumentation","src":"1032:168:12","text":" @dev An `owner`'s token query was out of bounds for `index`.\n NOTE: The owner being `address(0)` indicates a global out of bounds index."},"errorSelector":"a57d13dc","id":2741,"name":"ERC721OutOfBoundsIndex","nameLocation":"1211:22:12","nodeType":"ErrorDefinition","parameters":{"id":2740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2737,"mutability":"mutable","name":"owner","nameLocation":"1242:5:12","nodeType":"VariableDeclaration","scope":2741,"src":"1234:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2736,"name":"address","nodeType":"ElementaryTypeName","src":"1234:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2739,"mutability":"mutable","name":"index","nameLocation":"1257:5:12","nodeType":"VariableDeclaration","scope":2741,"src":"1249:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2738,"name":"uint256","nodeType":"ElementaryTypeName","src":"1249:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1233:30:12"},"src":"1205:59:12"},{"documentation":{"id":2742,"nodeType":"StructuredDocumentation","src":"1270:50:12","text":" @dev Batch mint is not allowed."},"errorSelector":"59171fc1","id":2744,"name":"ERC721EnumerableForbiddenBatchMint","nameLocation":"1331:34:12","nodeType":"ErrorDefinition","parameters":{"id":2743,"nodeType":"ParameterList","parameters":[],"src":"1365:2:12"},"src":"1325:43:12"},{"baseFunctions":[1698,6267],"body":{"id":2767,"nodeType":"Block","src":"1510:114:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2755,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2747,"src":"1527:11:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2757,"name":"IERC721Enumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3122,"src":"1547:17:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Enumerable_$3122_$","typeString":"type(contract IERC721Enumerable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Enumerable_$3122_$","typeString":"type(contract IERC721Enumerable)"}],"id":2756,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1542:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1542:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Enumerable_$3122","typeString":"type(contract IERC721Enumerable)"}},"id":2759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1566:11:12","memberName":"interfaceId","nodeType":"MemberAccess","src":"1542:35:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1527:50:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2763,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2747,"src":"1605:11:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":2761,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1581:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721Enumerable_$3090_$","typeString":"type(contract super ERC721Enumerable)"}},"id":2762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1587:17:12","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1698,"src":"1581:23:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1581:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1527:90:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2754,"id":2766,"nodeType":"Return","src":"1520:97:12"}]},"documentation":{"id":2745,"nodeType":"StructuredDocumentation","src":"1374:23:12","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":2768,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1411:17:12","nodeType":"FunctionDefinition","overrides":{"id":2751,"nodeType":"OverrideSpecifier","overrides":[{"id":2749,"name":"IERC165","nameLocations":["1478:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":6268,"src":"1478:7:12"},{"id":2750,"name":"ERC721","nameLocations":["1487:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"1487:6:12"}],"src":"1469:25:12"},"parameters":{"id":2748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2747,"mutability":"mutable","name":"interfaceId","nameLocation":"1436:11:12","nodeType":"VariableDeclaration","scope":2768,"src":"1429:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2746,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1429:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1428:20:12"},"returnParameters":{"id":2754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2768,"src":"1504:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2752,"name":"bool","nodeType":"ElementaryTypeName","src":"1504:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1503:6:12"},"scope":3090,"src":"1402:222:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3113],"body":{"id":2796,"nodeType":"Block","src":"1765:158:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2778,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2773,"src":"1779:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":2780,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"1798:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2779,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"1788:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1788:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1779:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2789,"nodeType":"IfStatement","src":"1775:99:12","trueBody":{"id":2788,"nodeType":"Block","src":"1806:68:12","statements":[{"errorCall":{"arguments":[{"id":2784,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"1850:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2785,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2773,"src":"1857:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2783,"name":"ERC721OutOfBoundsIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"1827:22:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256) pure returns (error)"}},"id":2786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1827:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2787,"nodeType":"RevertStatement","src":"1820:43:12"}]}},{"expression":{"baseExpression":{"baseExpression":{"id":2790,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2723,"src":"1890:12:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":2792,"indexExpression":{"id":2791,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"1903:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1890:19:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2794,"indexExpression":{"id":2793,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2773,"src":"1910:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1890:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2777,"id":2795,"nodeType":"Return","src":"1883:33:12"}]},"documentation":{"id":2769,"nodeType":"StructuredDocumentation","src":"1630:33:12","text":"@inheritdoc IERC721Enumerable"},"functionSelector":"2f745c59","id":2797,"implemented":true,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"1677:19:12","nodeType":"FunctionDefinition","parameters":{"id":2774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2771,"mutability":"mutable","name":"owner","nameLocation":"1705:5:12","nodeType":"VariableDeclaration","scope":2797,"src":"1697:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2770,"name":"address","nodeType":"ElementaryTypeName","src":"1697:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2773,"mutability":"mutable","name":"index","nameLocation":"1720:5:12","nodeType":"VariableDeclaration","scope":2797,"src":"1712:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2772,"name":"uint256","nodeType":"ElementaryTypeName","src":"1712:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1696:30:12"},"returnParameters":{"id":2777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2776,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2797,"src":"1756:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2775,"name":"uint256","nodeType":"ElementaryTypeName","src":"1756:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1755:9:12"},"scope":3090,"src":"1668:255:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3103],"body":{"id":2806,"nodeType":"Block","src":"2028:41:12","statements":[{"expression":{"expression":{"id":2803,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"2045:10:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":2804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2056:6:12","memberName":"length","nodeType":"MemberAccess","src":"2045:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2802,"id":2805,"nodeType":"Return","src":"2038:24:12"}]},"documentation":{"id":2798,"nodeType":"StructuredDocumentation","src":"1929:33:12","text":"@inheritdoc IERC721Enumerable"},"functionSelector":"18160ddd","id":2807,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"1976:11:12","nodeType":"FunctionDefinition","parameters":{"id":2799,"nodeType":"ParameterList","parameters":[],"src":"1987:2:12"},"returnParameters":{"id":2802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2807,"src":"2019:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2800,"name":"uint256","nodeType":"ElementaryTypeName","src":"2019:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2018:9:12"},"scope":3090,"src":"1967:102:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3121],"body":{"id":2833,"nodeType":"Block","src":"2188:151:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2815,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"2202:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2816,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"2211:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2211:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2202:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2828,"nodeType":"IfStatement","src":"2198:101:12","trueBody":{"id":2827,"nodeType":"Block","src":"2226:73:12","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2278:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2270:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2820,"name":"address","nodeType":"ElementaryTypeName","src":"2270:7:12","typeDescriptions":{}}},"id":2823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2270:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2824,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"2282:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2819,"name":"ERC721OutOfBoundsIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"2247:22:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256) pure returns (error)"}},"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2247:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2826,"nodeType":"RevertStatement","src":"2240:48:12"}]}},{"expression":{"baseExpression":{"id":2829,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"2315:10:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":2831,"indexExpression":{"id":2830,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"2326:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2315:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2814,"id":2832,"nodeType":"Return","src":"2308:24:12"}]},"documentation":{"id":2808,"nodeType":"StructuredDocumentation","src":"2075:33:12","text":"@inheritdoc IERC721Enumerable"},"functionSelector":"4f6ccce7","id":2834,"implemented":true,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"2122:12:12","nodeType":"FunctionDefinition","parameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"index","nameLocation":"2143:5:12","nodeType":"VariableDeclaration","scope":2834,"src":"2135:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2809,"name":"uint256","nodeType":"ElementaryTypeName","src":"2135:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2134:15:12"},"returnParameters":{"id":2814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2813,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2834,"src":"2179:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2812,"name":"uint256","nodeType":"ElementaryTypeName","src":"2179:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2178:9:12"},"scope":3090,"src":"2113:226:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2167],"body":{"id":2902,"nodeType":"Block","src":"2476:521:12","statements":[{"assignments":[2848],"declarations":[{"constant":false,"id":2848,"mutability":"mutable","name":"previousOwner","nameLocation":"2494:13:12","nodeType":"VariableDeclaration","scope":2902,"src":"2486:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2847,"name":"address","nodeType":"ElementaryTypeName","src":"2486:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2855,"initialValue":{"arguments":[{"id":2851,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2837,"src":"2524:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2852,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"2528:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2853,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"2537:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2849,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2510:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721Enumerable_$3090_$","typeString":"type(contract super ERC721Enumerable)"}},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2516:7:12","memberName":"_update","nodeType":"MemberAccess","referencedDeclaration":2167,"src":"2510:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2510:32:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2486:56:12"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2856,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2848,"src":"2557:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2582:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2574:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2857,"name":"address","nodeType":"ElementaryTypeName","src":"2574:7:12","typeDescriptions":{}}},"id":2860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2574:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2557:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2867,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2848,"src":"2661:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2868,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2837,"src":"2678:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2661:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2876,"nodeType":"IfStatement","src":"2657:106:12","trueBody":{"id":2875,"nodeType":"Block","src":"2682:81:12","statements":[{"expression":{"arguments":[{"id":2871,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2848,"src":"2729:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2872,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"2744:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2870,"name":"_removeTokenFromOwnerEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3016,"src":"2696:32:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2696:56:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2874,"nodeType":"ExpressionStatement","src":"2696:56:12"}]}},"id":2877,"nodeType":"IfStatement","src":"2553:210:12","trueBody":{"id":2866,"nodeType":"Block","src":"2586:65:12","statements":[{"expression":{"arguments":[{"id":2863,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"2632:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2862,"name":"_addTokenToAllTokensEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"2600:31:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2600:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2865,"nodeType":"ExpressionStatement","src":"2600:40:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2878,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2837,"src":"2776:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2790:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2782:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2879,"name":"address","nodeType":"ElementaryTypeName","src":"2782:7:12","typeDescriptions":{}}},"id":2882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2782:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2776:16:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2889,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2848,"src":"2874:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2890,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2837,"src":"2891:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2874:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2898,"nodeType":"IfStatement","src":"2870:90:12","trueBody":{"id":2897,"nodeType":"Block","src":"2895:65:12","statements":[{"expression":{"arguments":[{"id":2893,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2837,"src":"2937:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2894,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"2941:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2892,"name":"_addTokenToOwnerEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2934,"src":"2909:27:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2909:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2896,"nodeType":"ExpressionStatement","src":"2909:40:12"}]}},"id":2899,"nodeType":"IfStatement","src":"2772:188:12","trueBody":{"id":2888,"nodeType":"Block","src":"2794:70:12","statements":[{"expression":{"arguments":[{"id":2885,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"2845:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2884,"name":"_removeTokenFromAllTokensEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"2808:36:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2808:45:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2887,"nodeType":"ExpressionStatement","src":"2808:45:12"}]}},{"expression":{"id":2900,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2848,"src":"2977:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2846,"id":2901,"nodeType":"Return","src":"2970:20:12"}]},"documentation":{"id":2835,"nodeType":"StructuredDocumentation","src":"2345:22:12","text":"@inheritdoc ERC721"},"id":2903,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"2381:7:12","nodeType":"FunctionDefinition","overrides":{"id":2843,"nodeType":"OverrideSpecifier","overrides":[],"src":"2449:8:12"},"parameters":{"id":2842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2837,"mutability":"mutable","name":"to","nameLocation":"2397:2:12","nodeType":"VariableDeclaration","scope":2903,"src":"2389:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"2389:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2839,"mutability":"mutable","name":"tokenId","nameLocation":"2409:7:12","nodeType":"VariableDeclaration","scope":2903,"src":"2401:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2838,"name":"uint256","nodeType":"ElementaryTypeName","src":"2401:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2841,"mutability":"mutable","name":"auth","nameLocation":"2426:4:12","nodeType":"VariableDeclaration","scope":2903,"src":"2418:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2840,"name":"address","nodeType":"ElementaryTypeName","src":"2418:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2388:43:12"},"returnParameters":{"id":2846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2845,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2903,"src":"2467:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2844,"name":"address","nodeType":"ElementaryTypeName","src":"2467:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2466:9:12"},"scope":3090,"src":"2372:625:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2933,"nodeType":"Block","src":"3365:140:12","statements":[{"assignments":[2912],"declarations":[{"constant":false,"id":2912,"mutability":"mutable","name":"length","nameLocation":"3383:6:12","nodeType":"VariableDeclaration","scope":2933,"src":"3375:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2911,"name":"uint256","nodeType":"ElementaryTypeName","src":"3375:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2918,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2914,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"3402:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2913,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"3392:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3392:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3408:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3392:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3375:34:12"},{"expression":{"id":2925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2919,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2723,"src":"3419:12:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":2922,"indexExpression":{"id":2920,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"3432:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3419:16:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2923,"indexExpression":{"id":2921,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"3436:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3419:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2924,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"3446:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3419:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2926,"nodeType":"ExpressionStatement","src":"3419:34:12"},{"expression":{"id":2931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2927,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"3463:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2929,"indexExpression":{"id":2928,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"3481:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3463:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2930,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"3492:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3463:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2932,"nodeType":"ExpressionStatement","src":"3463:35:12"}]},"documentation":{"id":2904,"nodeType":"StructuredDocumentation","src":"3003:283:12","text":" @dev Private function to add a token to this extension's ownership-tracking data structures.\n @param to address representing the new owner of the given token ID\n @param tokenId uint256 ID of the token to be added to the tokens list of the given address"},"id":2934,"implemented":true,"kind":"function","modifiers":[],"name":"_addTokenToOwnerEnumeration","nameLocation":"3300:27:12","nodeType":"FunctionDefinition","parameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2906,"mutability":"mutable","name":"to","nameLocation":"3336:2:12","nodeType":"VariableDeclaration","scope":2934,"src":"3328:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2905,"name":"address","nodeType":"ElementaryTypeName","src":"3328:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"tokenId","nameLocation":"3348:7:12","nodeType":"VariableDeclaration","scope":2934,"src":"3340:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2907,"name":"uint256","nodeType":"ElementaryTypeName","src":"3340:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3327:29:12"},"returnParameters":{"id":2910,"nodeType":"ParameterList","parameters":[],"src":"3365:0:12"},"scope":3090,"src":"3291:214:12","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2953,"nodeType":"Block","src":"3766:95:12","statements":[{"expression":{"id":2945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2940,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2734,"src":"3776:15:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2942,"indexExpression":{"id":2941,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"3792:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3776:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2943,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"3803:10:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3814:6:12","memberName":"length","nodeType":"MemberAccess","src":"3803:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3776:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2946,"nodeType":"ExpressionStatement","src":"3776:44:12"},{"expression":{"arguments":[{"id":2950,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"3846:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2947,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"3830:10:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3841:4:12","memberName":"push","nodeType":"MemberAccess","src":"3830:15:12","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":2951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3830:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2952,"nodeType":"ExpressionStatement","src":"3830:24:12"}]},"documentation":{"id":2935,"nodeType":"StructuredDocumentation","src":"3511:184:12","text":" @dev Private function to add a token to this extension's token tracking data structures.\n @param tokenId uint256 ID of the token to be added to the tokens list"},"id":2954,"implemented":true,"kind":"function","modifiers":[],"name":"_addTokenToAllTokensEnumeration","nameLocation":"3709:31:12","nodeType":"FunctionDefinition","parameters":{"id":2938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2937,"mutability":"mutable","name":"tokenId","nameLocation":"3749:7:12","nodeType":"VariableDeclaration","scope":2954,"src":"3741:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2936,"name":"uint256","nodeType":"ElementaryTypeName","src":"3741:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3740:17:12"},"returnParameters":{"id":2939,"nodeType":"ParameterList","parameters":[],"src":"3766:0:12"},"scope":3090,"src":"3700:161:12","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":3015,"nodeType":"Block","src":"4559:974:12","statements":[{"assignments":[2963],"declarations":[{"constant":false,"id":2963,"mutability":"mutable","name":"lastTokenIndex","nameLocation":"4748:14:12","nodeType":"VariableDeclaration","scope":3015,"src":"4740:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2962,"name":"uint256","nodeType":"ElementaryTypeName","src":"4740:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2967,"initialValue":{"arguments":[{"id":2965,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"4775:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2964,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"4765:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4765:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4740:40:12"},{"assignments":[2969],"declarations":[{"constant":false,"id":2969,"mutability":"mutable","name":"tokenIndex","nameLocation":"4798:10:12","nodeType":"VariableDeclaration","scope":3015,"src":"4790:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2968,"name":"uint256","nodeType":"ElementaryTypeName","src":"4790:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2973,"initialValue":{"baseExpression":{"id":2970,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"4811:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2972,"indexExpression":{"id":2971,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"4829:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4811:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4790:47:12"},{"assignments":[2977],"declarations":[{"constant":false,"id":2977,"mutability":"mutable","name":"_ownedTokensByOwner","nameLocation":"4890:19:12","nodeType":"VariableDeclaration","scope":3015,"src":"4848:61:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":2976,"keyName":"index","keyNameLocation":"4864:5:12","keyType":{"id":2974,"name":"uint256","nodeType":"ElementaryTypeName","src":"4856:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"4848:33:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2975,"name":"uint256","nodeType":"ElementaryTypeName","src":"4873:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"id":2981,"initialValue":{"baseExpression":{"id":2978,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2723,"src":"4912:12:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":2980,"indexExpression":{"id":2979,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"4925:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4912:18:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4848:82:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2982,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"5034:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2983,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2963,"src":"5048:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5034:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3004,"nodeType":"IfStatement","src":"5030:325:12","trueBody":{"id":3003,"nodeType":"Block","src":"5064:291:12","statements":[{"assignments":[2986],"declarations":[{"constant":false,"id":2986,"mutability":"mutable","name":"lastTokenId","nameLocation":"5086:11:12","nodeType":"VariableDeclaration","scope":3003,"src":"5078:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2985,"name":"uint256","nodeType":"ElementaryTypeName","src":"5078:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2990,"initialValue":{"baseExpression":{"id":2987,"name":"_ownedTokensByOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"5100:19:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2989,"indexExpression":{"id":2988,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2963,"src":"5120:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5100:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5078:57:12"},{"expression":{"id":2995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2991,"name":"_ownedTokensByOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"5150:19:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2993,"indexExpression":{"id":2992,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"5170:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5150:31:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2994,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2986,"src":"5184:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5150:45:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2996,"nodeType":"ExpressionStatement","src":"5150:45:12"},{"expression":{"id":3001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2997,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"5267:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2999,"indexExpression":{"id":2998,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2986,"src":"5285:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5267:30:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3000,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"5300:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5267:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3002,"nodeType":"ExpressionStatement","src":"5267:43:12"}]}},{"expression":{"id":3008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5441:33:12","subExpression":{"baseExpression":{"id":3005,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"5448:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3007,"indexExpression":{"id":3006,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"5466:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5448:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3009,"nodeType":"ExpressionStatement","src":"5441:33:12"},{"expression":{"id":3013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5484:42:12","subExpression":{"baseExpression":{"id":3010,"name":"_ownedTokensByOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"5491:19:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3012,"indexExpression":{"id":3011,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2963,"src":"5511:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5491:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3014,"nodeType":"ExpressionStatement","src":"5484:42:12"}]},"documentation":{"id":2955,"nodeType":"StructuredDocumentation","src":"3867:606:12","text":" @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n This has O(1) time complexity, but alters the order of the _ownedTokens array.\n @param from address representing the previous owner of the given token ID\n @param tokenId uint256 ID of the token to be removed from the tokens list of the given address"},"id":3016,"implemented":true,"kind":"function","modifiers":[],"name":"_removeTokenFromOwnerEnumeration","nameLocation":"4487:32:12","nodeType":"FunctionDefinition","parameters":{"id":2960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2957,"mutability":"mutable","name":"from","nameLocation":"4528:4:12","nodeType":"VariableDeclaration","scope":3016,"src":"4520:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2956,"name":"address","nodeType":"ElementaryTypeName","src":"4520:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2959,"mutability":"mutable","name":"tokenId","nameLocation":"4542:7:12","nodeType":"VariableDeclaration","scope":3016,"src":"4534:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2958,"name":"uint256","nodeType":"ElementaryTypeName","src":"4534:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4519:31:12"},"returnParameters":{"id":2961,"nodeType":"ParameterList","parameters":[],"src":"4559:0:12"},"scope":3090,"src":"4478:1055:12","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":3063,"nodeType":"Block","src":"5892:990:12","statements":[{"assignments":[3023],"declarations":[{"constant":false,"id":3023,"mutability":"mutable","name":"lastTokenIndex","nameLocation":"6078:14:12","nodeType":"VariableDeclaration","scope":3063,"src":"6070:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3022,"name":"uint256","nodeType":"ElementaryTypeName","src":"6070:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3028,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3024,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"6095:10:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":3025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6106:6:12","memberName":"length","nodeType":"MemberAccess","src":"6095:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6115:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6095:21:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6070:46:12"},{"assignments":[3030],"declarations":[{"constant":false,"id":3030,"mutability":"mutable","name":"tokenIndex","nameLocation":"6134:10:12","nodeType":"VariableDeclaration","scope":3063,"src":"6126:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3029,"name":"uint256","nodeType":"ElementaryTypeName","src":"6126:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3034,"initialValue":{"baseExpression":{"id":3031,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2734,"src":"6147:15:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3033,"indexExpression":{"id":3032,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"6163:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6147:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6126:45:12"},{"assignments":[3036],"declarations":[{"constant":false,"id":3036,"mutability":"mutable","name":"lastTokenId","nameLocation":"6501:11:12","nodeType":"VariableDeclaration","scope":3063,"src":"6493:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3035,"name":"uint256","nodeType":"ElementaryTypeName","src":"6493:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3040,"initialValue":{"baseExpression":{"id":3037,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"6515:10:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":3039,"indexExpression":{"id":3038,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3023,"src":"6526:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6515:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6493:48:12"},{"expression":{"id":3045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3041,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"6552:10:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":3043,"indexExpression":{"id":3042,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3030,"src":"6563:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6552:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3044,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"6577:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6552:36:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3046,"nodeType":"ExpressionStatement","src":"6552:36:12"},{"expression":{"id":3051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3047,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2734,"src":"6656:15:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3049,"indexExpression":{"id":3048,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"6672:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6656:28:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3050,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3030,"src":"6687:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6656:41:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3052,"nodeType":"ExpressionStatement","src":"6656:41:12"},{"expression":{"id":3056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6818:31:12","subExpression":{"baseExpression":{"id":3053,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2734,"src":"6825:15:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3055,"indexExpression":{"id":3054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"6841:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6825:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3057,"nodeType":"ExpressionStatement","src":"6818:31:12"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3058,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"6859:10:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":3060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6870:3:12","memberName":"pop","nodeType":"MemberAccess","src":"6859:14:12","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":3061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6859:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3062,"nodeType":"ExpressionStatement","src":"6859:16:12"}]},"documentation":{"id":3017,"nodeType":"StructuredDocumentation","src":"5539:277:12","text":" @dev Private function to remove a token from this extension's token tracking data structures.\n This has O(1) time complexity, but alters the order of the _allTokens array.\n @param tokenId uint256 ID of the token to be removed from the tokens list"},"id":3064,"implemented":true,"kind":"function","modifiers":[],"name":"_removeTokenFromAllTokensEnumeration","nameLocation":"5830:36:12","nodeType":"FunctionDefinition","parameters":{"id":3020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3019,"mutability":"mutable","name":"tokenId","nameLocation":"5875:7:12","nodeType":"VariableDeclaration","scope":3064,"src":"5867:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3018,"name":"uint256","nodeType":"ElementaryTypeName","src":"5867:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5866:17:12"},"returnParameters":{"id":3021,"nodeType":"ParameterList","parameters":[],"src":"5892:0:12"},"scope":3090,"src":"5821:1061:12","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[2077],"body":{"id":3088,"nodeType":"Block","src":"7121:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":3075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3073,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"7135:6:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7144:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7135:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3080,"nodeType":"IfStatement","src":"7131:84:12","trueBody":{"id":3079,"nodeType":"Block","src":"7147:68:12","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3076,"name":"ERC721EnumerableForbiddenBatchMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"7168:34:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7168:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3078,"nodeType":"RevertStatement","src":"7161:43:12"}]}},{"expression":{"arguments":[{"id":3084,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"7247:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3085,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"7256:6:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":3081,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"7224:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721Enumerable_$3090_$","typeString":"type(contract super ERC721Enumerable)"}},"id":3083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7230:16:12","memberName":"_increaseBalance","nodeType":"MemberAccess","referencedDeclaration":2077,"src":"7224:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":3086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7224:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3087,"nodeType":"ExpressionStatement","src":"7224:39:12"}]},"documentation":{"id":3065,"nodeType":"StructuredDocumentation","src":"6888:143:12","text":" See {ERC721-_increaseBalance}. We need to forbid batch minting because the enumeration\n extension does not support it."},"id":3089,"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"7045:16:12","nodeType":"FunctionDefinition","overrides":{"id":3071,"nodeType":"OverrideSpecifier","overrides":[],"src":"7112:8:12"},"parameters":{"id":3070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3067,"mutability":"mutable","name":"account","nameLocation":"7070:7:12","nodeType":"VariableDeclaration","scope":3089,"src":"7062:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3066,"name":"address","nodeType":"ElementaryTypeName","src":"7062:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3069,"mutability":"mutable","name":"amount","nameLocation":"7087:6:12","nodeType":"VariableDeclaration","scope":3089,"src":"7079:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3068,"name":"uint128","nodeType":"ElementaryTypeName","src":"7079:7:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"7061:33:12"},"returnParameters":{"id":3072,"nodeType":"ParameterList","parameters":[],"src":"7121:0:12"},"scope":3090,"src":"7036:234:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3091,"src":"708:6564:12","usedErrors":[1508,1513,1522,1527,1532,1539,1544,1549,2741,2744],"usedEvents":[2585,2594,2603]}],"src":"128:7145:12"},"id":12},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","exportedSymbols":{"IERC721":[2686],"IERC721Enumerable":[3122]},"id":3123,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3092,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"129:24:13"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":3094,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3123,"sourceUnit":2687,"src":"155:39:13","symbolAliases":[{"foreign":{"id":3093,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"163:7:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3096,"name":"IERC721","nameLocations":["364:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2686,"src":"364:7:13"},"id":3097,"nodeType":"InheritanceSpecifier","src":"364:7:13"}],"canonicalName":"IERC721Enumerable","contractDependencies":[],"contractKind":"interface","documentation":{"id":3095,"nodeType":"StructuredDocumentation","src":"196:136:13","text":" @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":3122,"linearizedBaseContracts":[3122,2686,6268],"name":"IERC721Enumerable","nameLocation":"343:17:13","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3098,"nodeType":"StructuredDocumentation","src":"378:82:13","text":" @dev Returns the total amount of tokens stored by the contract."},"functionSelector":"18160ddd","id":3103,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"474:11:13","nodeType":"FunctionDefinition","parameters":{"id":3099,"nodeType":"ParameterList","parameters":[],"src":"485:2:13"},"returnParameters":{"id":3102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3103,"src":"511:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3100,"name":"uint256","nodeType":"ElementaryTypeName","src":"511:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"510:9:13"},"scope":3122,"src":"465:55:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3104,"nodeType":"StructuredDocumentation","src":"526:171:13","text":" @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"functionSelector":"2f745c59","id":3113,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"711:19:13","nodeType":"FunctionDefinition","parameters":{"id":3109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3106,"mutability":"mutable","name":"owner","nameLocation":"739:5:13","nodeType":"VariableDeclaration","scope":3113,"src":"731:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3105,"name":"address","nodeType":"ElementaryTypeName","src":"731:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3108,"mutability":"mutable","name":"index","nameLocation":"754:5:13","nodeType":"VariableDeclaration","scope":3113,"src":"746:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3107,"name":"uint256","nodeType":"ElementaryTypeName","src":"746:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"730:30:13"},"returnParameters":{"id":3112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3113,"src":"784:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3110,"name":"uint256","nodeType":"ElementaryTypeName","src":"784:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"783:9:13"},"scope":3122,"src":"702:91:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3114,"nodeType":"StructuredDocumentation","src":"799:164:13","text":" @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens."},"functionSelector":"4f6ccce7","id":3121,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"977:12:13","nodeType":"FunctionDefinition","parameters":{"id":3117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3116,"mutability":"mutable","name":"index","nameLocation":"998:5:13","nodeType":"VariableDeclaration","scope":3121,"src":"990:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3115,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"989:15:13"},"returnParameters":{"id":3120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3121,"src":"1028:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1027:9:13"},"scope":3122,"src":"968:69:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3123,"src":"333:706:13","usedErrors":[],"usedEvents":[2585,2594,2603]}],"src":"129:911:13"},"id":13},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC721":[2686],"IERC721Metadata":[3150]},"id":3151,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3124,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"127:24:14"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":3126,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3151,"sourceUnit":2687,"src":"153:39:14","symbolAliases":[{"foreign":{"id":3125,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"161:7:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3128,"name":"IERC721","nameLocations":["357:7:14"],"nodeType":"IdentifierPath","referencedDeclaration":2686,"src":"357:7:14"},"id":3129,"nodeType":"InheritanceSpecifier","src":"357:7:14"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":3127,"nodeType":"StructuredDocumentation","src":"194:133:14","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":3150,"linearizedBaseContracts":[3150,2686,6268],"name":"IERC721Metadata","nameLocation":"338:15:14","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3130,"nodeType":"StructuredDocumentation","src":"371:58:14","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":3135,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"443:4:14","nodeType":"FunctionDefinition","parameters":{"id":3131,"nodeType":"ParameterList","parameters":[],"src":"447:2:14"},"returnParameters":{"id":3134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3133,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3135,"src":"473:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3132,"name":"string","nodeType":"ElementaryTypeName","src":"473:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"472:15:14"},"scope":3150,"src":"434:54:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3136,"nodeType":"StructuredDocumentation","src":"494:60:14","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":3141,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"568:6:14","nodeType":"FunctionDefinition","parameters":{"id":3137,"nodeType":"ParameterList","parameters":[],"src":"574:2:14"},"returnParameters":{"id":3140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3141,"src":"600:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3138,"name":"string","nodeType":"ElementaryTypeName","src":"600:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"599:15:14"},"scope":3150,"src":"559:56:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3142,"nodeType":"StructuredDocumentation","src":"621:90:14","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":3149,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"725:8:14","nodeType":"FunctionDefinition","parameters":{"id":3145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3144,"mutability":"mutable","name":"tokenId","nameLocation":"742:7:14","nodeType":"VariableDeclaration","scope":3149,"src":"734:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3143,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"733:17:14"},"returnParameters":{"id":3148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3149,"src":"774:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3146,"name":"string","nodeType":"ElementaryTypeName","src":"774:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"773:15:14"},"scope":3150,"src":"716:73:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3151,"src":"328:463:14","usedErrors":[],"usedEvents":[2585,2594,2603]}],"src":"127:665:14"},"id":14},"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol","exportedSymbols":{"ERC721Utils":[3227],"IERC721Errors":[1550],"IERC721Receiver":[2704]},"id":3228,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3152,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"118:24:15"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"../IERC721Receiver.sol","id":3154,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3228,"sourceUnit":2705,"src":"144:55:15","symbolAliases":[{"foreign":{"id":3153,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"152:15:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../../interfaces/draft-IERC6093.sol","id":3156,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3228,"sourceUnit":1598,"src":"200:69:15","symbolAliases":[{"foreign":{"id":3155,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"208:13:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC721Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":3157,"nodeType":"StructuredDocumentation","src":"271:160:15","text":" @dev Library that provides common ERC-721 utility functions.\n See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\n _Available since v5.1._"},"fullyImplemented":true,"id":3227,"linearizedBaseContracts":[3227],"name":"ERC721Utils","nameLocation":"440:11:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":3225,"nodeType":"Block","src":"1160:760:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":3171,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3164,"src":"1174:2:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1177:4:15","memberName":"code","nodeType":"MemberAccess","src":"1174:7:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1182:6:15","memberName":"length","nodeType":"MemberAccess","src":"1174:14:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1191:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1174:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3224,"nodeType":"IfStatement","src":"1170:744:15","trueBody":{"id":3223,"nodeType":"Block","src":"1194:720:15","statements":[{"clauses":[{"block":{"id":3201,"nodeType":"Block","src":"1304:214:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3188,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3186,"src":"1326:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":3189,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"1336:15:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$2704_$","typeString":"type(contract IERC721Receiver)"}},"id":3190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1352:16:15","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2703,"src":"1336:32:15","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":3191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1369:8:15","memberName":"selector","nodeType":"MemberAccess","src":"1336:41:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1326:51:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3200,"nodeType":"IfStatement","src":"1322:182:15","trueBody":{"id":3199,"nodeType":"Block","src":"1379:125:15","statements":[{"errorCall":{"arguments":[{"id":3196,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3164,"src":"1482:2:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3193,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"1446:13:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Errors_$1550_$","typeString":"type(contract IERC721Errors)"}},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1460:21:15","memberName":"ERC721InvalidReceiver","nodeType":"MemberAccess","referencedDeclaration":1532,"src":"1446:35:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1446:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3198,"nodeType":"RevertStatement","src":"1439:46:15"}]}}]},"errorName":"","id":3202,"nodeType":"TryCatchClause","parameters":{"id":3187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3186,"mutability":"mutable","name":"retval","nameLocation":"1296:6:15","nodeType":"VariableDeclaration","scope":3202,"src":"1289:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3185,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1289:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1288:15:15"},"src":"1280:238:15"},{"block":{"id":3220,"nodeType":"Block","src":"1547:357:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3206,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3204,"src":"1569:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1576:6:15","memberName":"length","nodeType":"MemberAccess","src":"1569:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1586:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1569:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3218,"nodeType":"Block","src":"1737:153:15","statements":[{"AST":{"nativeSrc":"1784:88:15","nodeType":"YulBlock","src":"1784:88:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"reason","nativeSrc":"1821:6:15","nodeType":"YulIdentifier","src":"1821:6:15"},{"kind":"number","nativeSrc":"1829:4:15","nodeType":"YulLiteral","src":"1829:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1817:3:15","nodeType":"YulIdentifier","src":"1817:3:15"},"nativeSrc":"1817:17:15","nodeType":"YulFunctionCall","src":"1817:17:15"},{"arguments":[{"name":"reason","nativeSrc":"1842:6:15","nodeType":"YulIdentifier","src":"1842:6:15"}],"functionName":{"name":"mload","nativeSrc":"1836:5:15","nodeType":"YulIdentifier","src":"1836:5:15"},"nativeSrc":"1836:13:15","nodeType":"YulFunctionCall","src":"1836:13:15"}],"functionName":{"name":"revert","nativeSrc":"1810:6:15","nodeType":"YulIdentifier","src":"1810:6:15"},"nativeSrc":"1810:40:15","nodeType":"YulFunctionCall","src":"1810:40:15"},"nativeSrc":"1810:40:15","nodeType":"YulExpressionStatement","src":"1810:40:15"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3204,"isOffset":false,"isSlot":false,"src":"1821:6:15","valueSize":1},{"declaration":3204,"isOffset":false,"isSlot":false,"src":"1842:6:15","valueSize":1}],"flags":["memory-safe"],"id":3217,"nodeType":"InlineAssembly","src":"1759:113:15"}]},"id":3219,"nodeType":"IfStatement","src":"1565:325:15","trueBody":{"id":3216,"nodeType":"Block","src":"1589:142:15","statements":[{"errorCall":{"arguments":[{"id":3213,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3164,"src":"1709:2:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3210,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"1673:13:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Errors_$1550_$","typeString":"type(contract IERC721Errors)"}},"id":3212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1687:21:15","memberName":"ERC721InvalidReceiver","nodeType":"MemberAccess","referencedDeclaration":1532,"src":"1673:35:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3215,"nodeType":"RevertStatement","src":"1666:46:15"}]}}]},"errorName":"","id":3221,"nodeType":"TryCatchClause","parameters":{"id":3205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3204,"mutability":"mutable","name":"reason","nameLocation":"1539:6:15","nodeType":"VariableDeclaration","scope":3221,"src":"1526:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3203,"name":"bytes","nodeType":"ElementaryTypeName","src":"1526:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1525:21:15"},"src":"1519:385:15"}],"externalCall":{"arguments":[{"id":3180,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3160,"src":"1249:8:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3181,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"1259:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3182,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"1265:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3183,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"1274:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":3177,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3164,"src":"1228:2:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3176,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"1212:15:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$2704_$","typeString":"type(contract IERC721Receiver)"}},"id":3178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1212:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$2704","typeString":"contract IERC721Receiver"}},"id":3179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1232:16:15","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2703,"src":"1212:36:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1212:67:15","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3222,"nodeType":"TryStatement","src":"1208:696:15"}]}}]},"documentation":{"id":3158,"nodeType":"StructuredDocumentation","src":"458:531:15","text":" @dev Performs an acceptance check for the provided `operator` by calling {IERC721Receiver-onERC721Received}\n on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\n The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\n Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\n the transfer."},"id":3226,"implemented":true,"kind":"function","modifiers":[],"name":"checkOnERC721Received","nameLocation":"1003:21:15","nodeType":"FunctionDefinition","parameters":{"id":3169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3160,"mutability":"mutable","name":"operator","nameLocation":"1042:8:15","nodeType":"VariableDeclaration","scope":3226,"src":"1034:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3159,"name":"address","nodeType":"ElementaryTypeName","src":"1034:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3162,"mutability":"mutable","name":"from","nameLocation":"1068:4:15","nodeType":"VariableDeclaration","scope":3226,"src":"1060:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3161,"name":"address","nodeType":"ElementaryTypeName","src":"1060:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3164,"mutability":"mutable","name":"to","nameLocation":"1090:2:15","nodeType":"VariableDeclaration","scope":3226,"src":"1082:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3163,"name":"address","nodeType":"ElementaryTypeName","src":"1082:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3166,"mutability":"mutable","name":"tokenId","nameLocation":"1110:7:15","nodeType":"VariableDeclaration","scope":3226,"src":"1102:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3165,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3168,"mutability":"mutable","name":"data","nameLocation":"1140:4:15","nodeType":"VariableDeclaration","scope":3226,"src":"1127:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3167,"name":"bytes","nodeType":"ElementaryTypeName","src":"1127:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1024:126:15"},"returnParameters":{"id":3170,"nodeType":"ParameterList","parameters":[],"src":"1160:0:15"},"scope":3227,"src":"994:926:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3228,"src":"432:1490:15","usedErrors":[],"usedEvents":[]}],"src":"118:1805:15"},"id":15},"@openzeppelin/contracts/token/common/ERC2981.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/common/ERC2981.sol","exportedSymbols":{"ERC165":[6256],"ERC2981":[3494],"IERC165":[6268],"IERC2981":[1450]},"id":3495,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3229,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:16"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC2981.sol","file":"../../interfaces/IERC2981.sol","id":3231,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3495,"sourceUnit":1451,"src":"134:55:16","symbolAliases":[{"foreign":{"id":3230,"name":"IERC2981","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"142:8:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":3234,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3495,"sourceUnit":6257,"src":"190:69:16","symbolAliases":[{"foreign":{"id":3232,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6268,"src":"198:7:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3233,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6256,"src":"207:6:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3236,"name":"IERC2981","nameLocations":["1135:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":1450,"src":"1135:8:16"},"id":3237,"nodeType":"InheritanceSpecifier","src":"1135:8:16"},{"baseName":{"id":3238,"name":"ERC165","nameLocations":["1145:6:16"],"nodeType":"IdentifierPath","referencedDeclaration":6256,"src":"1145:6:16"},"id":3239,"nodeType":"InheritanceSpecifier","src":"1145:6:16"}],"canonicalName":"ERC2981","contractDependencies":[],"contractKind":"contract","documentation":{"id":3235,"nodeType":"StructuredDocumentation","src":"261:844:16","text":" @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.\n Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for\n specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.\n Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the\n fee is specified in basis points by default.\n IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See\n https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the ERC. Marketplaces are expected to\n voluntarily pay royalties together with sales, but note that this standard is not yet widely supported."},"fullyImplemented":true,"id":3494,"linearizedBaseContracts":[3494,6256,1450,6268],"name":"ERC2981","nameLocation":"1124:7:16","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ERC2981.RoyaltyInfo","id":3244,"members":[{"constant":false,"id":3241,"mutability":"mutable","name":"receiver","nameLocation":"1195:8:16","nodeType":"VariableDeclaration","scope":3244,"src":"1187:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3240,"name":"address","nodeType":"ElementaryTypeName","src":"1187:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3243,"mutability":"mutable","name":"royaltyFraction","nameLocation":"1220:15:16","nodeType":"VariableDeclaration","scope":3244,"src":"1213:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3242,"name":"uint96","nodeType":"ElementaryTypeName","src":"1213:6:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"name":"RoyaltyInfo","nameLocation":"1165:11:16","nodeType":"StructDefinition","scope":3494,"src":"1158:84:16","visibility":"public"},{"constant":false,"id":3247,"mutability":"mutable","name":"_defaultRoyaltyInfo","nameLocation":"1268:19:16","nodeType":"VariableDeclaration","scope":3494,"src":"1248:39:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage","typeString":"struct ERC2981.RoyaltyInfo"},"typeName":{"id":3246,"nodeType":"UserDefinedTypeName","pathNode":{"id":3245,"name":"RoyaltyInfo","nameLocations":["1248:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":3244,"src":"1248:11:16"},"referencedDeclaration":3244,"src":"1248:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo"}},"visibility":"private"},{"constant":false,"id":3252,"mutability":"mutable","name":"_tokenRoyaltyInfo","nameLocation":"1341:17:16","nodeType":"VariableDeclaration","scope":3494,"src":"1293:65:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$3244_storage_$","typeString":"mapping(uint256 => struct ERC2981.RoyaltyInfo)"},"typeName":{"id":3251,"keyName":"tokenId","keyNameLocation":"1309:7:16","keyType":{"id":3248,"name":"uint256","nodeType":"ElementaryTypeName","src":"1301:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1293:39:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$3244_storage_$","typeString":"mapping(uint256 => struct ERC2981.RoyaltyInfo)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3250,"nodeType":"UserDefinedTypeName","pathNode":{"id":3249,"name":"RoyaltyInfo","nameLocations":["1320:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":3244,"src":"1320:11:16"},"referencedDeclaration":3244,"src":"1320:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo"}}},"visibility":"private"},{"documentation":{"id":3253,"nodeType":"StructuredDocumentation","src":"1365:96:16","text":" @dev The default royalty set is invalid (eg. (numerator / denominator) >= 1)."},"errorSelector":"6f483d09","id":3259,"name":"ERC2981InvalidDefaultRoyalty","nameLocation":"1472:28:16","nodeType":"ErrorDefinition","parameters":{"id":3258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3255,"mutability":"mutable","name":"numerator","nameLocation":"1509:9:16","nodeType":"VariableDeclaration","scope":3259,"src":"1501:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3254,"name":"uint256","nodeType":"ElementaryTypeName","src":"1501:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3257,"mutability":"mutable","name":"denominator","nameLocation":"1528:11:16","nodeType":"VariableDeclaration","scope":3259,"src":"1520:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3256,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1500:40:16"},"src":"1466:75:16"},{"documentation":{"id":3260,"nodeType":"StructuredDocumentation","src":"1547:64:16","text":" @dev The default royalty receiver is invalid."},"errorSelector":"b6d9900a","id":3264,"name":"ERC2981InvalidDefaultRoyaltyReceiver","nameLocation":"1622:36:16","nodeType":"ErrorDefinition","parameters":{"id":3263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3262,"mutability":"mutable","name":"receiver","nameLocation":"1667:8:16","nodeType":"VariableDeclaration","scope":3264,"src":"1659:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3261,"name":"address","nodeType":"ElementaryTypeName","src":"1659:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1658:18:16"},"src":"1616:61:16"},{"documentation":{"id":3265,"nodeType":"StructuredDocumentation","src":"1683:113:16","text":" @dev The royalty set for a specific `tokenId` is invalid (eg. (numerator / denominator) >= 1)."},"errorSelector":"dfd1fc1b","id":3273,"name":"ERC2981InvalidTokenRoyalty","nameLocation":"1807:26:16","nodeType":"ErrorDefinition","parameters":{"id":3272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3267,"mutability":"mutable","name":"tokenId","nameLocation":"1842:7:16","nodeType":"VariableDeclaration","scope":3273,"src":"1834:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3266,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3269,"mutability":"mutable","name":"numerator","nameLocation":"1859:9:16","nodeType":"VariableDeclaration","scope":3273,"src":"1851:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3268,"name":"uint256","nodeType":"ElementaryTypeName","src":"1851:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3271,"mutability":"mutable","name":"denominator","nameLocation":"1878:11:16","nodeType":"VariableDeclaration","scope":3273,"src":"1870:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3270,"name":"uint256","nodeType":"ElementaryTypeName","src":"1870:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1833:57:16"},"src":"1801:90:16"},{"documentation":{"id":3274,"nodeType":"StructuredDocumentation","src":"1897:70:16","text":" @dev The royalty receiver for `tokenId` is invalid."},"errorSelector":"969f0852","id":3280,"name":"ERC2981InvalidTokenRoyaltyReceiver","nameLocation":"1978:34:16","nodeType":"ErrorDefinition","parameters":{"id":3279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3276,"mutability":"mutable","name":"tokenId","nameLocation":"2021:7:16","nodeType":"VariableDeclaration","scope":3280,"src":"2013:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3275,"name":"uint256","nodeType":"ElementaryTypeName","src":"2013:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3278,"mutability":"mutable","name":"receiver","nameLocation":"2038:8:16","nodeType":"VariableDeclaration","scope":3280,"src":"2030:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3277,"name":"address","nodeType":"ElementaryTypeName","src":"2030:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2012:35:16"},"src":"1972:76:16"},{"baseFunctions":[6255,6267],"body":{"id":3303,"nodeType":"Block","src":"2190:105:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3291,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"2207:11:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3293,"name":"IERC2981","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"2227:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC2981_$1450_$","typeString":"type(contract IERC2981)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC2981_$1450_$","typeString":"type(contract IERC2981)"}],"id":3292,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2222:4:16","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2222:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC2981_$1450","typeString":"type(contract IERC2981)"}},"id":3295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2237:11:16","memberName":"interfaceId","nodeType":"MemberAccess","src":"2222:26:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2207:41:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":3299,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"2276:11:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":3297,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2252:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC2981_$3494_$","typeString":"type(contract super ERC2981)"}},"id":3298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2258:17:16","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":6255,"src":"2252:23:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":3300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2252:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2207:81:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3290,"id":3302,"nodeType":"Return","src":"2200:88:16"}]},"documentation":{"id":3281,"nodeType":"StructuredDocumentation","src":"2054:23:16","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":3304,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2091:17:16","nodeType":"FunctionDefinition","overrides":{"id":3287,"nodeType":"OverrideSpecifier","overrides":[{"id":3285,"name":"IERC165","nameLocations":["2158:7:16"],"nodeType":"IdentifierPath","referencedDeclaration":6268,"src":"2158:7:16"},{"id":3286,"name":"ERC165","nameLocations":["2167:6:16"],"nodeType":"IdentifierPath","referencedDeclaration":6256,"src":"2167:6:16"}],"src":"2149:25:16"},"parameters":{"id":3284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3283,"mutability":"mutable","name":"interfaceId","nameLocation":"2116:11:16","nodeType":"VariableDeclaration","scope":3304,"src":"2109:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3282,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2109:6:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2108:20:16"},"returnParameters":{"id":3290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3304,"src":"2184:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3288,"name":"bool","nodeType":"ElementaryTypeName","src":"2184:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2183:6:16"},"scope":3494,"src":"2082:213:16","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1449],"body":{"id":3365,"nodeType":"Block","src":"2472:515:16","statements":[{"assignments":[3318],"declarations":[{"constant":false,"id":3318,"mutability":"mutable","name":"_royaltyInfo","nameLocation":"2502:12:16","nodeType":"VariableDeclaration","scope":3365,"src":"2482:32:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo"},"typeName":{"id":3317,"nodeType":"UserDefinedTypeName","pathNode":{"id":3316,"name":"RoyaltyInfo","nameLocations":["2482:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":3244,"src":"2482:11:16"},"referencedDeclaration":3244,"src":"2482:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo"}},"visibility":"internal"}],"id":3322,"initialValue":{"baseExpression":{"id":3319,"name":"_tokenRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"2517:17:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$3244_storage_$","typeString":"mapping(uint256 => struct ERC2981.RoyaltyInfo storage ref)"}},"id":3321,"indexExpression":{"id":3320,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"2535:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2517:26:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2482:61:16"},{"assignments":[3324],"declarations":[{"constant":false,"id":3324,"mutability":"mutable","name":"royaltyReceiver","nameLocation":"2561:15:16","nodeType":"VariableDeclaration","scope":3365,"src":"2553:23:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3323,"name":"address","nodeType":"ElementaryTypeName","src":"2553:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3327,"initialValue":{"expression":{"id":3325,"name":"_royaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3318,"src":"2579:12:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo storage pointer"}},"id":3326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2592:8:16","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":3241,"src":"2579:21:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2553:47:16"},{"assignments":[3329],"declarations":[{"constant":false,"id":3329,"mutability":"mutable","name":"royaltyFraction","nameLocation":"2617:15:16","nodeType":"VariableDeclaration","scope":3365,"src":"2610:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3328,"name":"uint96","nodeType":"ElementaryTypeName","src":"2610:6:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":3332,"initialValue":{"expression":{"id":3330,"name":"_royaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3318,"src":"2635:12:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage_ptr","typeString":"struct ERC2981.RoyaltyInfo storage pointer"}},"id":3331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2648:15:16","memberName":"royaltyFraction","nodeType":"MemberAccess","referencedDeclaration":3243,"src":"2635:28:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"2610:53:16"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3333,"name":"royaltyReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3324,"src":"2678:15:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2705:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2697:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3334,"name":"address","nodeType":"ElementaryTypeName","src":"2697:7:16","typeDescriptions":{}}},"id":3337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2697:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2678:29:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3350,"nodeType":"IfStatement","src":"2674:173:16","trueBody":{"id":3349,"nodeType":"Block","src":"2709:138:16","statements":[{"expression":{"id":3342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3339,"name":"royaltyReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3324,"src":"2723:15:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3340,"name":"_defaultRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"2741:19:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"id":3341,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2761:8:16","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":3241,"src":"2741:28:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2723:46:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3343,"nodeType":"ExpressionStatement","src":"2723:46:16"},{"expression":{"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3344,"name":"royaltyFraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3329,"src":"2783:15:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3345,"name":"_defaultRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"2801:19:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"id":3346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2821:15:16","memberName":"royaltyFraction","nodeType":"MemberAccess","referencedDeclaration":3243,"src":"2801:35:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"2783:53:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":3348,"nodeType":"ExpressionStatement","src":"2783:53:16"}]}},{"assignments":[3352],"declarations":[{"constant":false,"id":3352,"mutability":"mutable","name":"royaltyAmount","nameLocation":"2865:13:16","nodeType":"VariableDeclaration","scope":3365,"src":"2857:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3351,"name":"uint256","nodeType":"ElementaryTypeName","src":"2857:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3360,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3353,"name":"salePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3309,"src":"2882:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3354,"name":"royaltyFraction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3329,"src":"2894:15:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"2882:27:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3356,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2881:29:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3357,"name":"_feeDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"2913:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint96_$","typeString":"function () pure returns (uint96)"}},"id":3358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2913:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"2881:49:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2857:73:16"},{"expression":{"components":[{"id":3361,"name":"royaltyReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3324,"src":"2949:15:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3362,"name":"royaltyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3352,"src":"2966:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3363,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2948:32:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":3315,"id":3364,"nodeType":"Return","src":"2941:39:16"}]},"documentation":{"id":3305,"nodeType":"StructuredDocumentation","src":"2301:24:16","text":"@inheritdoc IERC2981"},"functionSelector":"2a55205a","id":3366,"implemented":true,"kind":"function","modifiers":[],"name":"royaltyInfo","nameLocation":"2339:11:16","nodeType":"FunctionDefinition","parameters":{"id":3310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3307,"mutability":"mutable","name":"tokenId","nameLocation":"2368:7:16","nodeType":"VariableDeclaration","scope":3366,"src":"2360:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3306,"name":"uint256","nodeType":"ElementaryTypeName","src":"2360:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3309,"mutability":"mutable","name":"salePrice","nameLocation":"2393:9:16","nodeType":"VariableDeclaration","scope":3366,"src":"2385:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3308,"name":"uint256","nodeType":"ElementaryTypeName","src":"2385:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2350:58:16"},"returnParameters":{"id":3315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3312,"mutability":"mutable","name":"receiver","nameLocation":"2446:8:16","nodeType":"VariableDeclaration","scope":3366,"src":"2438:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3311,"name":"address","nodeType":"ElementaryTypeName","src":"2438:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3314,"mutability":"mutable","name":"amount","nameLocation":"2464:6:16","nodeType":"VariableDeclaration","scope":3366,"src":"2456:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3313,"name":"uint256","nodeType":"ElementaryTypeName","src":"2456:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2437:34:16"},"scope":3494,"src":"2330:657:16","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3374,"nodeType":"Block","src":"3328:29:16","statements":[{"expression":{"hexValue":"3130303030","id":3372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3345:5:16","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"functionReturnParameters":3371,"id":3373,"nodeType":"Return","src":"3338:12:16"}]},"documentation":{"id":3367,"nodeType":"StructuredDocumentation","src":"2993:264:16","text":" @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a\n fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an\n override."},"id":3375,"implemented":true,"kind":"function","modifiers":[],"name":"_feeDenominator","nameLocation":"3271:15:16","nodeType":"FunctionDefinition","parameters":{"id":3368,"nodeType":"ParameterList","parameters":[],"src":"3286:2:16"},"returnParameters":{"id":3371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3370,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3375,"src":"3320:6:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3369,"name":"uint96","nodeType":"ElementaryTypeName","src":"3320:6:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"3319:8:16"},"scope":3494,"src":"3262:95:16","stateMutability":"pure","virtual":true,"visibility":"internal"},{"body":{"id":3420,"nodeType":"Block","src":"3702:423:16","statements":[{"assignments":[3384],"declarations":[{"constant":false,"id":3384,"mutability":"mutable","name":"denominator","nameLocation":"3720:11:16","nodeType":"VariableDeclaration","scope":3420,"src":"3712:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3383,"name":"uint256","nodeType":"ElementaryTypeName","src":"3712:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3387,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3385,"name":"_feeDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"3734:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint96_$","typeString":"function () pure returns (uint96)"}},"id":3386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3734:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"3712:39:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3388,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3380,"src":"3765:12:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3389,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"3780:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3765:26:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3397,"nodeType":"IfStatement","src":"3761:173:16","trueBody":{"id":3396,"nodeType":"Block","src":"3793:141:16","statements":[{"errorCall":{"arguments":[{"id":3392,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3380,"src":"3897:12:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":3393,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"3911:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3391,"name":"ERC2981InvalidDefaultRoyalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3259,"src":"3868:28:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3868:55:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3395,"nodeType":"RevertStatement","src":"3861:62:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3398,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"3947:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3967:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3959:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3399,"name":"address","nodeType":"ElementaryTypeName","src":"3959:7:16","typeDescriptions":{}}},"id":3402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3959:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3947:22:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3412,"nodeType":"IfStatement","src":"3943:108:16","trueBody":{"id":3411,"nodeType":"Block","src":"3971:80:16","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4037:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4029:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3405,"name":"address","nodeType":"ElementaryTypeName","src":"4029:7:16","typeDescriptions":{}}},"id":3408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3404,"name":"ERC2981InvalidDefaultRoyaltyReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"3992:36:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3992:48:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3410,"nodeType":"RevertStatement","src":"3985:55:16"}]}},{"expression":{"id":3418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3413,"name":"_defaultRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"4061:19:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3415,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"4095:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3416,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3380,"src":"4105:12:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":3414,"name":"RoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3244,"src":"4083:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RoyaltyInfo_$3244_storage_ptr_$","typeString":"type(struct ERC2981.RoyaltyInfo storage pointer)"}},"id":3417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4083:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_memory_ptr","typeString":"struct ERC2981.RoyaltyInfo memory"}},"src":"4061:57:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"id":3419,"nodeType":"ExpressionStatement","src":"4061:57:16"}]},"documentation":{"id":3376,"nodeType":"StructuredDocumentation","src":"3363:250:16","text":" @dev Sets the royalty information that all ids in this contract will default to.\n Requirements:\n - `receiver` cannot be the zero address.\n - `feeNumerator` cannot be greater than the fee denominator."},"id":3421,"implemented":true,"kind":"function","modifiers":[],"name":"_setDefaultRoyalty","nameLocation":"3627:18:16","nodeType":"FunctionDefinition","parameters":{"id":3381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3378,"mutability":"mutable","name":"receiver","nameLocation":"3654:8:16","nodeType":"VariableDeclaration","scope":3421,"src":"3646:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3377,"name":"address","nodeType":"ElementaryTypeName","src":"3646:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3380,"mutability":"mutable","name":"feeNumerator","nameLocation":"3671:12:16","nodeType":"VariableDeclaration","scope":3421,"src":"3664:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3379,"name":"uint96","nodeType":"ElementaryTypeName","src":"3664:6:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"3645:39:16"},"returnParameters":{"id":3382,"nodeType":"ParameterList","parameters":[],"src":"3702:0:16"},"scope":3494,"src":"3618:507:16","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3428,"nodeType":"Block","src":"4246:43:16","statements":[{"expression":{"id":3426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4256:26:16","subExpression":{"id":3425,"name":"_defaultRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"4263:19:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3427,"nodeType":"ExpressionStatement","src":"4256:26:16"}]},"documentation":{"id":3422,"nodeType":"StructuredDocumentation","src":"4131:60:16","text":" @dev Removes default royalty information."},"id":3429,"implemented":true,"kind":"function","modifiers":[],"name":"_deleteDefaultRoyalty","nameLocation":"4205:21:16","nodeType":"FunctionDefinition","parameters":{"id":3423,"nodeType":"ParameterList","parameters":[],"src":"4226:2:16"},"returnParameters":{"id":3424,"nodeType":"ParameterList","parameters":[],"src":"4246:0:16"},"scope":3494,"src":"4196:93:16","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3480,"nodeType":"Block","src":"4658:444:16","statements":[{"assignments":[3440],"declarations":[{"constant":false,"id":3440,"mutability":"mutable","name":"denominator","nameLocation":"4676:11:16","nodeType":"VariableDeclaration","scope":3480,"src":"4668:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3439,"name":"uint256","nodeType":"ElementaryTypeName","src":"4668:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3443,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3441,"name":"_feeDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"4690:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint96_$","typeString":"function () pure returns (uint96)"}},"id":3442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4690:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"4668:39:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3444,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3436,"src":"4721:12:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3445,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3440,"src":"4736:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4721:26:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3454,"nodeType":"IfStatement","src":"4717:180:16","trueBody":{"id":3453,"nodeType":"Block","src":"4749:148:16","statements":[{"errorCall":{"arguments":[{"id":3448,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"4851:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3449,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3436,"src":"4860:12:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":3450,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3440,"src":"4874:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3447,"name":"ERC2981InvalidTokenRoyalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"4824:26:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256,uint256) pure returns (error)"}},"id":3451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4824:62:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3452,"nodeType":"RevertStatement","src":"4817:69:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3455,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"4910:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4930:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4922:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3456,"name":"address","nodeType":"ElementaryTypeName","src":"4922:7:16","typeDescriptions":{}}},"id":3459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4922:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4910:22:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3470,"nodeType":"IfStatement","src":"4906:115:16","trueBody":{"id":3469,"nodeType":"Block","src":"4934:87:16","statements":[{"errorCall":{"arguments":[{"id":3462,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"4990:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":3465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5007:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3464,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4999:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3463,"name":"address","nodeType":"ElementaryTypeName","src":"4999:7:16","typeDescriptions":{}}},"id":3466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4999:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3461,"name":"ERC2981InvalidTokenRoyaltyReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3280,"src":"4955:34:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (uint256,address) pure returns (error)"}},"id":3467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4955:55:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3468,"nodeType":"RevertStatement","src":"4948:62:16"}]}},{"expression":{"id":3478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3471,"name":"_tokenRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"5031:17:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$3244_storage_$","typeString":"mapping(uint256 => struct ERC2981.RoyaltyInfo storage ref)"}},"id":3473,"indexExpression":{"id":3472,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"5049:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5031:26:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3475,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5072:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3476,"name":"feeNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3436,"src":"5082:12:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":3474,"name":"RoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3244,"src":"5060:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RoyaltyInfo_$3244_storage_ptr_$","typeString":"type(struct ERC2981.RoyaltyInfo storage pointer)"}},"id":3477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5060:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_memory_ptr","typeString":"struct ERC2981.RoyaltyInfo memory"}},"src":"5031:64:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"id":3479,"nodeType":"ExpressionStatement","src":"5031:64:16"}]},"documentation":{"id":3430,"nodeType":"StructuredDocumentation","src":"4295:259:16","text":" @dev Sets the royalty information for a specific token id, overriding the global default.\n Requirements:\n - `receiver` cannot be the zero address.\n - `feeNumerator` cannot be greater than the fee denominator."},"id":3481,"implemented":true,"kind":"function","modifiers":[],"name":"_setTokenRoyalty","nameLocation":"4568:16:16","nodeType":"FunctionDefinition","parameters":{"id":3437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3432,"mutability":"mutable","name":"tokenId","nameLocation":"4593:7:16","nodeType":"VariableDeclaration","scope":3481,"src":"4585:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3431,"name":"uint256","nodeType":"ElementaryTypeName","src":"4585:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3434,"mutability":"mutable","name":"receiver","nameLocation":"4610:8:16","nodeType":"VariableDeclaration","scope":3481,"src":"4602:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3433,"name":"address","nodeType":"ElementaryTypeName","src":"4602:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3436,"mutability":"mutable","name":"feeNumerator","nameLocation":"4627:12:16","nodeType":"VariableDeclaration","scope":3481,"src":"4620:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3435,"name":"uint96","nodeType":"ElementaryTypeName","src":"4620:6:16","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"4584:56:16"},"returnParameters":{"id":3438,"nodeType":"ParameterList","parameters":[],"src":"4658:0:16"},"scope":3494,"src":"4559:543:16","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3492,"nodeType":"Block","src":"5270:50:16","statements":[{"expression":{"id":3490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5280:33:16","subExpression":{"baseExpression":{"id":3487,"name":"_tokenRoyaltyInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"5287:17:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_RoyaltyInfo_$3244_storage_$","typeString":"mapping(uint256 => struct ERC2981.RoyaltyInfo storage ref)"}},"id":3489,"indexExpression":{"id":3488,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3484,"src":"5305:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5287:26:16","typeDescriptions":{"typeIdentifier":"t_struct$_RoyaltyInfo_$3244_storage","typeString":"struct ERC2981.RoyaltyInfo storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3491,"nodeType":"ExpressionStatement","src":"5280:33:16"}]},"documentation":{"id":3482,"nodeType":"StructuredDocumentation","src":"5108:95:16","text":" @dev Resets royalty information for the token id back to the global default."},"id":3493,"implemented":true,"kind":"function","modifiers":[],"name":"_resetTokenRoyalty","nameLocation":"5217:18:16","nodeType":"FunctionDefinition","parameters":{"id":3485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3484,"mutability":"mutable","name":"tokenId","nameLocation":"5244:7:16","nodeType":"VariableDeclaration","scope":3493,"src":"5236:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3483,"name":"uint256","nodeType":"ElementaryTypeName","src":"5236:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5235:17:16"},"returnParameters":{"id":3486,"nodeType":"ParameterList","parameters":[],"src":"5270:0:16"},"scope":3494,"src":"5208:112:16","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3495,"src":"1106:4216:16","usedErrors":[3259,3264,3273,3280],"usedEvents":[]}],"src":"108:5215:16"},"id":16},"@openzeppelin/contracts/utils/Bytes.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Bytes.sol","exportedSymbols":{"Bytes":[4295],"Math":[7925]},"id":4296,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3496,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"99:24:17"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":3498,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4296,"sourceUnit":7926,"src":"125:37:17","symbolAliases":[{"foreign":{"id":3497,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"133:4:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Bytes","contractDependencies":[],"contractKind":"library","documentation":{"id":3499,"nodeType":"StructuredDocumentation","src":"164:33:17","text":" @dev Bytes operations."},"fullyImplemented":true,"id":4295,"linearizedBaseContracts":[4295],"name":"Bytes","nameLocation":"206:5:17","nodeType":"ContractDefinition","nodes":[{"body":{"id":3515,"nodeType":"Block","src":"687:45:17","statements":[{"expression":{"arguments":[{"id":3510,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3502,"src":"712:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3511,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"720:1:17","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"hexValue":"30","id":3512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"723:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3509,"name":"indexOf","nodeType":"Identifier","overloadedDeclarations":[3516,3565],"referencedDeclaration":3565,"src":"704:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes1_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bytes memory,bytes1,uint256) pure returns (uint256)"}},"id":3513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"704:21:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3508,"id":3514,"nodeType":"Return","src":"697:28:17"}]},"documentation":{"id":3500,"nodeType":"StructuredDocumentation","src":"218:384:17","text":" @dev Forward search for `s` in `buffer`\n * If `s` is present in the buffer, returns the index of the first instance\n * If `s` is not present in the buffer, returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]"},"id":3516,"implemented":true,"kind":"function","modifiers":[],"name":"indexOf","nameLocation":"616:7:17","nodeType":"FunctionDefinition","parameters":{"id":3505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3502,"mutability":"mutable","name":"buffer","nameLocation":"637:6:17","nodeType":"VariableDeclaration","scope":3516,"src":"624:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3501,"name":"bytes","nodeType":"ElementaryTypeName","src":"624:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3504,"mutability":"mutable","name":"s","nameLocation":"652:1:17","nodeType":"VariableDeclaration","scope":3516,"src":"645:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":3503,"name":"bytes1","nodeType":"ElementaryTypeName","src":"645:6:17","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"623:31:17"},"returnParameters":{"id":3508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3507,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3516,"src":"678:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3506,"name":"uint256","nodeType":"ElementaryTypeName","src":"678:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"677:9:17"},"scope":4295,"src":"607:125:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3564,"nodeType":"Block","src":"1286:246:17","statements":[{"assignments":[3529],"declarations":[{"constant":false,"id":3529,"mutability":"mutable","name":"length","nameLocation":"1304:6:17","nodeType":"VariableDeclaration","scope":3564,"src":"1296:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3528,"name":"uint256","nodeType":"ElementaryTypeName","src":"1296:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3532,"initialValue":{"expression":{"id":3530,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3519,"src":"1313:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1320:6:17","memberName":"length","nodeType":"MemberAccess","src":"1313:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1296:30:17"},{"body":{"id":3556,"nodeType":"Block","src":"1375:117:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":3551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":3546,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3519,"src":"1423:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3547,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"1431:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3545,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"1400:22:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":3548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1400:33:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1393:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":3543,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1393:6:17","typeDescriptions":{}}},"id":3549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1393:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3550,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"1438:1:17","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1393:46:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3555,"nodeType":"IfStatement","src":"1389:93:17","trueBody":{"id":3554,"nodeType":"Block","src":"1441:41:17","statements":[{"expression":{"id":3552,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"1466:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3527,"id":3553,"nodeType":"Return","src":"1459:8:17"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3537,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"1358:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3538,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3529,"src":"1362:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1358:10:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3557,"initializationExpression":{"assignments":[3534],"declarations":[{"constant":false,"id":3534,"mutability":"mutable","name":"i","nameLocation":"1349:1:17","nodeType":"VariableDeclaration","scope":3557,"src":"1341:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3533,"name":"uint256","nodeType":"ElementaryTypeName","src":"1341:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3536,"initialValue":{"id":3535,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"1353:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1341:15:17"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1370:3:17","subExpression":{"id":3540,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"1372:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3542,"nodeType":"ExpressionStatement","src":"1370:3:17"},"nodeType":"ForStatement","src":"1336:156:17"},{"expression":{"expression":{"arguments":[{"id":3560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1513:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3559,"name":"uint256","nodeType":"ElementaryTypeName","src":"1513:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3558,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1508:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1508:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1522:3:17","memberName":"max","nodeType":"MemberAccess","src":"1508:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3527,"id":3563,"nodeType":"Return","src":"1501:24:17"}]},"documentation":{"id":3517,"nodeType":"StructuredDocumentation","src":"738:450:17","text":" @dev Forward search for `s` in `buffer` starting at position `pos`\n * If `s` is present in the buffer (at or after `pos`), returns the index of the next instance\n * If `s` is not present in the buffer (at or after `pos`), returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]"},"id":3565,"implemented":true,"kind":"function","modifiers":[],"name":"indexOf","nameLocation":"1202:7:17","nodeType":"FunctionDefinition","parameters":{"id":3524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3519,"mutability":"mutable","name":"buffer","nameLocation":"1223:6:17","nodeType":"VariableDeclaration","scope":3565,"src":"1210:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3518,"name":"bytes","nodeType":"ElementaryTypeName","src":"1210:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3521,"mutability":"mutable","name":"s","nameLocation":"1238:1:17","nodeType":"VariableDeclaration","scope":3565,"src":"1231:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":3520,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1231:6:17","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":3523,"mutability":"mutable","name":"pos","nameLocation":"1249:3:17","nodeType":"VariableDeclaration","scope":3565,"src":"1241:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3522,"name":"uint256","nodeType":"ElementaryTypeName","src":"1241:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1209:44:17"},"returnParameters":{"id":3527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3526,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3565,"src":"1277:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3525,"name":"uint256","nodeType":"ElementaryTypeName","src":"1277:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1276:9:17"},"scope":4295,"src":"1193:339:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3585,"nodeType":"Block","src":"2019:65:17","statements":[{"expression":{"arguments":[{"id":3576,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"2048:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3577,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"2056:1:17","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"expression":{"arguments":[{"id":3580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2064:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3579,"name":"uint256","nodeType":"ElementaryTypeName","src":"2064:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3578,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2059:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2059:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2073:3:17","memberName":"max","nodeType":"MemberAccess","src":"2059:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3575,"name":"lastIndexOf","nodeType":"Identifier","overloadedDeclarations":[3586,3648],"referencedDeclaration":3648,"src":"2036:11:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes1_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bytes memory,bytes1,uint256) pure returns (uint256)"}},"id":3583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2036:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3574,"id":3584,"nodeType":"Return","src":"2029:48:17"}]},"documentation":{"id":3566,"nodeType":"StructuredDocumentation","src":"1538:392:17","text":" @dev Backward search for `s` in `buffer`\n * If `s` is present in the buffer, returns the index of the last instance\n * If `s` is not present in the buffer, returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]"},"id":3586,"implemented":true,"kind":"function","modifiers":[],"name":"lastIndexOf","nameLocation":"1944:11:17","nodeType":"FunctionDefinition","parameters":{"id":3571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3568,"mutability":"mutable","name":"buffer","nameLocation":"1969:6:17","nodeType":"VariableDeclaration","scope":3586,"src":"1956:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3567,"name":"bytes","nodeType":"ElementaryTypeName","src":"1956:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3570,"mutability":"mutable","name":"s","nameLocation":"1984:1:17","nodeType":"VariableDeclaration","scope":3586,"src":"1977:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":3569,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1977:6:17","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"1955:31:17"},"returnParameters":{"id":3574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3586,"src":"2010:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3572,"name":"uint256","nodeType":"ElementaryTypeName","src":"2010:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2009:9:17"},"scope":4295,"src":"1935:149:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3647,"nodeType":"Block","src":"2657:348:17","statements":[{"id":3646,"nodeType":"UncheckedBlock","src":"2667:332:17","statements":[{"assignments":[3599],"declarations":[{"constant":false,"id":3599,"mutability":"mutable","name":"length","nameLocation":"2699:6:17","nodeType":"VariableDeclaration","scope":3646,"src":"2691:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3598,"name":"uint256","nodeType":"ElementaryTypeName","src":"2691:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3602,"initialValue":{"expression":{"id":3600,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"2708:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2715:6:17","memberName":"length","nodeType":"MemberAccess","src":"2708:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2691:30:17"},{"body":{"id":3638,"nodeType":"Block","src":"2810:141:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":3631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":3624,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"2862:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3625,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3604,"src":"2870:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2874:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2870:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3623,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"2839:22:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":3628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2839:37:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2832:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":3621,"name":"bytes1","nodeType":"ElementaryTypeName","src":"2832:6:17","typeDescriptions":{}}},"id":3629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:45:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3630,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"2881:1:17","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2832:50:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3637,"nodeType":"IfStatement","src":"2828:109:17","trueBody":{"id":3636,"nodeType":"Block","src":"2884:53:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3632,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3604,"src":"2913:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2917:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2913:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3597,"id":3635,"nodeType":"Return","src":"2906:12:17"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3615,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3604,"src":"2798:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2802:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2798:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3639,"initializationExpression":{"assignments":[3604],"declarations":[{"constant":false,"id":3604,"mutability":"mutable","name":"i","nameLocation":"2748:1:17","nodeType":"VariableDeclaration","scope":3639,"src":"2740:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3603,"name":"uint256","nodeType":"ElementaryTypeName","src":"2740:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3614,"initialValue":{"arguments":[{"arguments":[{"id":3609,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"2780:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":3610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2785:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":3607,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"2761:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":3608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2766:13:17","memberName":"saturatingAdd","nodeType":"MemberAccess","referencedDeclaration":6480,"src":"2761:18:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2761:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3612,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3599,"src":"2789:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3605,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"2752:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":3606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2757:3:17","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"2752:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2752:44:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2740:56:17"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":3619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2805:3:17","subExpression":{"id":3618,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3604,"src":"2807:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3620,"nodeType":"ExpressionStatement","src":"2805:3:17"},"nodeType":"ForStatement","src":"2735:216:17"},{"expression":{"expression":{"arguments":[{"id":3642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2976:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3641,"name":"uint256","nodeType":"ElementaryTypeName","src":"2976:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3640,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2971:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2971:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2985:3:17","memberName":"max","nodeType":"MemberAccess","src":"2971:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3597,"id":3645,"nodeType":"Return","src":"2964:24:17"}]}]},"documentation":{"id":3587,"nodeType":"StructuredDocumentation","src":"2090:465:17","text":" @dev Backward search for `s` in `buffer` starting at position `pos`\n * If `s` is present in the buffer (at or before `pos`), returns the index of the previous instance\n * If `s` is not present in the buffer (at or before `pos`), returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]"},"id":3648,"implemented":true,"kind":"function","modifiers":[],"name":"lastIndexOf","nameLocation":"2569:11:17","nodeType":"FunctionDefinition","parameters":{"id":3594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3589,"mutability":"mutable","name":"buffer","nameLocation":"2594:6:17","nodeType":"VariableDeclaration","scope":3648,"src":"2581:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3588,"name":"bytes","nodeType":"ElementaryTypeName","src":"2581:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3591,"mutability":"mutable","name":"s","nameLocation":"2609:1:17","nodeType":"VariableDeclaration","scope":3648,"src":"2602:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":3590,"name":"bytes1","nodeType":"ElementaryTypeName","src":"2602:6:17","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":3593,"mutability":"mutable","name":"pos","nameLocation":"2620:3:17","nodeType":"VariableDeclaration","scope":3648,"src":"2612:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3592,"name":"uint256","nodeType":"ElementaryTypeName","src":"2612:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2580:44:17"},"returnParameters":{"id":3597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3596,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3648,"src":"2648:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3595,"name":"uint256","nodeType":"ElementaryTypeName","src":"2648:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2647:9:17"},"scope":4295,"src":"2560:445:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3665,"nodeType":"Block","src":"3416:59:17","statements":[{"expression":{"arguments":[{"id":3659,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3651,"src":"3439:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3660,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3653,"src":"3447:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3661,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3651,"src":"3454:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3461:6:17","memberName":"length","nodeType":"MemberAccess","src":"3454:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3658,"name":"slice","nodeType":"Identifier","overloadedDeclarations":[3666,3708],"referencedDeclaration":3708,"src":"3433:5:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"}},"id":3663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3433:35:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3657,"id":3664,"nodeType":"Return","src":"3426:42:17"}]},"documentation":{"id":3649,"nodeType":"StructuredDocumentation","src":"3011:312:17","text":" @dev Copies the content of `buffer`, from `start` (included) to the end of `buffer` into a new bytes object in\n memory.\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]"},"id":3666,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"3337:5:17","nodeType":"FunctionDefinition","parameters":{"id":3654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3651,"mutability":"mutable","name":"buffer","nameLocation":"3356:6:17","nodeType":"VariableDeclaration","scope":3666,"src":"3343:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3650,"name":"bytes","nodeType":"ElementaryTypeName","src":"3343:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3653,"mutability":"mutable","name":"start","nameLocation":"3372:5:17","nodeType":"VariableDeclaration","scope":3666,"src":"3364:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3652,"name":"uint256","nodeType":"ElementaryTypeName","src":"3364:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3342:36:17"},"returnParameters":{"id":3657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3656,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3666,"src":"3402:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3655,"name":"bytes","nodeType":"ElementaryTypeName","src":"3402:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3401:14:17"},"scope":4295,"src":"3328:147:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3707,"nodeType":"Block","src":"3959:347:17","statements":[{"expression":{"id":3685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3678,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"3989:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3681,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"4004:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3682,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3669,"src":"4009:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4016:6:17","memberName":"length","nodeType":"MemberAccess","src":"4009:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3679,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"3995:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":3680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4000:3:17","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"3995:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3995:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3989:34:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3686,"nodeType":"ExpressionStatement","src":"3989:34:17"},{"expression":{"id":3693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3687,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3671,"src":"4033:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3690,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3671,"src":"4050:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3691,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"4057:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3688,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"4041:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":3689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4046:3:17","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"4041:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4041:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4033:28:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3694,"nodeType":"ExpressionStatement","src":"4033:28:17"},{"assignments":[3696],"declarations":[{"constant":false,"id":3696,"mutability":"mutable","name":"result","nameLocation":"4114:6:17","nodeType":"VariableDeclaration","scope":3707,"src":"4101:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3695,"name":"bytes","nodeType":"ElementaryTypeName","src":"4101:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3703,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3699,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"4133:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3700,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3671,"src":"4139:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4133:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4123:9:17","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3697,"name":"bytes","nodeType":"ElementaryTypeName","src":"4127:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4123:22:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4101:44:17"},{"AST":{"nativeSrc":"4180:96:17","nodeType":"YulBlock","src":"4180:96:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"4204:6:17","nodeType":"YulIdentifier","src":"4204:6:17"},{"kind":"number","nativeSrc":"4212:4:17","nodeType":"YulLiteral","src":"4212:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4200:3:17","nodeType":"YulIdentifier","src":"4200:3:17"},"nativeSrc":"4200:17:17","nodeType":"YulFunctionCall","src":"4200:17:17"},{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"4227:6:17","nodeType":"YulIdentifier","src":"4227:6:17"},{"kind":"number","nativeSrc":"4235:4:17","nodeType":"YulLiteral","src":"4235:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4223:3:17","nodeType":"YulIdentifier","src":"4223:3:17"},"nativeSrc":"4223:17:17","nodeType":"YulFunctionCall","src":"4223:17:17"},{"name":"start","nativeSrc":"4242:5:17","nodeType":"YulIdentifier","src":"4242:5:17"}],"functionName":{"name":"add","nativeSrc":"4219:3:17","nodeType":"YulIdentifier","src":"4219:3:17"},"nativeSrc":"4219:29:17","nodeType":"YulFunctionCall","src":"4219:29:17"},{"arguments":[{"name":"end","nativeSrc":"4254:3:17","nodeType":"YulIdentifier","src":"4254:3:17"},{"name":"start","nativeSrc":"4259:5:17","nodeType":"YulIdentifier","src":"4259:5:17"}],"functionName":{"name":"sub","nativeSrc":"4250:3:17","nodeType":"YulIdentifier","src":"4250:3:17"},"nativeSrc":"4250:15:17","nodeType":"YulFunctionCall","src":"4250:15:17"}],"functionName":{"name":"mcopy","nativeSrc":"4194:5:17","nodeType":"YulIdentifier","src":"4194:5:17"},"nativeSrc":"4194:72:17","nodeType":"YulFunctionCall","src":"4194:72:17"},"nativeSrc":"4194:72:17","nodeType":"YulExpressionStatement","src":"4194:72:17"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3669,"isOffset":false,"isSlot":false,"src":"4227:6:17","valueSize":1},{"declaration":3673,"isOffset":false,"isSlot":false,"src":"4254:3:17","valueSize":1},{"declaration":3696,"isOffset":false,"isSlot":false,"src":"4204:6:17","valueSize":1},{"declaration":3671,"isOffset":false,"isSlot":false,"src":"4242:5:17","valueSize":1},{"declaration":3671,"isOffset":false,"isSlot":false,"src":"4259:5:17","valueSize":1}],"flags":["memory-safe"],"id":3704,"nodeType":"InlineAssembly","src":"4155:121:17"},{"expression":{"id":3705,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3696,"src":"4293:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3677,"id":3706,"nodeType":"Return","src":"4286:13:17"}]},"documentation":{"id":3667,"nodeType":"StructuredDocumentation","src":"3481:372:17","text":" @dev Copies the content of `buffer`, from `start` (included) to `end` (excluded) into a new bytes object in\n memory. The `end` argument is truncated to the length of the `buffer`.\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]"},"id":3708,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"3867:5:17","nodeType":"FunctionDefinition","parameters":{"id":3674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3669,"mutability":"mutable","name":"buffer","nameLocation":"3886:6:17","nodeType":"VariableDeclaration","scope":3708,"src":"3873:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3668,"name":"bytes","nodeType":"ElementaryTypeName","src":"3873:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3671,"mutability":"mutable","name":"start","nameLocation":"3902:5:17","nodeType":"VariableDeclaration","scope":3708,"src":"3894:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3670,"name":"uint256","nodeType":"ElementaryTypeName","src":"3894:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3673,"mutability":"mutable","name":"end","nameLocation":"3917:3:17","nodeType":"VariableDeclaration","scope":3708,"src":"3909:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3672,"name":"uint256","nodeType":"ElementaryTypeName","src":"3909:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3872:49:17"},"returnParameters":{"id":3677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3708,"src":"3945:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3675,"name":"bytes","nodeType":"ElementaryTypeName","src":"3945:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3944:14:17"},"scope":4295,"src":"3858:448:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3725,"nodeType":"Block","src":"4790:60:17","statements":[{"expression":{"arguments":[{"id":3719,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3711,"src":"4814:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3720,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3713,"src":"4822:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3721,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3711,"src":"4829:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4836:6:17","memberName":"length","nodeType":"MemberAccess","src":"4829:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3718,"name":"splice","nodeType":"Identifier","overloadedDeclarations":[3726,3759],"referencedDeclaration":3759,"src":"4807:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"}},"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4807:36:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3717,"id":3724,"nodeType":"Return","src":"4800:43:17"}]},"documentation":{"id":3709,"nodeType":"StructuredDocumentation","src":"4312:384:17","text":" @dev Moves the content of `buffer`, from `start` (included) to the end of `buffer` to the start of that buffer,\n and shrinks the buffer length accordingly, effectively overriding the content of buffer with buffer[start:].\n NOTE: This function modifies the provided buffer in place. If you need to preserve the original buffer, use {slice} instead"},"id":3726,"implemented":true,"kind":"function","modifiers":[],"name":"splice","nameLocation":"4710:6:17","nodeType":"FunctionDefinition","parameters":{"id":3714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3711,"mutability":"mutable","name":"buffer","nameLocation":"4730:6:17","nodeType":"VariableDeclaration","scope":3726,"src":"4717:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3710,"name":"bytes","nodeType":"ElementaryTypeName","src":"4717:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3713,"mutability":"mutable","name":"start","nameLocation":"4746:5:17","nodeType":"VariableDeclaration","scope":3726,"src":"4738:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3712,"name":"uint256","nodeType":"ElementaryTypeName","src":"4738:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4716:36:17"},"returnParameters":{"id":3717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3726,"src":"4776:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3715,"name":"bytes","nodeType":"ElementaryTypeName","src":"4776:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4775:14:17"},"scope":4295,"src":"4701:149:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3758,"nodeType":"Block","src":"5417:335:17","statements":[{"expression":{"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3738,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"5447:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3741,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"5462:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3742,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3729,"src":"5467:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5474:6:17","memberName":"length","nodeType":"MemberAccess","src":"5467:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3739,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"5453:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":3740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5458:3:17","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"5453:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5453:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5447:34:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3746,"nodeType":"ExpressionStatement","src":"5447:34:17"},{"expression":{"id":3753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3747,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"5491:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3750,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"5508:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3751,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"5515:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3748,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"5499:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":3749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5504:3:17","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"5499:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5499:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5491:28:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3754,"nodeType":"ExpressionStatement","src":"5491:28:17"},{"AST":{"nativeSrc":"5582:140:17","nodeType":"YulBlock","src":"5582:140:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"5606:6:17","nodeType":"YulIdentifier","src":"5606:6:17"},{"kind":"number","nativeSrc":"5614:4:17","nodeType":"YulLiteral","src":"5614:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5602:3:17","nodeType":"YulIdentifier","src":"5602:3:17"},"nativeSrc":"5602:17:17","nodeType":"YulFunctionCall","src":"5602:17:17"},{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"5629:6:17","nodeType":"YulIdentifier","src":"5629:6:17"},{"kind":"number","nativeSrc":"5637:4:17","nodeType":"YulLiteral","src":"5637:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5625:3:17","nodeType":"YulIdentifier","src":"5625:3:17"},"nativeSrc":"5625:17:17","nodeType":"YulFunctionCall","src":"5625:17:17"},{"name":"start","nativeSrc":"5644:5:17","nodeType":"YulIdentifier","src":"5644:5:17"}],"functionName":{"name":"add","nativeSrc":"5621:3:17","nodeType":"YulIdentifier","src":"5621:3:17"},"nativeSrc":"5621:29:17","nodeType":"YulFunctionCall","src":"5621:29:17"},{"arguments":[{"name":"end","nativeSrc":"5656:3:17","nodeType":"YulIdentifier","src":"5656:3:17"},{"name":"start","nativeSrc":"5661:5:17","nodeType":"YulIdentifier","src":"5661:5:17"}],"functionName":{"name":"sub","nativeSrc":"5652:3:17","nodeType":"YulIdentifier","src":"5652:3:17"},"nativeSrc":"5652:15:17","nodeType":"YulFunctionCall","src":"5652:15:17"}],"functionName":{"name":"mcopy","nativeSrc":"5596:5:17","nodeType":"YulIdentifier","src":"5596:5:17"},"nativeSrc":"5596:72:17","nodeType":"YulFunctionCall","src":"5596:72:17"},"nativeSrc":"5596:72:17","nodeType":"YulExpressionStatement","src":"5596:72:17"},{"expression":{"arguments":[{"name":"buffer","nativeSrc":"5688:6:17","nodeType":"YulIdentifier","src":"5688:6:17"},{"arguments":[{"name":"end","nativeSrc":"5700:3:17","nodeType":"YulIdentifier","src":"5700:3:17"},{"name":"start","nativeSrc":"5705:5:17","nodeType":"YulIdentifier","src":"5705:5:17"}],"functionName":{"name":"sub","nativeSrc":"5696:3:17","nodeType":"YulIdentifier","src":"5696:3:17"},"nativeSrc":"5696:15:17","nodeType":"YulFunctionCall","src":"5696:15:17"}],"functionName":{"name":"mstore","nativeSrc":"5681:6:17","nodeType":"YulIdentifier","src":"5681:6:17"},"nativeSrc":"5681:31:17","nodeType":"YulFunctionCall","src":"5681:31:17"},"nativeSrc":"5681:31:17","nodeType":"YulExpressionStatement","src":"5681:31:17"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3729,"isOffset":false,"isSlot":false,"src":"5606:6:17","valueSize":1},{"declaration":3729,"isOffset":false,"isSlot":false,"src":"5629:6:17","valueSize":1},{"declaration":3729,"isOffset":false,"isSlot":false,"src":"5688:6:17","valueSize":1},{"declaration":3733,"isOffset":false,"isSlot":false,"src":"5656:3:17","valueSize":1},{"declaration":3733,"isOffset":false,"isSlot":false,"src":"5700:3:17","valueSize":1},{"declaration":3731,"isOffset":false,"isSlot":false,"src":"5644:5:17","valueSize":1},{"declaration":3731,"isOffset":false,"isSlot":false,"src":"5661:5:17","valueSize":1},{"declaration":3731,"isOffset":false,"isSlot":false,"src":"5705:5:17","valueSize":1}],"flags":["memory-safe"],"id":3755,"nodeType":"InlineAssembly","src":"5557:165:17"},{"expression":{"id":3756,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3729,"src":"5739:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3737,"id":3757,"nodeType":"Return","src":"5732:13:17"}]},"documentation":{"id":3727,"nodeType":"StructuredDocumentation","src":"4856:454:17","text":" @dev Moves the content of `buffer`, from `start` (included) to `end` (excluded) to the start of that buffer,\n and shrinks the buffer length accordingly, effectively overriding the content of buffer with buffer[start:end].\n The `end` argument is truncated to the length of the `buffer`.\n NOTE: This function modifies the provided buffer in place. If you need to preserve the original buffer, use {slice} instead"},"id":3759,"implemented":true,"kind":"function","modifiers":[],"name":"splice","nameLocation":"5324:6:17","nodeType":"FunctionDefinition","parameters":{"id":3734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3729,"mutability":"mutable","name":"buffer","nameLocation":"5344:6:17","nodeType":"VariableDeclaration","scope":3759,"src":"5331:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3728,"name":"bytes","nodeType":"ElementaryTypeName","src":"5331:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3731,"mutability":"mutable","name":"start","nameLocation":"5360:5:17","nodeType":"VariableDeclaration","scope":3759,"src":"5352:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3730,"name":"uint256","nodeType":"ElementaryTypeName","src":"5352:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3733,"mutability":"mutable","name":"end","nameLocation":"5375:3:17","nodeType":"VariableDeclaration","scope":3759,"src":"5367:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3732,"name":"uint256","nodeType":"ElementaryTypeName","src":"5367:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5330:49:17"},"returnParameters":{"id":3737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3759,"src":"5403:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3735,"name":"bytes","nodeType":"ElementaryTypeName","src":"5403:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5402:14:17"},"scope":4295,"src":"5315:437:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3780,"nodeType":"Block","src":"6249:80:17","statements":[{"expression":{"arguments":[{"id":3772,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3762,"src":"6274:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3773,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3764,"src":"6282:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3774,"name":"replacement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"6287:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":3775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6300:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":3776,"name":"replacement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"6303:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6315:6:17","memberName":"length","nodeType":"MemberAccess","src":"6303:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3771,"name":"replace","nodeType":"Identifier","overloadedDeclarations":[3781,3837],"referencedDeclaration":3837,"src":"6266:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bytes memory)"}},"id":3778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6266:56:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3770,"id":3779,"nodeType":"Return","src":"6259:63:17"}]},"documentation":{"id":3760,"nodeType":"StructuredDocumentation","src":"5758:372:17","text":" @dev Replaces bytes in `buffer` starting at `pos` with all bytes from `replacement`.\n Parameters are clamped to valid ranges (i.e. `pos` is clamped to `[0, buffer.length]`).\n If `pos >= buffer.length`, no replacement occurs and the buffer is returned unchanged.\n NOTE: This function modifies the provided buffer in place."},"id":3781,"implemented":true,"kind":"function","modifiers":[],"name":"replace","nameLocation":"6144:7:17","nodeType":"FunctionDefinition","parameters":{"id":3767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3762,"mutability":"mutable","name":"buffer","nameLocation":"6165:6:17","nodeType":"VariableDeclaration","scope":3781,"src":"6152:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3761,"name":"bytes","nodeType":"ElementaryTypeName","src":"6152:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3764,"mutability":"mutable","name":"pos","nameLocation":"6181:3:17","nodeType":"VariableDeclaration","scope":3781,"src":"6173:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3763,"name":"uint256","nodeType":"ElementaryTypeName","src":"6173:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3766,"mutability":"mutable","name":"replacement","nameLocation":"6199:11:17","nodeType":"VariableDeclaration","scope":3781,"src":"6186:24:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3765,"name":"bytes","nodeType":"ElementaryTypeName","src":"6186:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6151:60:17"},"returnParameters":{"id":3770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3769,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3781,"src":"6235:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3768,"name":"bytes","nodeType":"ElementaryTypeName","src":"6235:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6234:14:17"},"scope":4295,"src":"6135:194:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3836,"nodeType":"Block","src":"7180:402:17","statements":[{"expression":{"id":3804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3797,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3786,"src":"7210:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3800,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3786,"src":"7225:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3801,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3784,"src":"7230:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7237:6:17","memberName":"length","nodeType":"MemberAccess","src":"7230:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3798,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"7216:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":3799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7221:3:17","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"7216:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7216:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7210:34:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3805,"nodeType":"ExpressionStatement","src":"7210:34:17"},{"expression":{"id":3813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3806,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3790,"src":"7254:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3809,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3790,"src":"7272:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3810,"name":"replacement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"7280:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7292:6:17","memberName":"length","nodeType":"MemberAccess","src":"7280:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3807,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"7263:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":3808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7268:3:17","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"7263:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7263:36:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7254:45:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3814,"nodeType":"ExpressionStatement","src":"7254:45:17"},{"expression":{"id":3831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3815,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3792,"src":"7309:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3818,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3792,"src":"7327:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3821,"name":"replacement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"7344:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7356:6:17","memberName":"length","nodeType":"MemberAccess","src":"7344:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3823,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3790,"src":"7365:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7344:27:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3825,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3784,"src":"7373:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7380:6:17","memberName":"length","nodeType":"MemberAccess","src":"7373:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3827,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3786,"src":"7389:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7373:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3819,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"7335:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":3820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7340:3:17","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"7335:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7335:58:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3816,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"7318:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":3817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7323:3:17","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"7318:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:76:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7309:85:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3832,"nodeType":"ExpressionStatement","src":"7309:85:17"},{"AST":{"nativeSrc":"7449:103:17","nodeType":"YulBlock","src":"7449:103:17","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"7477:6:17","nodeType":"YulIdentifier","src":"7477:6:17"},{"kind":"number","nativeSrc":"7485:4:17","nodeType":"YulLiteral","src":"7485:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7473:3:17","nodeType":"YulIdentifier","src":"7473:3:17"},"nativeSrc":"7473:17:17","nodeType":"YulFunctionCall","src":"7473:17:17"},{"name":"pos","nativeSrc":"7492:3:17","nodeType":"YulIdentifier","src":"7492:3:17"}],"functionName":{"name":"add","nativeSrc":"7469:3:17","nodeType":"YulIdentifier","src":"7469:3:17"},"nativeSrc":"7469:27:17","nodeType":"YulFunctionCall","src":"7469:27:17"},{"arguments":[{"arguments":[{"name":"replacement","nativeSrc":"7506:11:17","nodeType":"YulIdentifier","src":"7506:11:17"},{"kind":"number","nativeSrc":"7519:4:17","nodeType":"YulLiteral","src":"7519:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7502:3:17","nodeType":"YulIdentifier","src":"7502:3:17"},"nativeSrc":"7502:22:17","nodeType":"YulFunctionCall","src":"7502:22:17"},{"name":"offset","nativeSrc":"7526:6:17","nodeType":"YulIdentifier","src":"7526:6:17"}],"functionName":{"name":"add","nativeSrc":"7498:3:17","nodeType":"YulIdentifier","src":"7498:3:17"},"nativeSrc":"7498:35:17","nodeType":"YulFunctionCall","src":"7498:35:17"},{"name":"length","nativeSrc":"7535:6:17","nodeType":"YulIdentifier","src":"7535:6:17"}],"functionName":{"name":"mcopy","nativeSrc":"7463:5:17","nodeType":"YulIdentifier","src":"7463:5:17"},"nativeSrc":"7463:79:17","nodeType":"YulFunctionCall","src":"7463:79:17"},"nativeSrc":"7463:79:17","nodeType":"YulExpressionStatement","src":"7463:79:17"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3784,"isOffset":false,"isSlot":false,"src":"7477:6:17","valueSize":1},{"declaration":3792,"isOffset":false,"isSlot":false,"src":"7535:6:17","valueSize":1},{"declaration":3790,"isOffset":false,"isSlot":false,"src":"7526:6:17","valueSize":1},{"declaration":3786,"isOffset":false,"isSlot":false,"src":"7492:3:17","valueSize":1},{"declaration":3788,"isOffset":false,"isSlot":false,"src":"7506:11:17","valueSize":1}],"flags":["memory-safe"],"id":3833,"nodeType":"InlineAssembly","src":"7424:128:17"},{"expression":{"id":3834,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3784,"src":"7569:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3796,"id":3835,"nodeType":"Return","src":"7562:13:17"}]},"documentation":{"id":3782,"nodeType":"StructuredDocumentation","src":"6335:648:17","text":" @dev Replaces bytes in `buffer` starting at `pos` with bytes from `replacement` starting at `offset`.\n Copies at most `length` bytes from `replacement` to `buffer`.\n Parameters are clamped to valid ranges (i.e. `pos` is clamped to `[0, buffer.length]`, `offset` is\n clamped to `[0, replacement.length]`, and `length` is clamped to `min(length, replacement.length - offset,\n buffer.length - pos))`. If `pos >= buffer.length` or `offset >= replacement.length`, no replacement occurs\n and the buffer is returned unchanged.\n NOTE: This function modifies the provided buffer in place."},"id":3837,"implemented":true,"kind":"function","modifiers":[],"name":"replace","nameLocation":"6997:7:17","nodeType":"FunctionDefinition","parameters":{"id":3793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3784,"mutability":"mutable","name":"buffer","nameLocation":"7027:6:17","nodeType":"VariableDeclaration","scope":3837,"src":"7014:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3783,"name":"bytes","nodeType":"ElementaryTypeName","src":"7014:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3786,"mutability":"mutable","name":"pos","nameLocation":"7051:3:17","nodeType":"VariableDeclaration","scope":3837,"src":"7043:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3785,"name":"uint256","nodeType":"ElementaryTypeName","src":"7043:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3788,"mutability":"mutable","name":"replacement","nameLocation":"7077:11:17","nodeType":"VariableDeclaration","scope":3837,"src":"7064:24:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3787,"name":"bytes","nodeType":"ElementaryTypeName","src":"7064:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3790,"mutability":"mutable","name":"offset","nameLocation":"7106:6:17","nodeType":"VariableDeclaration","scope":3837,"src":"7098:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3789,"name":"uint256","nodeType":"ElementaryTypeName","src":"7098:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3792,"mutability":"mutable","name":"length","nameLocation":"7130:6:17","nodeType":"VariableDeclaration","scope":3837,"src":"7122:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3791,"name":"uint256","nodeType":"ElementaryTypeName","src":"7122:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7004:138:17"},"returnParameters":{"id":3796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3795,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3837,"src":"7166:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3794,"name":"bytes","nodeType":"ElementaryTypeName","src":"7166:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7165:14:17"},"scope":4295,"src":"6988:594:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3909,"nodeType":"Block","src":"8119:563:17","statements":[{"assignments":[3847],"declarations":[{"constant":false,"id":3847,"mutability":"mutable","name":"length","nameLocation":"8137:6:17","nodeType":"VariableDeclaration","scope":3909,"src":"8129:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3846,"name":"uint256","nodeType":"ElementaryTypeName","src":"8129:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3849,"initialValue":{"hexValue":"30","id":3848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8146:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8129:18:17"},{"body":{"id":3868,"nodeType":"Block","src":"8202:52:17","statements":[{"expression":{"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3861,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"8216:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":3862,"name":"buffers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"8226:7:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":3864,"indexExpression":{"id":3863,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"8234:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8226:10:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8237:6:17","memberName":"length","nodeType":"MemberAccess","src":"8226:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8216:27:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3867,"nodeType":"ExpressionStatement","src":"8216:27:17"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3854,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"8177:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3855,"name":"buffers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"8181:7:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8189:6:17","memberName":"length","nodeType":"MemberAccess","src":"8181:14:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8177:18:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3869,"initializationExpression":{"assignments":[3851],"declarations":[{"constant":false,"id":3851,"mutability":"mutable","name":"i","nameLocation":"8170:1:17","nodeType":"VariableDeclaration","scope":3869,"src":"8162:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3850,"name":"uint256","nodeType":"ElementaryTypeName","src":"8162:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3853,"initialValue":{"hexValue":"30","id":3852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8174:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8162:13:17"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8197:3:17","subExpression":{"id":3858,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"8199:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3860,"nodeType":"ExpressionStatement","src":"8197:3:17"},"nodeType":"ForStatement","src":"8157:97:17"},{"assignments":[3871],"declarations":[{"constant":false,"id":3871,"mutability":"mutable","name":"result","nameLocation":"8277:6:17","nodeType":"VariableDeclaration","scope":3909,"src":"8264:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3870,"name":"bytes","nodeType":"ElementaryTypeName","src":"8264:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3876,"initialValue":{"arguments":[{"id":3874,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"8296:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8286:9:17","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3872,"name":"bytes","nodeType":"ElementaryTypeName","src":"8290:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8286:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8264:39:17"},{"assignments":[3878],"declarations":[{"constant":false,"id":3878,"mutability":"mutable","name":"offset","nameLocation":"8322:6:17","nodeType":"VariableDeclaration","scope":3909,"src":"8314:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3877,"name":"uint256","nodeType":"ElementaryTypeName","src":"8314:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3880,"initialValue":{"hexValue":"30783230","id":3879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8331:4:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"nodeType":"VariableDeclarationStatement","src":"8314:21:17"},{"body":{"id":3905,"nodeType":"Block","src":"8390:262:17","statements":[{"assignments":[3893],"declarations":[{"constant":false,"id":3893,"mutability":"mutable","name":"input","nameLocation":"8417:5:17","nodeType":"VariableDeclaration","scope":3905,"src":"8404:18:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3892,"name":"bytes","nodeType":"ElementaryTypeName","src":"8404:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3897,"initialValue":{"baseExpression":{"id":3894,"name":"buffers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"8425:7:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":3896,"indexExpression":{"id":3895,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3882,"src":"8433:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8425:10:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8404:31:17"},{"AST":{"nativeSrc":"8474:90:17","nodeType":"YulBlock","src":"8474:90:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"8502:6:17","nodeType":"YulIdentifier","src":"8502:6:17"},{"name":"offset","nativeSrc":"8510:6:17","nodeType":"YulIdentifier","src":"8510:6:17"}],"functionName":{"name":"add","nativeSrc":"8498:3:17","nodeType":"YulIdentifier","src":"8498:3:17"},"nativeSrc":"8498:19:17","nodeType":"YulFunctionCall","src":"8498:19:17"},{"arguments":[{"name":"input","nativeSrc":"8523:5:17","nodeType":"YulIdentifier","src":"8523:5:17"},{"kind":"number","nativeSrc":"8530:4:17","nodeType":"YulLiteral","src":"8530:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8519:3:17","nodeType":"YulIdentifier","src":"8519:3:17"},"nativeSrc":"8519:16:17","nodeType":"YulFunctionCall","src":"8519:16:17"},{"arguments":[{"name":"input","nativeSrc":"8543:5:17","nodeType":"YulIdentifier","src":"8543:5:17"}],"functionName":{"name":"mload","nativeSrc":"8537:5:17","nodeType":"YulIdentifier","src":"8537:5:17"},"nativeSrc":"8537:12:17","nodeType":"YulFunctionCall","src":"8537:12:17"}],"functionName":{"name":"mcopy","nativeSrc":"8492:5:17","nodeType":"YulIdentifier","src":"8492:5:17"},"nativeSrc":"8492:58:17","nodeType":"YulFunctionCall","src":"8492:58:17"},"nativeSrc":"8492:58:17","nodeType":"YulExpressionStatement","src":"8492:58:17"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3893,"isOffset":false,"isSlot":false,"src":"8523:5:17","valueSize":1},{"declaration":3893,"isOffset":false,"isSlot":false,"src":"8543:5:17","valueSize":1},{"declaration":3878,"isOffset":false,"isSlot":false,"src":"8510:6:17","valueSize":1},{"declaration":3871,"isOffset":false,"isSlot":false,"src":"8502:6:17","valueSize":1}],"flags":["memory-safe"],"id":3898,"nodeType":"InlineAssembly","src":"8449:115:17"},{"id":3904,"nodeType":"UncheckedBlock","src":"8577:65:17","statements":[{"expression":{"id":3902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3899,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"8605:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":3900,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3893,"src":"8615:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8621:6:17","memberName":"length","nodeType":"MemberAccess","src":"8615:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8605:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3903,"nodeType":"ExpressionStatement","src":"8605:22:17"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3885,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3882,"src":"8365:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3886,"name":"buffers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"8369:7:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":3887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8377:6:17","memberName":"length","nodeType":"MemberAccess","src":"8369:14:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8365:18:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3906,"initializationExpression":{"assignments":[3882],"declarations":[{"constant":false,"id":3882,"mutability":"mutable","name":"i","nameLocation":"8358:1:17","nodeType":"VariableDeclaration","scope":3906,"src":"8350:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3881,"name":"uint256","nodeType":"ElementaryTypeName","src":"8350:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3884,"initialValue":{"hexValue":"30","id":3883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8362:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8350:13:17"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8385:3:17","subExpression":{"id":3889,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3882,"src":"8387:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3891,"nodeType":"ExpressionStatement","src":"8385:3:17"},"nodeType":"ForStatement","src":"8345:307:17"},{"expression":{"id":3907,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3871,"src":"8669:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3845,"id":3908,"nodeType":"Return","src":"8662:13:17"}]},"documentation":{"id":3838,"nodeType":"StructuredDocumentation","src":"7588:449:17","text":" @dev Concatenate an array of bytes into a single bytes object.\n For fixed bytes types, we recommend using the solidity built-in `bytes.concat` or (equivalent)\n `abi.encodePacked`.\n NOTE: this could be done in assembly with a single loop that expands starting at the FMP, but that would be\n significantly less readable. It might be worth benchmarking the savings of the full-assembly approach."},"id":3910,"implemented":true,"kind":"function","modifiers":[],"name":"concat","nameLocation":"8051:6:17","nodeType":"FunctionDefinition","parameters":{"id":3842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3841,"mutability":"mutable","name":"buffers","nameLocation":"8073:7:17","nodeType":"VariableDeclaration","scope":3910,"src":"8058:22:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":3839,"name":"bytes","nodeType":"ElementaryTypeName","src":"8058:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":3840,"nodeType":"ArrayTypeName","src":"8058:7:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"8057:24:17"},"returnParameters":{"id":3845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3844,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3910,"src":"8105:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3843,"name":"bytes","nodeType":"ElementaryTypeName","src":"8105:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8104:14:17"},"scope":4295,"src":"8042:640:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3919,"nodeType":"Block","src":"8920:1416:17","statements":[{"AST":{"nativeSrc":"8955:1375:17","nodeType":"YulBlock","src":"8955:1375:17","statements":[{"nativeSrc":"8969:26:17","nodeType":"YulVariableDeclaration","src":"8969:26:17","value":{"arguments":[{"name":"input","nativeSrc":"8989:5:17","nodeType":"YulIdentifier","src":"8989:5:17"}],"functionName":{"name":"mload","nativeSrc":"8983:5:17","nodeType":"YulIdentifier","src":"8983:5:17"},"nativeSrc":"8983:12:17","nodeType":"YulFunctionCall","src":"8983:12:17"},"variables":[{"name":"length","nativeSrc":"8973:6:17","nodeType":"YulTypedName","src":"8973:6:17","type":""}]},{"nativeSrc":"9008:21:17","nodeType":"YulAssignment","src":"9008:21:17","value":{"arguments":[{"kind":"number","nativeSrc":"9024:4:17","nodeType":"YulLiteral","src":"9024:4:17","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"9018:5:17","nodeType":"YulIdentifier","src":"9018:5:17"},"nativeSrc":"9018:11:17","nodeType":"YulFunctionCall","src":"9018:11:17"},"variableNames":[{"name":"output","nativeSrc":"9008:6:17","nodeType":"YulIdentifier","src":"9008:6:17"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9049:4:17","nodeType":"YulLiteral","src":"9049:4:17","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"output","nativeSrc":"9063:6:17","nodeType":"YulIdentifier","src":"9063:6:17"},{"kind":"number","nativeSrc":"9071:4:17","nodeType":"YulLiteral","src":"9071:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9059:3:17","nodeType":"YulIdentifier","src":"9059:3:17"},"nativeSrc":"9059:17:17","nodeType":"YulFunctionCall","src":"9059:17:17"},{"arguments":[{"name":"length","nativeSrc":"9082:6:17","nodeType":"YulIdentifier","src":"9082:6:17"},{"kind":"number","nativeSrc":"9090:1:17","nodeType":"YulLiteral","src":"9090:1:17","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"9078:3:17","nodeType":"YulIdentifier","src":"9078:3:17"},"nativeSrc":"9078:14:17","nodeType":"YulFunctionCall","src":"9078:14:17"}],"functionName":{"name":"add","nativeSrc":"9055:3:17","nodeType":"YulIdentifier","src":"9055:3:17"},"nativeSrc":"9055:38:17","nodeType":"YulFunctionCall","src":"9055:38:17"}],"functionName":{"name":"mstore","nativeSrc":"9042:6:17","nodeType":"YulIdentifier","src":"9042:6:17"},"nativeSrc":"9042:52:17","nodeType":"YulFunctionCall","src":"9042:52:17"},"nativeSrc":"9042:52:17","nodeType":"YulExpressionStatement","src":"9042:52:17"},{"expression":{"arguments":[{"name":"output","nativeSrc":"9114:6:17","nodeType":"YulIdentifier","src":"9114:6:17"},{"arguments":[{"name":"length","nativeSrc":"9126:6:17","nodeType":"YulIdentifier","src":"9126:6:17"},{"kind":"number","nativeSrc":"9134:1:17","nodeType":"YulLiteral","src":"9134:1:17","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"9122:3:17","nodeType":"YulIdentifier","src":"9122:3:17"},"nativeSrc":"9122:14:17","nodeType":"YulFunctionCall","src":"9122:14:17"}],"functionName":{"name":"mstore","nativeSrc":"9107:6:17","nodeType":"YulIdentifier","src":"9107:6:17"},"nativeSrc":"9107:30:17","nodeType":"YulFunctionCall","src":"9107:30:17"},"nativeSrc":"9107:30:17","nodeType":"YulExpressionStatement","src":"9107:30:17"},{"body":{"nativeSrc":"9261:1059:17","nodeType":"YulBlock","src":"9261:1059:17","statements":[{"nativeSrc":"9279:54:17","nodeType":"YulVariableDeclaration","src":"9279:54:17","value":{"arguments":[{"kind":"number","nativeSrc":"9296:3:17","nodeType":"YulLiteral","src":"9296:3:17","type":"","value":"128"},{"arguments":[{"arguments":[{"arguments":[{"name":"input","nativeSrc":"9315:5:17","nodeType":"YulIdentifier","src":"9315:5:17"},{"kind":"number","nativeSrc":"9322:4:17","nodeType":"YulLiteral","src":"9322:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9311:3:17","nodeType":"YulIdentifier","src":"9311:3:17"},"nativeSrc":"9311:16:17","nodeType":"YulFunctionCall","src":"9311:16:17"},{"name":"i","nativeSrc":"9329:1:17","nodeType":"YulIdentifier","src":"9329:1:17"}],"functionName":{"name":"add","nativeSrc":"9307:3:17","nodeType":"YulIdentifier","src":"9307:3:17"},"nativeSrc":"9307:24:17","nodeType":"YulFunctionCall","src":"9307:24:17"}],"functionName":{"name":"mload","nativeSrc":"9301:5:17","nodeType":"YulIdentifier","src":"9301:5:17"},"nativeSrc":"9301:31:17","nodeType":"YulFunctionCall","src":"9301:31:17"}],"functionName":{"name":"shr","nativeSrc":"9292:3:17","nodeType":"YulIdentifier","src":"9292:3:17"},"nativeSrc":"9292:41:17","nodeType":"YulFunctionCall","src":"9292:41:17"},"variables":[{"name":"chunk","nativeSrc":"9283:5:17","nodeType":"YulTypedName","src":"9283:5:17","type":""}]},{"nativeSrc":"9350:165:17","nodeType":"YulAssignment","src":"9350:165:17","value":{"arguments":[{"kind":"number","nativeSrc":"9384:66:17","nodeType":"YulLiteral","src":"9384:66:17","type":"","value":"0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9479:2:17","nodeType":"YulLiteral","src":"9479:2:17","type":"","value":"64"},{"name":"chunk","nativeSrc":"9483:5:17","nodeType":"YulIdentifier","src":"9483:5:17"}],"functionName":{"name":"shl","nativeSrc":"9475:3:17","nodeType":"YulIdentifier","src":"9475:3:17"},"nativeSrc":"9475:14:17","nodeType":"YulFunctionCall","src":"9475:14:17"},{"name":"chunk","nativeSrc":"9491:5:17","nodeType":"YulIdentifier","src":"9491:5:17"}],"functionName":{"name":"or","nativeSrc":"9472:2:17","nodeType":"YulIdentifier","src":"9472:2:17"},"nativeSrc":"9472:25:17","nodeType":"YulFunctionCall","src":"9472:25:17"}],"functionName":{"name":"and","nativeSrc":"9359:3:17","nodeType":"YulIdentifier","src":"9359:3:17"},"nativeSrc":"9359:156:17","nodeType":"YulFunctionCall","src":"9359:156:17"},"variableNames":[{"name":"chunk","nativeSrc":"9350:5:17","nodeType":"YulIdentifier","src":"9350:5:17"}]},{"nativeSrc":"9532:165:17","nodeType":"YulAssignment","src":"9532:165:17","value":{"arguments":[{"kind":"number","nativeSrc":"9566:66:17","nodeType":"YulLiteral","src":"9566:66:17","type":"","value":"0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9661:2:17","nodeType":"YulLiteral","src":"9661:2:17","type":"","value":"32"},{"name":"chunk","nativeSrc":"9665:5:17","nodeType":"YulIdentifier","src":"9665:5:17"}],"functionName":{"name":"shl","nativeSrc":"9657:3:17","nodeType":"YulIdentifier","src":"9657:3:17"},"nativeSrc":"9657:14:17","nodeType":"YulFunctionCall","src":"9657:14:17"},{"name":"chunk","nativeSrc":"9673:5:17","nodeType":"YulIdentifier","src":"9673:5:17"}],"functionName":{"name":"or","nativeSrc":"9654:2:17","nodeType":"YulIdentifier","src":"9654:2:17"},"nativeSrc":"9654:25:17","nodeType":"YulFunctionCall","src":"9654:25:17"}],"functionName":{"name":"and","nativeSrc":"9541:3:17","nodeType":"YulIdentifier","src":"9541:3:17"},"nativeSrc":"9541:156:17","nodeType":"YulFunctionCall","src":"9541:156:17"},"variableNames":[{"name":"chunk","nativeSrc":"9532:5:17","nodeType":"YulIdentifier","src":"9532:5:17"}]},{"nativeSrc":"9714:165:17","nodeType":"YulAssignment","src":"9714:165:17","value":{"arguments":[{"kind":"number","nativeSrc":"9748:66:17","nodeType":"YulLiteral","src":"9748:66:17","type":"","value":"0x0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9843:2:17","nodeType":"YulLiteral","src":"9843:2:17","type":"","value":"16"},{"name":"chunk","nativeSrc":"9847:5:17","nodeType":"YulIdentifier","src":"9847:5:17"}],"functionName":{"name":"shl","nativeSrc":"9839:3:17","nodeType":"YulIdentifier","src":"9839:3:17"},"nativeSrc":"9839:14:17","nodeType":"YulFunctionCall","src":"9839:14:17"},{"name":"chunk","nativeSrc":"9855:5:17","nodeType":"YulIdentifier","src":"9855:5:17"}],"functionName":{"name":"or","nativeSrc":"9836:2:17","nodeType":"YulIdentifier","src":"9836:2:17"},"nativeSrc":"9836:25:17","nodeType":"YulFunctionCall","src":"9836:25:17"}],"functionName":{"name":"and","nativeSrc":"9723:3:17","nodeType":"YulIdentifier","src":"9723:3:17"},"nativeSrc":"9723:156:17","nodeType":"YulFunctionCall","src":"9723:156:17"},"variableNames":[{"name":"chunk","nativeSrc":"9714:5:17","nodeType":"YulIdentifier","src":"9714:5:17"}]},{"nativeSrc":"9896:164:17","nodeType":"YulAssignment","src":"9896:164:17","value":{"arguments":[{"kind":"number","nativeSrc":"9930:66:17","nodeType":"YulLiteral","src":"9930:66:17","type":"","value":"0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10025:1:17","nodeType":"YulLiteral","src":"10025:1:17","type":"","value":"8"},{"name":"chunk","nativeSrc":"10028:5:17","nodeType":"YulIdentifier","src":"10028:5:17"}],"functionName":{"name":"shl","nativeSrc":"10021:3:17","nodeType":"YulIdentifier","src":"10021:3:17"},"nativeSrc":"10021:13:17","nodeType":"YulFunctionCall","src":"10021:13:17"},{"name":"chunk","nativeSrc":"10036:5:17","nodeType":"YulIdentifier","src":"10036:5:17"}],"functionName":{"name":"or","nativeSrc":"10018:2:17","nodeType":"YulIdentifier","src":"10018:2:17"},"nativeSrc":"10018:24:17","nodeType":"YulFunctionCall","src":"10018:24:17"}],"functionName":{"name":"and","nativeSrc":"9905:3:17","nodeType":"YulIdentifier","src":"9905:3:17"},"nativeSrc":"9905:155:17","nodeType":"YulFunctionCall","src":"9905:155:17"},"variableNames":[{"name":"chunk","nativeSrc":"9896:5:17","nodeType":"YulIdentifier","src":"9896:5:17"}]},{"nativeSrc":"10077:164:17","nodeType":"YulAssignment","src":"10077:164:17","value":{"arguments":[{"kind":"number","nativeSrc":"10111:66:17","nodeType":"YulLiteral","src":"10111:66:17","type":"","value":"0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10206:1:17","nodeType":"YulLiteral","src":"10206:1:17","type":"","value":"4"},{"name":"chunk","nativeSrc":"10209:5:17","nodeType":"YulIdentifier","src":"10209:5:17"}],"functionName":{"name":"shl","nativeSrc":"10202:3:17","nodeType":"YulIdentifier","src":"10202:3:17"},"nativeSrc":"10202:13:17","nodeType":"YulFunctionCall","src":"10202:13:17"},{"name":"chunk","nativeSrc":"10217:5:17","nodeType":"YulIdentifier","src":"10217:5:17"}],"functionName":{"name":"or","nativeSrc":"10199:2:17","nodeType":"YulIdentifier","src":"10199:2:17"},"nativeSrc":"10199:24:17","nodeType":"YulFunctionCall","src":"10199:24:17"}],"functionName":{"name":"and","nativeSrc":"10086:3:17","nodeType":"YulIdentifier","src":"10086:3:17"},"nativeSrc":"10086:155:17","nodeType":"YulFunctionCall","src":"10086:155:17"},"variableNames":[{"name":"chunk","nativeSrc":"10077:5:17","nodeType":"YulIdentifier","src":"10077:5:17"}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"output","nativeSrc":"10273:6:17","nodeType":"YulIdentifier","src":"10273:6:17"},{"kind":"number","nativeSrc":"10281:4:17","nodeType":"YulLiteral","src":"10281:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10269:3:17","nodeType":"YulIdentifier","src":"10269:3:17"},"nativeSrc":"10269:17:17","nodeType":"YulFunctionCall","src":"10269:17:17"},{"arguments":[{"name":"i","nativeSrc":"10292:1:17","nodeType":"YulIdentifier","src":"10292:1:17"},{"kind":"number","nativeSrc":"10295:1:17","nodeType":"YulLiteral","src":"10295:1:17","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"10288:3:17","nodeType":"YulIdentifier","src":"10288:3:17"},"nativeSrc":"10288:9:17","nodeType":"YulFunctionCall","src":"10288:9:17"}],"functionName":{"name":"add","nativeSrc":"10265:3:17","nodeType":"YulIdentifier","src":"10265:3:17"},"nativeSrc":"10265:33:17","nodeType":"YulFunctionCall","src":"10265:33:17"},{"name":"chunk","nativeSrc":"10300:5:17","nodeType":"YulIdentifier","src":"10300:5:17"}],"functionName":{"name":"mstore","nativeSrc":"10258:6:17","nodeType":"YulIdentifier","src":"10258:6:17"},"nativeSrc":"10258:48:17","nodeType":"YulFunctionCall","src":"10258:48:17"},"nativeSrc":"10258:48:17","nodeType":"YulExpressionStatement","src":"10258:48:17"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"9200:1:17","nodeType":"YulIdentifier","src":"9200:1:17"},{"name":"length","nativeSrc":"9203:6:17","nodeType":"YulIdentifier","src":"9203:6:17"}],"functionName":{"name":"lt","nativeSrc":"9197:2:17","nodeType":"YulIdentifier","src":"9197:2:17"},"nativeSrc":"9197:13:17","nodeType":"YulFunctionCall","src":"9197:13:17"},"nativeSrc":"9150:1170:17","nodeType":"YulForLoop","post":{"nativeSrc":"9211:49:17","nodeType":"YulBlock","src":"9211:49:17","statements":[{"nativeSrc":"9229:17:17","nodeType":"YulAssignment","src":"9229:17:17","value":{"arguments":[{"name":"i","nativeSrc":"9238:1:17","nodeType":"YulIdentifier","src":"9238:1:17"},{"kind":"number","nativeSrc":"9241:4:17","nodeType":"YulLiteral","src":"9241:4:17","type":"","value":"0x10"}],"functionName":{"name":"add","nativeSrc":"9234:3:17","nodeType":"YulIdentifier","src":"9234:3:17"},"nativeSrc":"9234:12:17","nodeType":"YulFunctionCall","src":"9234:12:17"},"variableNames":[{"name":"i","nativeSrc":"9229:1:17","nodeType":"YulIdentifier","src":"9229:1:17"}]}]},"pre":{"nativeSrc":"9154:42:17","nodeType":"YulBlock","src":"9154:42:17","statements":[{"nativeSrc":"9172:10:17","nodeType":"YulVariableDeclaration","src":"9172:10:17","value":{"kind":"number","nativeSrc":"9181:1:17","nodeType":"YulLiteral","src":"9181:1:17","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"9176:1:17","nodeType":"YulTypedName","src":"9176:1:17","type":""}]}]},"src":"9150:1170:17"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3913,"isOffset":false,"isSlot":false,"src":"8989:5:17","valueSize":1},{"declaration":3913,"isOffset":false,"isSlot":false,"src":"9315:5:17","valueSize":1},{"declaration":3916,"isOffset":false,"isSlot":false,"src":"10273:6:17","valueSize":1},{"declaration":3916,"isOffset":false,"isSlot":false,"src":"9008:6:17","valueSize":1},{"declaration":3916,"isOffset":false,"isSlot":false,"src":"9063:6:17","valueSize":1},{"declaration":3916,"isOffset":false,"isSlot":false,"src":"9114:6:17","valueSize":1}],"flags":["memory-safe"],"id":3918,"nodeType":"InlineAssembly","src":"8930:1400:17"}]},"documentation":{"id":3911,"nodeType":"StructuredDocumentation","src":"8688:144:17","text":" @dev Split each byte in `input` into two nibbles (4 bits each)\n Example: hex\"01234567\" → hex\"0001020304050607\""},"id":3920,"implemented":true,"kind":"function","modifiers":[],"name":"toNibbles","nameLocation":"8846:9:17","nodeType":"FunctionDefinition","parameters":{"id":3914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3913,"mutability":"mutable","name":"input","nameLocation":"8869:5:17","nodeType":"VariableDeclaration","scope":3920,"src":"8856:18:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3912,"name":"bytes","nodeType":"ElementaryTypeName","src":"8856:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8855:20:17"},"returnParameters":{"id":3917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3916,"mutability":"mutable","name":"output","nameLocation":"8912:6:17","nodeType":"VariableDeclaration","scope":3920,"src":"8899:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3915,"name":"bytes","nodeType":"ElementaryTypeName","src":"8899:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8898:21:17"},"scope":4295,"src":"8837:1499:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3944,"nodeType":"Block","src":"10494:76:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3930,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3923,"src":"10511:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10513:6:17","memberName":"length","nodeType":"MemberAccess","src":"10511:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3932,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"10523:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10525:6:17","memberName":"length","nodeType":"MemberAccess","src":"10523:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10511:20:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3936,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3923,"src":"10545:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3935,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"10535:9:17","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10535:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3939,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"10561:1:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3938,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"10551:9:17","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10551:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10535:28:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10511:52:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3929,"id":3943,"nodeType":"Return","src":"10504:59:17"}]},"documentation":{"id":3921,"nodeType":"StructuredDocumentation","src":"10342:71:17","text":" @dev Returns true if the two byte buffers are equal."},"id":3945,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"10427:5:17","nodeType":"FunctionDefinition","parameters":{"id":3926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3923,"mutability":"mutable","name":"a","nameLocation":"10446:1:17","nodeType":"VariableDeclaration","scope":3945,"src":"10433:14:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3922,"name":"bytes","nodeType":"ElementaryTypeName","src":"10433:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3925,"mutability":"mutable","name":"b","nameLocation":"10462:1:17","nodeType":"VariableDeclaration","scope":3945,"src":"10449:14:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3924,"name":"bytes","nodeType":"ElementaryTypeName","src":"10449:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10432:32:17"},"returnParameters":{"id":3929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3945,"src":"10488:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3927,"name":"bool","nodeType":"ElementaryTypeName","src":"10488:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10487:6:17"},"scope":4295,"src":"10418:152:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4035,"nodeType":"Block","src":"10874:1024:17","statements":[{"expression":{"id":3969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3953,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"10884:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3954,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"10920:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10929:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10920:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3957,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10919:12:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646","id":3958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10934:66:17","typeDescriptions":{"typeIdentifier":"t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1","typeString":"int_const 4505...(67 digits omitted)...9455"},"value":"0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"},"src":"10919:81:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3960,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10918:83:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3961,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11018:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646","id":3962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11026:66:17","typeDescriptions":{"typeIdentifier":"t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1","typeString":"int_const 4505...(67 digits omitted)...9455"},"value":"0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"},"src":"11018:74:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3964,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11017:76:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":3965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11097:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11017:81:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3967,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11016:83:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10918:181:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10884:215:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3970,"nodeType":"ExpressionStatement","src":"10884:215:17"},{"expression":{"id":3987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3971,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11109:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3972,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11157:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11166:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11157:11:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3975,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11156:13:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646","id":3976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11172:66:17","typeDescriptions":{"typeIdentifier":"t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1","typeString":"int_const 1766...(65 digits omitted)...4255"},"value":"0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"},"src":"11156:82:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3978,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11155:84:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3979,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11256:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646","id":3980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11264:66:17","typeDescriptions":{"typeIdentifier":"t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1","typeString":"int_const 1766...(65 digits omitted)...4255"},"value":"0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"},"src":"11256:74:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3982,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11255:76:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":3983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11335:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11255:82:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3985,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11254:84:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11155:183:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11109:229:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3988,"nodeType":"ExpressionStatement","src":"11109:229:17"},{"expression":{"id":4005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3989,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11348:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3990,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11396:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11405:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11396:11:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3993,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11395:13:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646","id":3994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11411:66:17","typeDescriptions":{"typeIdentifier":"t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1","typeString":"int_const 2695...(60 digits omitted)...3855"},"value":"0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"},"src":"11395:82:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3996,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11394:84:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3997,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11495:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646","id":3998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11503:66:17","typeDescriptions":{"typeIdentifier":"t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1","typeString":"int_const 2695...(60 digits omitted)...3855"},"value":"0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"},"src":"11495:74:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4000,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11494:76:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":4001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11574:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11494:82:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4003,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11493:84:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11394:183:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11348:229:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4006,"nodeType":"ExpressionStatement","src":"11348:229:17"},{"expression":{"id":4023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4007,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11587:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4008,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11635:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":4009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11644:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11635:11:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4011,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11634:13:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646","id":4012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11650:66:17","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763495507056286727952657427581105975853055_by_1","typeString":"int_const 6277...(50 digits omitted)...3055"},"value":"0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"},"src":"11634:82:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4014,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11633:84:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4015,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11734:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646","id":4016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11742:66:17","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763495507056286727952657427581105975853055_by_1","typeString":"int_const 6277...(50 digits omitted)...3055"},"value":"0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"},"src":"11734:74:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4018,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11733:76:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":4019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11813:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11733:82:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4021,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11732:84:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11633:183:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11587:229:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4024,"nodeType":"ExpressionStatement","src":"11587:229:17"},{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4025,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11834:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":4026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11843:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11834:12:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4028,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11833:14:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4029,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"11851:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":4030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11860:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11851:12:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4032,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11850:14:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11833:31:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3952,"id":4034,"nodeType":"Return","src":"11826:38:17"}]},"documentation":{"id":3946,"nodeType":"StructuredDocumentation","src":"10576:222:17","text":" @dev Reverses the byte order of a bytes32 value, converting between little-endian and big-endian.\n Inspired by https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel[Reverse Parallel]"},"id":4036,"implemented":true,"kind":"function","modifiers":[],"name":"reverseBytes32","nameLocation":"10812:14:17","nodeType":"FunctionDefinition","parameters":{"id":3949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3948,"mutability":"mutable","name":"value","nameLocation":"10835:5:17","nodeType":"VariableDeclaration","scope":4036,"src":"10827:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3947,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10827:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10826:15:17"},"returnParameters":{"id":3952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3951,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4036,"src":"10865:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3950,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10865:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10864:9:17"},"scope":4295,"src":"10803:1095:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4108,"nodeType":"Block","src":"12047:590:17","statements":[{"expression":{"id":4060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4044,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12057:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4045,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12093:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646303046463030464630304646303046463030464630304646303046463030","id":4046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12101:34:17","typeDescriptions":{"typeIdentifier":"t_rational_338958311018522360492699998064329424640_by_1","typeString":"int_const 3389...(31 digits omitted)...4640"},"value":"0xFF00FF00FF00FF00FF00FF00FF00FF00"},"src":"12093:42:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4048,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12092:44:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":4049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12140:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12092:49:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4051,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12091:51:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12159:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783030464630304646303046463030464630304646303046463030464630304646","id":4053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12167:34:17","typeDescriptions":{"typeIdentifier":"t_rational_1324055902416102970674609367438786815_by_1","typeString":"int_const 1324...(29 digits omitted)...6815"},"value":"0x00FF00FF00FF00FF00FF00FF00FF00FF"},"src":"12159:42:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4055,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12158:44:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":4056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12206:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12158:49:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12157:51:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12091:117:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12057:151:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":4061,"nodeType":"ExpressionStatement","src":"12057:151:17"},{"expression":{"id":4078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4062,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12218:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4063,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12266:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646464630303030464646463030303046464646303030304646464630303030","id":4064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12274:34:17","typeDescriptions":{"typeIdentifier":"t_rational_340277174703306882242637262502835978240_by_1","typeString":"int_const 3402...(31 digits omitted)...8240"},"value":"0xFFFF0000FFFF0000FFFF0000FFFF0000"},"src":"12266:42:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4066,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12265:44:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":4067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12313:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12265:50:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4069,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12264:52:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4070,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12333:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783030303046464646303030304646464630303030464646463030303046464646","id":4071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12341:34:17","typeDescriptions":{"typeIdentifier":"t_rational_5192217631581220737344928932233215_by_1","typeString":"int_const 5192...(26 digits omitted)...3215"},"value":"0x0000FFFF0000FFFF0000FFFF0000FFFF"},"src":"12333:42:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4073,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12332:44:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":4074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12380:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12332:50:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4076,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12331:52:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12264:119:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12218:165:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":4079,"nodeType":"ExpressionStatement","src":"12218:165:17"},{"expression":{"id":4096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4080,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12393:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12441:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646464646464646303030303030303046464646464646463030303030303030","id":4082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12449:34:17","typeDescriptions":{"typeIdentifier":"t_rational_340282366841710300967557013907638845440_by_1","typeString":"int_const 3402...(31 digits omitted)...5440"},"value":"0xFFFFFFFF00000000FFFFFFFF00000000"},"src":"12441:42:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4084,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12440:44:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":4085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12440:50:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4087,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12439:52:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4088,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12508:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783030303030303030464646464646464630303030303030304646464646464646","id":4089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12516:34:17","typeDescriptions":{"typeIdentifier":"t_rational_79228162495817593524129366015_by_1","typeString":"int_const 79228162495817593524129366015"},"value":"0x00000000FFFFFFFF00000000FFFFFFFF"},"src":"12508:42:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12507:44:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":4092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12555:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12507:50:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4094,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12506:52:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12439:119:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12393:165:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":4097,"nodeType":"ExpressionStatement","src":"12393:165:17"},{"expression":{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12576:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":4099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12585:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12576:11:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4101,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12575:13:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"id":4104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4102,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"12592:5:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":4103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12601:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12592:11:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"id":4105,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12591:13:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"src":"12575:29:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"functionReturnParameters":4043,"id":4107,"nodeType":"Return","src":"12568:36:17"}]},"documentation":{"id":4037,"nodeType":"StructuredDocumentation","src":"11904:67:17","text":"@dev Same as {reverseBytes32} but optimized for 128-bit values."},"id":4109,"implemented":true,"kind":"function","modifiers":[],"name":"reverseBytes16","nameLocation":"11985:14:17","nodeType":"FunctionDefinition","parameters":{"id":4040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4039,"mutability":"mutable","name":"value","nameLocation":"12008:5:17","nodeType":"VariableDeclaration","scope":4109,"src":"12000:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":4038,"name":"bytes16","nodeType":"ElementaryTypeName","src":"12000:7:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"visibility":"internal"}],"src":"11999:15:17"},"returnParameters":{"id":4043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4042,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4109,"src":"12038:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":4041,"name":"bytes16","nodeType":"ElementaryTypeName","src":"12038:7:17","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"visibility":"internal"}],"src":"12037:9:17"},"scope":4295,"src":"11976:661:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4163,"nodeType":"Block","src":"12782:303:17","statements":[{"expression":{"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4117,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"12792:5:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4118,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"12802:5:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307846463030464630304646303046463030","id":4119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12810:18:17","typeDescriptions":{"typeIdentifier":"t_rational_18374966859414961920_by_1","typeString":"int_const 18374966859414961920"},"value":"0xFF00FF00FF00FF00"},"src":"12802:26:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":4121,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12801:28:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":4122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12833:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12801:33:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":4124,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12800:35:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"12840:5:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830304646303046463030464630304646","id":4126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12848:18:17","typeDescriptions":{"typeIdentifier":"t_rational_71777214294589695_by_1","typeString":"int_const 71777214294589695"},"value":"0x00FF00FF00FF00FF"},"src":"12840:26:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":4128,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12839:28:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":4129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12871:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12839:33:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":4131,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12838:35:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"src":"12800:73:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"src":"12792:81:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"id":4134,"nodeType":"ExpressionStatement","src":"12792:81:17"},{"expression":{"id":4151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4135,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"12897:5:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4136,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"12907:5:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307846464646303030304646464630303030","id":4137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12915:18:17","typeDescriptions":{"typeIdentifier":"t_rational_18446462603027742720_by_1","typeString":"int_const 18446462603027742720"},"value":"0xFFFF0000FFFF0000"},"src":"12907:26:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":4139,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12906:28:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":4140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12938:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12906:34:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":4142,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12905:36:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4143,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"12946:5:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030464646463030303046464646","id":4144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12954:18:17","typeDescriptions":{"typeIdentifier":"t_rational_281470681808895_by_1","typeString":"int_const 281470681808895"},"value":"0x0000FFFF0000FFFF"},"src":"12946:26:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":4146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12945:28:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":4147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12977:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12945:34:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":4149,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12944:36:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"src":"12905:75:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"src":"12897:83:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"id":4152,"nodeType":"ExpressionStatement","src":"12897:83:17"},{"expression":{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4153,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"13024:5:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":4154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13033:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"13024:11:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":4156,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13023:13:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"id":4159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4157,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"13040:5:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":4158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13049:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"13040:11:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"id":4160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13039:13:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"src":"13023:29:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"functionReturnParameters":4116,"id":4162,"nodeType":"Return","src":"13016:36:17"}]},"documentation":{"id":4110,"nodeType":"StructuredDocumentation","src":"12643:66:17","text":"@dev Same as {reverseBytes32} but optimized for 64-bit values."},"id":4164,"implemented":true,"kind":"function","modifiers":[],"name":"reverseBytes8","nameLocation":"12723:13:17","nodeType":"FunctionDefinition","parameters":{"id":4113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4112,"mutability":"mutable","name":"value","nameLocation":"12744:5:17","nodeType":"VariableDeclaration","scope":4164,"src":"12737:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":4111,"name":"bytes8","nodeType":"ElementaryTypeName","src":"12737:6:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"}],"src":"12736:14:17"},"returnParameters":{"id":4116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4164,"src":"12774:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":4114,"name":"bytes8","nodeType":"ElementaryTypeName","src":"12774:6:17","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"}],"src":"12773:8:17"},"scope":4295,"src":"12714:371:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4200,"nodeType":"Block","src":"13230:168:17","statements":[{"expression":{"id":4188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4172,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4167,"src":"13240:5:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4173,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4167,"src":"13250:5:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646303046463030","id":4174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13258:10:17","typeDescriptions":{"typeIdentifier":"t_rational_4278255360_by_1","typeString":"int_const 4278255360"},"value":"0xFF00FF00"},"src":"13250:18:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":4176,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13249:20:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":4177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13273:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13249:25:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":4179,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13248:27:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4167,"src":"13280:5:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783030464630304646","id":4181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13288:10:17","typeDescriptions":{"typeIdentifier":"t_rational_16711935_by_1","typeString":"int_const 16711935"},"value":"0x00FF00FF"},"src":"13280:18:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":4183,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13279:20:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":4184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13303:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13279:25:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":4186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13278:27:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"13248:57:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"13240:65:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":4189,"nodeType":"ExpressionStatement","src":"13240:65:17"},{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4167,"src":"13337:5:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":4191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13346:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13337:11:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":4193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13336:13:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4194,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4167,"src":"13353:5:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":4195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13362:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13353:11:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":4197,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13352:13:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"13336:29:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":4171,"id":4199,"nodeType":"Return","src":"13329:36:17"}]},"documentation":{"id":4165,"nodeType":"StructuredDocumentation","src":"13091:66:17","text":"@dev Same as {reverseBytes32} but optimized for 32-bit values."},"id":4201,"implemented":true,"kind":"function","modifiers":[],"name":"reverseBytes4","nameLocation":"13171:13:17","nodeType":"FunctionDefinition","parameters":{"id":4168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4167,"mutability":"mutable","name":"value","nameLocation":"13192:5:17","nodeType":"VariableDeclaration","scope":4201,"src":"13185:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4166,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13185:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"13184:14:17"},"returnParameters":{"id":4171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4170,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4201,"src":"13222:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4169,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13222:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"13221:8:17"},"scope":4295,"src":"13162:236:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4219,"nodeType":"Block","src":"13543:51:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":4217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":4211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4209,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4204,"src":"13561:5:17","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":4210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13570:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13561:10:17","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}}],"id":4212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13560:12:17","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":4215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4213,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4204,"src":"13576:5:17","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":4214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13585:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13576:10:17","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}}],"id":4216,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13575:12:17","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"13560:27:17","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"functionReturnParameters":4208,"id":4218,"nodeType":"Return","src":"13553:34:17"}]},"documentation":{"id":4202,"nodeType":"StructuredDocumentation","src":"13404:66:17","text":"@dev Same as {reverseBytes32} but optimized for 16-bit values."},"id":4220,"implemented":true,"kind":"function","modifiers":[],"name":"reverseBytes2","nameLocation":"13484:13:17","nodeType":"FunctionDefinition","parameters":{"id":4205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4204,"mutability":"mutable","name":"value","nameLocation":"13505:5:17","nodeType":"VariableDeclaration","scope":4220,"src":"13498:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"typeName":{"id":4203,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13498:6:17","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"visibility":"internal"}],"src":"13497:14:17"},"returnParameters":{"id":4208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4207,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4220,"src":"13535:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"typeName":{"id":4206,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13535:6:17","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"visibility":"internal"}],"src":"13534:8:17"},"scope":4295,"src":"13475:119:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4281,"nodeType":"Block","src":"13811:313:17","statements":[{"body":{"id":4274,"nodeType":"Block","src":"13871:213:17","statements":[{"assignments":[4241],"declarations":[{"constant":false,"id":4241,"mutability":"mutable","name":"chunk","nameLocation":"13893:5:17","nodeType":"VariableDeclaration","scope":4274,"src":"13885:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4240,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13885:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4246,"initialValue":{"arguments":[{"id":4243,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"13924:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4244,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"13932:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4242,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"13901:22:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":4245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13901:33:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13885:49:17"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4247,"name":"chunk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"13952:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13969:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13961:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4248,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13961:7:17","typeDescriptions":{}}},"id":4251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13961:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13952:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4273,"nodeType":"IfStatement","src":"13948:126:17","trueBody":{"id":4272,"nodeType":"Block","src":"13973:101:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":4255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14007:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4256,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"14011:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14007:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"arguments":[{"id":4262,"name":"chunk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"14032:5:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14024:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4260,"name":"uint256","nodeType":"ElementaryTypeName","src":"14024:7:17","typeDescriptions":{}}},"id":4263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14024:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4258,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"14015:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":4259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14020:3:17","memberName":"clz","nodeType":"MemberAccess","referencedDeclaration":7924,"src":"14015:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14015:24:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14007:32:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":4266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14041:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":4267,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"14045:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14052:6:17","memberName":"length","nodeType":"MemberAccess","src":"14045:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14041:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4253,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"13998:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":4254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14003:3:17","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":6595,"src":"13998:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13998:61:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4227,"id":4271,"nodeType":"Return","src":"13991:68:17"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4232,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"13841:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4233,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"13845:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13852:6:17","memberName":"length","nodeType":"MemberAccess","src":"13845:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13841:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4275,"initializationExpression":{"assignments":[4229],"declarations":[{"constant":false,"id":4229,"mutability":"mutable","name":"i","nameLocation":"13834:1:17","nodeType":"VariableDeclaration","scope":4275,"src":"13826:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4228,"name":"uint256","nodeType":"ElementaryTypeName","src":"13826:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4231,"initialValue":{"hexValue":"30","id":4230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13838:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13826:13:17"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":4238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4236,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"13860:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"30783230","id":4237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13865:4:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"13860:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4239,"nodeType":"ExpressionStatement","src":"13860:9:17"},"nodeType":"ForStatement","src":"13821:263:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":4276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14100:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":4277,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"14104:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14111:6:17","memberName":"length","nodeType":"MemberAccess","src":"14104:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14100:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4227,"id":4280,"nodeType":"Return","src":"14093:24:17"}]},"documentation":{"id":4221,"nodeType":"StructuredDocumentation","src":"13600:140:17","text":" @dev Counts the number of leading zero bits a bytes array. Returns `8 * buffer.length`\n if the buffer is all zeros."},"id":4282,"implemented":true,"kind":"function","modifiers":[],"name":"clz","nameLocation":"13754:3:17","nodeType":"FunctionDefinition","parameters":{"id":4224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4223,"mutability":"mutable","name":"buffer","nameLocation":"13771:6:17","nodeType":"VariableDeclaration","scope":4282,"src":"13758:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4222,"name":"bytes","nodeType":"ElementaryTypeName","src":"13758:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13757:21:17"},"returnParameters":{"id":4227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4282,"src":"13802:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4225,"name":"uint256","nodeType":"ElementaryTypeName","src":"13802:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13801:9:17"},"scope":4295,"src":"13745:379:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4293,"nodeType":"Block","src":"14509:225:17","statements":[{"AST":{"nativeSrc":"14658:70:17","nodeType":"YulBlock","src":"14658:70:17","statements":[{"nativeSrc":"14672:46:17","nodeType":"YulAssignment","src":"14672:46:17","value":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"14695:6:17","nodeType":"YulIdentifier","src":"14695:6:17"},{"kind":"number","nativeSrc":"14703:4:17","nodeType":"YulLiteral","src":"14703:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14691:3:17","nodeType":"YulIdentifier","src":"14691:3:17"},"nativeSrc":"14691:17:17","nodeType":"YulFunctionCall","src":"14691:17:17"},{"name":"offset","nativeSrc":"14710:6:17","nodeType":"YulIdentifier","src":"14710:6:17"}],"functionName":{"name":"add","nativeSrc":"14687:3:17","nodeType":"YulIdentifier","src":"14687:3:17"},"nativeSrc":"14687:30:17","nodeType":"YulFunctionCall","src":"14687:30:17"}],"functionName":{"name":"mload","nativeSrc":"14681:5:17","nodeType":"YulIdentifier","src":"14681:5:17"},"nativeSrc":"14681:37:17","nodeType":"YulFunctionCall","src":"14681:37:17"},"variableNames":[{"name":"value","nativeSrc":"14672:5:17","nodeType":"YulIdentifier","src":"14672:5:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4285,"isOffset":false,"isSlot":false,"src":"14695:6:17","valueSize":1},{"declaration":4287,"isOffset":false,"isSlot":false,"src":"14710:6:17","valueSize":1},{"declaration":4290,"isOffset":false,"isSlot":false,"src":"14672:5:17","valueSize":1}],"flags":["memory-safe"],"id":4292,"nodeType":"InlineAssembly","src":"14633:95:17"}]},"documentation":{"id":4283,"nodeType":"StructuredDocumentation","src":"14130:268:17","text":" @dev Reads a bytes32 from a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."},"id":4294,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeReadBytesOffset","nameLocation":"14412:22:17","nodeType":"FunctionDefinition","parameters":{"id":4288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4285,"mutability":"mutable","name":"buffer","nameLocation":"14448:6:17","nodeType":"VariableDeclaration","scope":4294,"src":"14435:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4284,"name":"bytes","nodeType":"ElementaryTypeName","src":"14435:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4287,"mutability":"mutable","name":"offset","nameLocation":"14464:6:17","nodeType":"VariableDeclaration","scope":4294,"src":"14456:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4286,"name":"uint256","nodeType":"ElementaryTypeName","src":"14456:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14434:37:17"},"returnParameters":{"id":4291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4290,"mutability":"mutable","name":"value","nameLocation":"14502:5:17","nodeType":"VariableDeclaration","scope":4294,"src":"14494:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4289,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14494:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14493:15:17"},"scope":4295,"src":"14403:331:17","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":4296,"src":"198:14538:17","usedErrors":[],"usedEvents":[]}],"src":"99:14638:17"},"id":17},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[4325]},"id":4326,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4297,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:18"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":4298,"nodeType":"StructuredDocumentation","src":"127:496:18","text":" @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 This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":4325,"linearizedBaseContracts":[4325],"name":"Context","nameLocation":"642:7:18","nodeType":"ContractDefinition","nodes":[{"body":{"id":4306,"nodeType":"Block","src":"718:34:18","statements":[{"expression":{"expression":{"id":4303,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"735:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:18","memberName":"sender","nodeType":"MemberAccess","src":"735:10:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4302,"id":4305,"nodeType":"Return","src":"728:17:18"}]},"id":4307,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:18","nodeType":"FunctionDefinition","parameters":{"id":4299,"nodeType":"ParameterList","parameters":[],"src":"675:2:18"},"returnParameters":{"id":4302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4307,"src":"709:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4300,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:18"},"scope":4325,"src":"656:96:18","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4315,"nodeType":"Block","src":"825:32:18","statements":[{"expression":{"expression":{"id":4312,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"842:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:18","memberName":"data","nodeType":"MemberAccess","src":"842:8:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":4311,"id":4314,"nodeType":"Return","src":"835:15:18"}]},"id":4316,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:18","nodeType":"FunctionDefinition","parameters":{"id":4308,"nodeType":"ParameterList","parameters":[],"src":"775:2:18"},"returnParameters":{"id":4311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4310,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4316,"src":"809:14:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4309,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:18"},"scope":4325,"src":"758:99:18","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4323,"nodeType":"Block","src":"935:25:18","statements":[{"expression":{"hexValue":"30","id":4321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4320,"id":4322,"nodeType":"Return","src":"945:8:18"}]},"id":4324,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:18","nodeType":"FunctionDefinition","parameters":{"id":4317,"nodeType":"ParameterList","parameters":[],"src":"892:2:18"},"returnParameters":{"id":4320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4319,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4324,"src":"926:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4318,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:18"},"scope":4325,"src":"863:97:18","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":4326,"src":"624:338:18","usedErrors":[],"usedEvents":[]}],"src":"101:862:18"},"id":18},"@openzeppelin/contracts/utils/Panic.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","exportedSymbols":{"Panic":[4377]},"id":4378,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4327,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:19"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":4328,"nodeType":"StructuredDocumentation","src":"125:489:19","text":" @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n using Panic for uint256;\n // Use any of the declared internal constants\n function foo() { Panic.GENERIC.panic(); }\n // Alternatively\n function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"},"fullyImplemented":true,"id":4377,"linearizedBaseContracts":[4377],"name":"Panic","nameLocation":"665:5:19","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":4329,"nodeType":"StructuredDocumentation","src":"677:36:19","text":"@dev generic / unspecified error"},"id":4332,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:19","nodeType":"VariableDeclaration","scope":4377,"src":"718:40:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4330,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":4331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":4333,"nodeType":"StructuredDocumentation","src":"764:37:19","text":"@dev used by the assert() builtin"},"id":4336,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:19","nodeType":"VariableDeclaration","scope":4377,"src":"806:39:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4334,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":4335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":4337,"nodeType":"StructuredDocumentation","src":"851:41:19","text":"@dev arithmetic underflow or overflow"},"id":4340,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:19","nodeType":"VariableDeclaration","scope":4377,"src":"897:47:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4338,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":4339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:19","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":4341,"nodeType":"StructuredDocumentation","src":"950:35:19","text":"@dev division or modulo by zero"},"id":4344,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:19","nodeType":"VariableDeclaration","scope":4377,"src":"990:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4342,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":4343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:19","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":4345,"nodeType":"StructuredDocumentation","src":"1045:30:19","text":"@dev enum conversion error"},"id":4348,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:19","nodeType":"VariableDeclaration","scope":4377,"src":"1080:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4346,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":4347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:19","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":4349,"nodeType":"StructuredDocumentation","src":"1140:36:19","text":"@dev invalid encoding in storage"},"id":4352,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:19","nodeType":"VariableDeclaration","scope":4377,"src":"1181:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4350,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":4351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:19","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":4353,"nodeType":"StructuredDocumentation","src":"1242:24:19","text":"@dev empty array pop"},"id":4356,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:19","nodeType":"VariableDeclaration","scope":4377,"src":"1271:48:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4354,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":4355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:19","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":4357,"nodeType":"StructuredDocumentation","src":"1325:35:19","text":"@dev array out of bounds access"},"id":4360,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:19","nodeType":"VariableDeclaration","scope":4377,"src":"1365:52:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4358,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":4359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:19","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":4361,"nodeType":"StructuredDocumentation","src":"1423:65:19","text":"@dev resource error (too large allocation or too large array)"},"id":4364,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:19","nodeType":"VariableDeclaration","scope":4377,"src":"1493:47:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4362,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":4363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:19","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":4365,"nodeType":"StructuredDocumentation","src":"1546:42:19","text":"@dev calling invalid internal function"},"id":4368,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:19","nodeType":"VariableDeclaration","scope":4377,"src":"1593:58:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4366,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":4367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:19","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":4375,"nodeType":"Block","src":"1819:151:19","statements":[{"AST":{"nativeSrc":"1854:110:19","nodeType":"YulBlock","src":"1854:110:19","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:19","nodeType":"YulLiteral","src":"1875:4:19","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:19","nodeType":"YulLiteral","src":"1881:10:19","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:19","nodeType":"YulIdentifier","src":"1868:6:19"},"nativeSrc":"1868:24:19","nodeType":"YulFunctionCall","src":"1868:24:19"},"nativeSrc":"1868:24:19","nodeType":"YulExpressionStatement","src":"1868:24:19"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:19","nodeType":"YulLiteral","src":"1912:4:19","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:19","nodeType":"YulIdentifier","src":"1918:4:19"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:19","nodeType":"YulIdentifier","src":"1905:6:19"},"nativeSrc":"1905:18:19","nodeType":"YulFunctionCall","src":"1905:18:19"},"nativeSrc":"1905:18:19","nodeType":"YulExpressionStatement","src":"1905:18:19"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:19","nodeType":"YulLiteral","src":"1943:4:19","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:19","nodeType":"YulLiteral","src":"1949:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:19","nodeType":"YulIdentifier","src":"1936:6:19"},"nativeSrc":"1936:18:19","nodeType":"YulFunctionCall","src":"1936:18:19"},"nativeSrc":"1936:18:19","nodeType":"YulExpressionStatement","src":"1936:18:19"}]},"evmVersion":"cancun","externalReferences":[{"declaration":4371,"isOffset":false,"isSlot":false,"src":"1918:4:19","valueSize":1}],"flags":["memory-safe"],"id":4374,"nodeType":"InlineAssembly","src":"1829:135:19"}]},"documentation":{"id":4369,"nodeType":"StructuredDocumentation","src":"1658:113:19","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":4376,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:19","nodeType":"FunctionDefinition","parameters":{"id":4372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4371,"mutability":"mutable","name":"code","nameLocation":"1799:4:19","nodeType":"VariableDeclaration","scope":4376,"src":"1791:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4370,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:19"},"returnParameters":{"id":4373,"nodeType":"ParameterList","parameters":[],"src":"1819:0:19"},"scope":4377,"src":"1776:194:19","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4378,"src":"657:1315:19","usedErrors":[],"usedEvents":[]}],"src":"99:1874:19"},"id":19},"@openzeppelin/contracts/utils/Pausable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Pausable.sol","exportedSymbols":{"Context":[4325],"Pausable":[4485]},"id":4486,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4379,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:20"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":4381,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4486,"sourceUnit":4326,"src":"128:45:20","symbolAliases":[{"foreign":{"id":4380,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"136:7:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4383,"name":"Context","nameLocations":["645:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":4325,"src":"645:7:20"},"id":4384,"nodeType":"InheritanceSpecifier","src":"645:7:20"}],"canonicalName":"Pausable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4382,"nodeType":"StructuredDocumentation","src":"175:439:20","text":" @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\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."},"fullyImplemented":true,"id":4485,"linearizedBaseContracts":[4485,4325],"name":"Pausable","nameLocation":"633:8:20","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4386,"mutability":"mutable","name":"_paused","nameLocation":"672:7:20","nodeType":"VariableDeclaration","scope":4485,"src":"659:20:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4385,"name":"bool","nodeType":"ElementaryTypeName","src":"659:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":4387,"nodeType":"StructuredDocumentation","src":"686:73:20","text":" @dev Emitted when the pause is triggered by `account`."},"eventSelector":"62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258","id":4391,"name":"Paused","nameLocation":"770:6:20","nodeType":"EventDefinition","parameters":{"id":4390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4389,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"785:7:20","nodeType":"VariableDeclaration","scope":4391,"src":"777:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4388,"name":"address","nodeType":"ElementaryTypeName","src":"777:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"776:17:20"},"src":"764:30:20"},{"anonymous":false,"documentation":{"id":4392,"nodeType":"StructuredDocumentation","src":"800:70:20","text":" @dev Emitted when the pause is lifted by `account`."},"eventSelector":"5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa","id":4396,"name":"Unpaused","nameLocation":"881:8:20","nodeType":"EventDefinition","parameters":{"id":4395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4394,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"898:7:20","nodeType":"VariableDeclaration","scope":4396,"src":"890:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4393,"name":"address","nodeType":"ElementaryTypeName","src":"890:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"889:17:20"},"src":"875:32:20"},{"documentation":{"id":4397,"nodeType":"StructuredDocumentation","src":"913:76:20","text":" @dev The operation failed because the contract is paused."},"errorSelector":"d93c0665","id":4399,"name":"EnforcedPause","nameLocation":"1000:13:20","nodeType":"ErrorDefinition","parameters":{"id":4398,"nodeType":"ParameterList","parameters":[],"src":"1013:2:20"},"src":"994:22:20"},{"documentation":{"id":4400,"nodeType":"StructuredDocumentation","src":"1022:80:20","text":" @dev The operation failed because the contract is not paused."},"errorSelector":"8dfc202b","id":4402,"name":"ExpectedPause","nameLocation":"1113:13:20","nodeType":"ErrorDefinition","parameters":{"id":4401,"nodeType":"ParameterList","parameters":[],"src":"1126:2:20"},"src":"1107:22:20"},{"body":{"id":4409,"nodeType":"Block","src":"1340:47:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4405,"name":"_requireNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4439,"src":"1350:17:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1350:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4407,"nodeType":"ExpressionStatement","src":"1350:19:20"},{"id":4408,"nodeType":"PlaceholderStatement","src":"1379:1:20"}]},"documentation":{"id":4403,"nodeType":"StructuredDocumentation","src":"1135:175:20","text":" @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."},"id":4410,"name":"whenNotPaused","nameLocation":"1324:13:20","nodeType":"ModifierDefinition","parameters":{"id":4404,"nodeType":"ParameterList","parameters":[],"src":"1337:2:20"},"src":"1315:72:20","virtual":false,"visibility":"internal"},{"body":{"id":4417,"nodeType":"Block","src":"1587:44:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4413,"name":"_requirePaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"1597:14:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1597:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4415,"nodeType":"ExpressionStatement","src":"1597:16:20"},{"id":4416,"nodeType":"PlaceholderStatement","src":"1623:1:20"}]},"documentation":{"id":4411,"nodeType":"StructuredDocumentation","src":"1393:167:20","text":" @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."},"id":4418,"name":"whenPaused","nameLocation":"1574:10:20","nodeType":"ModifierDefinition","parameters":{"id":4412,"nodeType":"ParameterList","parameters":[],"src":"1584:2:20"},"src":"1565:66:20","virtual":false,"visibility":"internal"},{"body":{"id":4426,"nodeType":"Block","src":"1779:31:20","statements":[{"expression":{"id":4424,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4386,"src":"1796:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4423,"id":4425,"nodeType":"Return","src":"1789:14:20"}]},"documentation":{"id":4419,"nodeType":"StructuredDocumentation","src":"1637:84:20","text":" @dev Returns true if the contract is paused, and false otherwise."},"functionSelector":"5c975abb","id":4427,"implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"1735:6:20","nodeType":"FunctionDefinition","parameters":{"id":4420,"nodeType":"ParameterList","parameters":[],"src":"1741:2:20"},"returnParameters":{"id":4423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4422,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4427,"src":"1773:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4421,"name":"bool","nodeType":"ElementaryTypeName","src":"1773:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1772:6:20"},"scope":4485,"src":"1726:84:20","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4438,"nodeType":"Block","src":"1929:77:20","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":4431,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4427,"src":"1943:6:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1943:8:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4437,"nodeType":"IfStatement","src":"1939:61:20","trueBody":{"id":4436,"nodeType":"Block","src":"1953:47:20","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4433,"name":"EnforcedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4399,"src":"1974:13:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1974:15:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4435,"nodeType":"RevertStatement","src":"1967:22:20"}]}}]},"documentation":{"id":4428,"nodeType":"StructuredDocumentation","src":"1816:57:20","text":" @dev Throws if the contract is paused."},"id":4439,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNotPaused","nameLocation":"1887:17:20","nodeType":"FunctionDefinition","parameters":{"id":4429,"nodeType":"ParameterList","parameters":[],"src":"1904:2:20"},"returnParameters":{"id":4430,"nodeType":"ParameterList","parameters":[],"src":"1929:0:20"},"scope":4485,"src":"1878:128:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4451,"nodeType":"Block","src":"2126:78:20","statements":[{"condition":{"id":4445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2140:9:20","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4443,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4427,"src":"2141:6:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2141:8:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4450,"nodeType":"IfStatement","src":"2136:62:20","trueBody":{"id":4449,"nodeType":"Block","src":"2151:47:20","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4446,"name":"ExpectedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4402,"src":"2172:13:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2172:15:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4448,"nodeType":"RevertStatement","src":"2165:22:20"}]}}]},"documentation":{"id":4440,"nodeType":"StructuredDocumentation","src":"2012:61:20","text":" @dev Throws if the contract is not paused."},"id":4452,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePaused","nameLocation":"2087:14:20","nodeType":"FunctionDefinition","parameters":{"id":4441,"nodeType":"ParameterList","parameters":[],"src":"2101:2:20"},"returnParameters":{"id":4442,"nodeType":"ParameterList","parameters":[],"src":"2126:0:20"},"scope":4485,"src":"2078:126:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4467,"nodeType":"Block","src":"2388:66:20","statements":[{"expression":{"id":4460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4458,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4386,"src":"2398:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":4459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2408:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2398:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4461,"nodeType":"ExpressionStatement","src":"2398:14:20"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4463,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"2434:10:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2434:12:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4462,"name":"Paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4391,"src":"2427:6:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2427:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4466,"nodeType":"EmitStatement","src":"2422:25:20"}]},"documentation":{"id":4453,"nodeType":"StructuredDocumentation","src":"2210:124:20","text":" @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."},"id":4468,"implemented":true,"kind":"function","modifiers":[{"id":4456,"kind":"modifierInvocation","modifierName":{"id":4455,"name":"whenNotPaused","nameLocations":["2374:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4410,"src":"2374:13:20"},"nodeType":"ModifierInvocation","src":"2374:13:20"}],"name":"_pause","nameLocation":"2348:6:20","nodeType":"FunctionDefinition","parameters":{"id":4454,"nodeType":"ParameterList","parameters":[],"src":"2354:2:20"},"returnParameters":{"id":4457,"nodeType":"ParameterList","parameters":[],"src":"2388:0:20"},"scope":4485,"src":"2339:115:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4483,"nodeType":"Block","src":"2634:69:20","statements":[{"expression":{"id":4476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4474,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4386,"src":"2644:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":4475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2654:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2644:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4477,"nodeType":"ExpressionStatement","src":"2644:15:20"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4479,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"2683:10:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2683:12:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4478,"name":"Unpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"2674:8:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2674:22:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4482,"nodeType":"EmitStatement","src":"2669:27:20"}]},"documentation":{"id":4469,"nodeType":"StructuredDocumentation","src":"2460:121:20","text":" @dev Returns to normal state.\n Requirements:\n - The contract must be paused."},"id":4484,"implemented":true,"kind":"function","modifiers":[{"id":4472,"kind":"modifierInvocation","modifierName":{"id":4471,"name":"whenPaused","nameLocations":["2623:10:20"],"nodeType":"IdentifierPath","referencedDeclaration":4418,"src":"2623:10:20"},"nodeType":"ModifierInvocation","src":"2623:10:20"}],"name":"_unpause","nameLocation":"2595:8:20","nodeType":"FunctionDefinition","parameters":{"id":4470,"nodeType":"ParameterList","parameters":[],"src":"2603:2:20"},"returnParameters":{"id":4473,"nodeType":"ParameterList","parameters":[],"src":"2634:0:20"},"scope":4485,"src":"2586:117:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4486,"src":"615:2090:20","usedErrors":[4399,4402],"usedEvents":[4391,4396]}],"src":"102:2604:20"},"id":20},"@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[4598],"StorageSlot":[4722]},"id":4599,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4487,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:21"},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"./StorageSlot.sol","id":4489,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4599,"sourceUnit":4723,"src":"135:46:21","symbolAliases":[{"foreign":{"id":4488,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"143:11:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuard","contractDependencies":[],"contractKind":"contract","documentation":{"id":4490,"nodeType":"StructuredDocumentation","src":"183:1066:21","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n consider using {ReentrancyGuardTransient} instead.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n IMPORTANT: Deprecated. This storage-based reentrancy guard will be removed and replaced\n by the {ReentrancyGuardTransient} variant in v6.0.\n @custom:stateless"},"fullyImplemented":true,"id":4598,"linearizedBaseContracts":[4598],"name":"ReentrancyGuard","nameLocation":"1268:15:21","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4493,"libraryName":{"id":4491,"name":"StorageSlot","nameLocations":["1296:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":4722,"src":"1296:11:21"},"nodeType":"UsingForDirective","src":"1290:30:21","typeName":{"id":4492,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1312:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"constant":true,"id":4496,"mutability":"constant","name":"REENTRANCY_GUARD_STORAGE","nameLocation":"1470:24:21","nodeType":"VariableDeclaration","scope":4598,"src":"1445:126:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4494,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1445:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":4495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1505:66:21","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"constant":true,"id":4499,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"2351:11:21","nodeType":"VariableDeclaration","scope":4598,"src":"2326:40:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4497,"name":"uint256","nodeType":"ElementaryTypeName","src":"2326:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":4498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2365:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":4502,"mutability":"constant","name":"ENTERED","nameLocation":"2397:7:21","nodeType":"VariableDeclaration","scope":4598,"src":"2372:36:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4500,"name":"uint256","nodeType":"ElementaryTypeName","src":"2372:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":4501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2407:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"documentation":{"id":4503,"nodeType":"StructuredDocumentation","src":"2415:52:21","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":4505,"name":"ReentrancyGuardReentrantCall","nameLocation":"2478:28:21","nodeType":"ErrorDefinition","parameters":{"id":4504,"nodeType":"ParameterList","parameters":[],"src":"2506:2:21"},"src":"2472:37:21"},{"body":{"id":4516,"nodeType":"Block","src":"2529:83:21","statements":[{"expression":{"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4508,"name":"_reentrancyGuardStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"2539:27:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":4509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2539:29:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2569:14:21","memberName":"getUint256Slot","nodeType":"MemberAccess","referencedDeclaration":4666,"src":"2539:44:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Uint256Slot_$4613_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":4511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2539:46:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4613_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":4512,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2586:5:21","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4612,"src":"2539:52:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4513,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4499,"src":"2594:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2539:66:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4515,"nodeType":"ExpressionStatement","src":"2539:66:21"}]},"id":4517,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4506,"nodeType":"ParameterList","parameters":[],"src":"2526:2:21"},"returnParameters":{"id":4507,"nodeType":"ParameterList","parameters":[],"src":"2529:0:21"},"scope":4598,"src":"2515:97:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4527,"nodeType":"Block","src":"3013:79:21","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4520,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4562,"src":"3023:19:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3023:21:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4522,"nodeType":"ExpressionStatement","src":"3023:21:21"},{"id":4523,"nodeType":"PlaceholderStatement","src":"3054:1:21"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4524,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4574,"src":"3065:18:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3065:20:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4526,"nodeType":"ExpressionStatement","src":"3065:20:21"}]},"documentation":{"id":4518,"nodeType":"StructuredDocumentation","src":"2618:366:21","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":4528,"name":"nonReentrant","nameLocation":"2998:12:21","nodeType":"ModifierDefinition","parameters":{"id":4519,"nodeType":"ParameterList","parameters":[],"src":"3010:2:21"},"src":"2989:103:21","virtual":false,"visibility":"internal"},{"body":{"id":4535,"nodeType":"Block","src":"3527:53:21","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4531,"name":"_nonReentrantBeforeView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4547,"src":"3537:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4533,"nodeType":"ExpressionStatement","src":"3537:25:21"},{"id":4534,"nodeType":"PlaceholderStatement","src":"3572:1:21"}]},"documentation":{"id":4529,"nodeType":"StructuredDocumentation","src":"3098:396:21","text":" @dev A `view` only version of {nonReentrant}. Use to block view functions\n from being called, preventing reading from inconsistent contract state.\n CAUTION: This is a \"view\" modifier and does not change the reentrancy\n status. Use it only on view functions. For payable or non-payable functions,\n use the standard {nonReentrant} modifier instead."},"id":4536,"name":"nonReentrantView","nameLocation":"3508:16:21","nodeType":"ModifierDefinition","parameters":{"id":4530,"nodeType":"ParameterList","parameters":[],"src":"3524:2:21"},"src":"3499:81:21","virtual":false,"visibility":"internal"},{"body":{"id":4546,"nodeType":"Block","src":"3634:109:21","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":4539,"name":"_reentrancyGuardEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"3648:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3648:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4545,"nodeType":"IfStatement","src":"3644:93:21","trueBody":{"id":4544,"nodeType":"Block","src":"3675:62:21","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4541,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4505,"src":"3696:28:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3696:30:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4543,"nodeType":"RevertStatement","src":"3689:37:21"}]}}]},"id":4547,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBeforeView","nameLocation":"3595:23:21","nodeType":"FunctionDefinition","parameters":{"id":4537,"nodeType":"ParameterList","parameters":[],"src":"3618:2:21"},"returnParameters":{"id":4538,"nodeType":"ParameterList","parameters":[],"src":"3634:0:21"},"scope":4598,"src":"3586:157:21","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4561,"nodeType":"Block","src":"3788:253:21","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4550,"name":"_nonReentrantBeforeView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4547,"src":"3872:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3872:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4552,"nodeType":"ExpressionStatement","src":"3872:25:21"},{"expression":{"id":4559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4553,"name":"_reentrancyGuardStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"3972:27:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":4554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3972:29:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4002:14:21","memberName":"getUint256Slot","nodeType":"MemberAccess","referencedDeclaration":4666,"src":"3972:44:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Uint256Slot_$4613_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":4556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3972:46:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4613_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":4557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4019:5:21","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4612,"src":"3972:52:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4558,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4502,"src":"4027:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3972:62:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4560,"nodeType":"ExpressionStatement","src":"3972:62:21"}]},"id":4562,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"3758:19:21","nodeType":"FunctionDefinition","parameters":{"id":4548,"nodeType":"ParameterList","parameters":[],"src":"3777:2:21"},"returnParameters":{"id":4549,"nodeType":"ParameterList","parameters":[],"src":"3788:0:21"},"scope":4598,"src":"3749:292:21","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":4573,"nodeType":"Block","src":"4085:215:21","statements":[{"expression":{"id":4571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4565,"name":"_reentrancyGuardStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"4227:27:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":4566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4227:29:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4257:14:21","memberName":"getUint256Slot","nodeType":"MemberAccess","referencedDeclaration":4666,"src":"4227:44:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Uint256Slot_$4613_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":4568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4227:46:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4613_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":4569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4274:5:21","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4612,"src":"4227:52:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4570,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4499,"src":"4282:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4227:66:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4572,"nodeType":"ExpressionStatement","src":"4227:66:21"}]},"id":4574,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"4056:18:21","nodeType":"FunctionDefinition","parameters":{"id":4563,"nodeType":"ParameterList","parameters":[],"src":"4074:2:21"},"returnParameters":{"id":4564,"nodeType":"ParameterList","parameters":[],"src":"4085:0:21"},"scope":4598,"src":"4047:253:21","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":4588,"nodeType":"Block","src":"4543:87:21","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4580,"name":"_reentrancyGuardStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"4560:27:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":4581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4560:29:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4590:14:21","memberName":"getUint256Slot","nodeType":"MemberAccess","referencedDeclaration":4666,"src":"4560:44:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Uint256Slot_$4613_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":4583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4560:46:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4613_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":4584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4607:5:21","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":4612,"src":"4560:52:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4585,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4502,"src":"4616:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4560:63:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4579,"id":4587,"nodeType":"Return","src":"4553:70:21"}]},"documentation":{"id":4575,"nodeType":"StructuredDocumentation","src":"4306:168:21","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":4589,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"4488:23:21","nodeType":"FunctionDefinition","parameters":{"id":4576,"nodeType":"ParameterList","parameters":[],"src":"4511:2:21"},"returnParameters":{"id":4579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4589,"src":"4537:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4577,"name":"bool","nodeType":"ElementaryTypeName","src":"4537:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4536:6:21"},"scope":4598,"src":"4479:151:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4596,"nodeType":"Block","src":"4715:48:21","statements":[{"expression":{"id":4594,"name":"REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4496,"src":"4732:24:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4593,"id":4595,"nodeType":"Return","src":"4725:31:21"}]},"id":4597,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardStorageSlot","nameLocation":"4645:27:21","nodeType":"FunctionDefinition","parameters":{"id":4590,"nodeType":"ParameterList","parameters":[],"src":"4672:2:21"},"returnParameters":{"id":4593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4597,"src":"4706:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4591,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4706:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4705:9:21"},"scope":4598,"src":"4636:127:21","stateMutability":"pure","virtual":true,"visibility":"internal"}],"scope":4599,"src":"1250:3515:21","usedErrors":[4505],"usedEvents":[]}],"src":"109:4657:21"},"id":21},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[4722]},"id":4723,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4600,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:22"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":4601,"nodeType":"StructuredDocumentation","src":"219:1187:22","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":4722,"linearizedBaseContracts":[4722],"name":"StorageSlot","nameLocation":"1415:11:22","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":4604,"members":[{"constant":false,"id":4603,"mutability":"mutable","name":"value","nameLocation":"1470:5:22","nodeType":"VariableDeclaration","scope":4604,"src":"1462:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4602,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:22","nodeType":"StructDefinition","scope":4722,"src":"1433:49:22","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":4607,"members":[{"constant":false,"id":4606,"mutability":"mutable","name":"value","nameLocation":"1522:5:22","nodeType":"VariableDeclaration","scope":4607,"src":"1517:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4605,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:22","nodeType":"StructDefinition","scope":4722,"src":"1488:46:22","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":4610,"members":[{"constant":false,"id":4609,"mutability":"mutable","name":"value","nameLocation":"1577:5:22","nodeType":"VariableDeclaration","scope":4610,"src":"1569:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:22","nodeType":"StructDefinition","scope":4722,"src":"1540:49:22","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":4613,"members":[{"constant":false,"id":4612,"mutability":"mutable","name":"value","nameLocation":"1632:5:22","nodeType":"VariableDeclaration","scope":4613,"src":"1624:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4611,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:22","nodeType":"StructDefinition","scope":4722,"src":"1595:49:22","visibility":"public"},{"canonicalName":"StorageSlot.Int256Slot","id":4616,"members":[{"constant":false,"id":4615,"mutability":"mutable","name":"value","nameLocation":"1685:5:22","nodeType":"VariableDeclaration","scope":4616,"src":"1678:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4614,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:22","nodeType":"StructDefinition","scope":4722,"src":"1650:47:22","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":4619,"members":[{"constant":false,"id":4618,"mutability":"mutable","name":"value","nameLocation":"1738:5:22","nodeType":"VariableDeclaration","scope":4619,"src":"1731:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":4617,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:22","nodeType":"StructDefinition","scope":4722,"src":"1703:47:22","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":4622,"members":[{"constant":false,"id":4621,"mutability":"mutable","name":"value","nameLocation":"1789:5:22","nodeType":"VariableDeclaration","scope":4622,"src":"1783:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4620,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:22","nodeType":"StructDefinition","scope":4722,"src":"1756:45:22","visibility":"public"},{"body":{"id":4632,"nodeType":"Block","src":"1983:79:22","statements":[{"AST":{"nativeSrc":"2018:38:22","nodeType":"YulBlock","src":"2018:38:22","statements":[{"nativeSrc":"2032:14:22","nodeType":"YulAssignment","src":"2032:14:22","value":{"name":"slot","nativeSrc":"2042:4:22","nodeType":"YulIdentifier","src":"2042:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:22","nodeType":"YulIdentifier","src":"2032:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4629,"isOffset":false,"isSlot":true,"src":"2032:6:22","suffix":"slot","valueSize":1},{"declaration":4625,"isOffset":false,"isSlot":false,"src":"2042:4:22","valueSize":1}],"flags":["memory-safe"],"id":4631,"nodeType":"InlineAssembly","src":"1993:63:22"}]},"documentation":{"id":4623,"nodeType":"StructuredDocumentation","src":"1807:87:22","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":4633,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:22","nodeType":"FunctionDefinition","parameters":{"id":4626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4625,"mutability":"mutable","name":"slot","nameLocation":"1931:4:22","nodeType":"VariableDeclaration","scope":4633,"src":"1923:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4624,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:22"},"returnParameters":{"id":4630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4629,"mutability":"mutable","name":"r","nameLocation":"1980:1:22","nodeType":"VariableDeclaration","scope":4633,"src":"1960:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$4604_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":4628,"nodeType":"UserDefinedTypeName","pathNode":{"id":4627,"name":"AddressSlot","nameLocations":["1960:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":4604,"src":"1960:11:22"},"referencedDeclaration":4604,"src":"1960:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$4604_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:22"},"scope":4722,"src":"1899:163:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4643,"nodeType":"Block","src":"2243:79:22","statements":[{"AST":{"nativeSrc":"2278:38:22","nodeType":"YulBlock","src":"2278:38:22","statements":[{"nativeSrc":"2292:14:22","nodeType":"YulAssignment","src":"2292:14:22","value":{"name":"slot","nativeSrc":"2302:4:22","nodeType":"YulIdentifier","src":"2302:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:22","nodeType":"YulIdentifier","src":"2292:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4640,"isOffset":false,"isSlot":true,"src":"2292:6:22","suffix":"slot","valueSize":1},{"declaration":4636,"isOffset":false,"isSlot":false,"src":"2302:4:22","valueSize":1}],"flags":["memory-safe"],"id":4642,"nodeType":"InlineAssembly","src":"2253:63:22"}]},"documentation":{"id":4634,"nodeType":"StructuredDocumentation","src":"2068:86:22","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"id":4644,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:22","nodeType":"FunctionDefinition","parameters":{"id":4637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4636,"mutability":"mutable","name":"slot","nameLocation":"2191:4:22","nodeType":"VariableDeclaration","scope":4644,"src":"2183:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4635,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:22"},"returnParameters":{"id":4641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4640,"mutability":"mutable","name":"r","nameLocation":"2240:1:22","nodeType":"VariableDeclaration","scope":4644,"src":"2220:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$4607_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":4639,"nodeType":"UserDefinedTypeName","pathNode":{"id":4638,"name":"BooleanSlot","nameLocations":["2220:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":4607,"src":"2220:11:22"},"referencedDeclaration":4607,"src":"2220:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$4607_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:22"},"scope":4722,"src":"2159:163:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4654,"nodeType":"Block","src":"2503:79:22","statements":[{"AST":{"nativeSrc":"2538:38:22","nodeType":"YulBlock","src":"2538:38:22","statements":[{"nativeSrc":"2552:14:22","nodeType":"YulAssignment","src":"2552:14:22","value":{"name":"slot","nativeSrc":"2562:4:22","nodeType":"YulIdentifier","src":"2562:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:22","nodeType":"YulIdentifier","src":"2552:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4651,"isOffset":false,"isSlot":true,"src":"2552:6:22","suffix":"slot","valueSize":1},{"declaration":4647,"isOffset":false,"isSlot":false,"src":"2562:4:22","valueSize":1}],"flags":["memory-safe"],"id":4653,"nodeType":"InlineAssembly","src":"2513:63:22"}]},"documentation":{"id":4645,"nodeType":"StructuredDocumentation","src":"2328:86:22","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"id":4655,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:22","nodeType":"FunctionDefinition","parameters":{"id":4648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4647,"mutability":"mutable","name":"slot","nameLocation":"2451:4:22","nodeType":"VariableDeclaration","scope":4655,"src":"2443:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4646,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:22"},"returnParameters":{"id":4652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4651,"mutability":"mutable","name":"r","nameLocation":"2500:1:22","nodeType":"VariableDeclaration","scope":4655,"src":"2480:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$4610_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":4650,"nodeType":"UserDefinedTypeName","pathNode":{"id":4649,"name":"Bytes32Slot","nameLocations":["2480:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":4610,"src":"2480:11:22"},"referencedDeclaration":4610,"src":"2480:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$4610_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:22"},"scope":4722,"src":"2419:163:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4665,"nodeType":"Block","src":"2763:79:22","statements":[{"AST":{"nativeSrc":"2798:38:22","nodeType":"YulBlock","src":"2798:38:22","statements":[{"nativeSrc":"2812:14:22","nodeType":"YulAssignment","src":"2812:14:22","value":{"name":"slot","nativeSrc":"2822:4:22","nodeType":"YulIdentifier","src":"2822:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:22","nodeType":"YulIdentifier","src":"2812:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4662,"isOffset":false,"isSlot":true,"src":"2812:6:22","suffix":"slot","valueSize":1},{"declaration":4658,"isOffset":false,"isSlot":false,"src":"2822:4:22","valueSize":1}],"flags":["memory-safe"],"id":4664,"nodeType":"InlineAssembly","src":"2773:63:22"}]},"documentation":{"id":4656,"nodeType":"StructuredDocumentation","src":"2588:86:22","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"id":4666,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:22","nodeType":"FunctionDefinition","parameters":{"id":4659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4658,"mutability":"mutable","name":"slot","nameLocation":"2711:4:22","nodeType":"VariableDeclaration","scope":4666,"src":"2703:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4657,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:22"},"returnParameters":{"id":4663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4662,"mutability":"mutable","name":"r","nameLocation":"2760:1:22","nodeType":"VariableDeclaration","scope":4666,"src":"2740:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4613_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":4661,"nodeType":"UserDefinedTypeName","pathNode":{"id":4660,"name":"Uint256Slot","nameLocations":["2740:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":4613,"src":"2740:11:22"},"referencedDeclaration":4613,"src":"2740:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$4613_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:22"},"scope":4722,"src":"2679:163:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4676,"nodeType":"Block","src":"3020:79:22","statements":[{"AST":{"nativeSrc":"3055:38:22","nodeType":"YulBlock","src":"3055:38:22","statements":[{"nativeSrc":"3069:14:22","nodeType":"YulAssignment","src":"3069:14:22","value":{"name":"slot","nativeSrc":"3079:4:22","nodeType":"YulIdentifier","src":"3079:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:22","nodeType":"YulIdentifier","src":"3069:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4673,"isOffset":false,"isSlot":true,"src":"3069:6:22","suffix":"slot","valueSize":1},{"declaration":4669,"isOffset":false,"isSlot":false,"src":"3079:4:22","valueSize":1}],"flags":["memory-safe"],"id":4675,"nodeType":"InlineAssembly","src":"3030:63:22"}]},"documentation":{"id":4667,"nodeType":"StructuredDocumentation","src":"2848:85:22","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"id":4677,"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:22","nodeType":"FunctionDefinition","parameters":{"id":4670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4669,"mutability":"mutable","name":"slot","nameLocation":"2969:4:22","nodeType":"VariableDeclaration","scope":4677,"src":"2961:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4668,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:22"},"returnParameters":{"id":4674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4673,"mutability":"mutable","name":"r","nameLocation":"3017:1:22","nodeType":"VariableDeclaration","scope":4677,"src":"2998:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$4616_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":4672,"nodeType":"UserDefinedTypeName","pathNode":{"id":4671,"name":"Int256Slot","nameLocations":["2998:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":4616,"src":"2998:10:22"},"referencedDeclaration":4616,"src":"2998:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$4616_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:22"},"scope":4722,"src":"2938:161:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4687,"nodeType":"Block","src":"3277:79:22","statements":[{"AST":{"nativeSrc":"3312:38:22","nodeType":"YulBlock","src":"3312:38:22","statements":[{"nativeSrc":"3326:14:22","nodeType":"YulAssignment","src":"3326:14:22","value":{"name":"slot","nativeSrc":"3336:4:22","nodeType":"YulIdentifier","src":"3336:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:22","nodeType":"YulIdentifier","src":"3326:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4684,"isOffset":false,"isSlot":true,"src":"3326:6:22","suffix":"slot","valueSize":1},{"declaration":4680,"isOffset":false,"isSlot":false,"src":"3336:4:22","valueSize":1}],"flags":["memory-safe"],"id":4686,"nodeType":"InlineAssembly","src":"3287:63:22"}]},"documentation":{"id":4678,"nodeType":"StructuredDocumentation","src":"3105:85:22","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"id":4688,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:22","nodeType":"FunctionDefinition","parameters":{"id":4681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4680,"mutability":"mutable","name":"slot","nameLocation":"3226:4:22","nodeType":"VariableDeclaration","scope":4688,"src":"3218:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4679,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:22"},"returnParameters":{"id":4685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4684,"mutability":"mutable","name":"r","nameLocation":"3274:1:22","nodeType":"VariableDeclaration","scope":4688,"src":"3255:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$4619_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":4683,"nodeType":"UserDefinedTypeName","pathNode":{"id":4682,"name":"StringSlot","nameLocations":["3255:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":4619,"src":"3255:10:22"},"referencedDeclaration":4619,"src":"3255:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$4619_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:22"},"scope":4722,"src":"3195:161:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4698,"nodeType":"Block","src":"3558:85:22","statements":[{"AST":{"nativeSrc":"3593:44:22","nodeType":"YulBlock","src":"3593:44:22","statements":[{"nativeSrc":"3607:20:22","nodeType":"YulAssignment","src":"3607:20:22","value":{"name":"store.slot","nativeSrc":"3617:10:22","nodeType":"YulIdentifier","src":"3617:10:22"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:22","nodeType":"YulIdentifier","src":"3607:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4695,"isOffset":false,"isSlot":true,"src":"3607:6:22","suffix":"slot","valueSize":1},{"declaration":4691,"isOffset":false,"isSlot":true,"src":"3617:10:22","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":4697,"nodeType":"InlineAssembly","src":"3568:69:22"}]},"documentation":{"id":4689,"nodeType":"StructuredDocumentation","src":"3362:101:22","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":4699,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:22","nodeType":"FunctionDefinition","parameters":{"id":4692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4691,"mutability":"mutable","name":"store","nameLocation":"3506:5:22","nodeType":"VariableDeclaration","scope":4699,"src":"3491:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":4690,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:22"},"returnParameters":{"id":4696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4695,"mutability":"mutable","name":"r","nameLocation":"3555:1:22","nodeType":"VariableDeclaration","scope":4699,"src":"3536:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$4619_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":4694,"nodeType":"UserDefinedTypeName","pathNode":{"id":4693,"name":"StringSlot","nameLocations":["3536:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":4619,"src":"3536:10:22"},"referencedDeclaration":4619,"src":"3536:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$4619_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:22"},"scope":4722,"src":"3468:175:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4709,"nodeType":"Block","src":"3818:79:22","statements":[{"AST":{"nativeSrc":"3853:38:22","nodeType":"YulBlock","src":"3853:38:22","statements":[{"nativeSrc":"3867:14:22","nodeType":"YulAssignment","src":"3867:14:22","value":{"name":"slot","nativeSrc":"3877:4:22","nodeType":"YulIdentifier","src":"3877:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:22","nodeType":"YulIdentifier","src":"3867:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4706,"isOffset":false,"isSlot":true,"src":"3867:6:22","suffix":"slot","valueSize":1},{"declaration":4702,"isOffset":false,"isSlot":false,"src":"3877:4:22","valueSize":1}],"flags":["memory-safe"],"id":4708,"nodeType":"InlineAssembly","src":"3828:63:22"}]},"documentation":{"id":4700,"nodeType":"StructuredDocumentation","src":"3649:84:22","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"id":4710,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:22","nodeType":"FunctionDefinition","parameters":{"id":4703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4702,"mutability":"mutable","name":"slot","nameLocation":"3768:4:22","nodeType":"VariableDeclaration","scope":4710,"src":"3760:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4701,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:22"},"returnParameters":{"id":4707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4706,"mutability":"mutable","name":"r","nameLocation":"3815:1:22","nodeType":"VariableDeclaration","scope":4710,"src":"3797:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$4622_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":4705,"nodeType":"UserDefinedTypeName","pathNode":{"id":4704,"name":"BytesSlot","nameLocations":["3797:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":4622,"src":"3797:9:22"},"referencedDeclaration":4622,"src":"3797:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$4622_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:22"},"scope":4722,"src":"3738:159:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4720,"nodeType":"Block","src":"4094:85:22","statements":[{"AST":{"nativeSrc":"4129:44:22","nodeType":"YulBlock","src":"4129:44:22","statements":[{"nativeSrc":"4143:20:22","nodeType":"YulAssignment","src":"4143:20:22","value":{"name":"store.slot","nativeSrc":"4153:10:22","nodeType":"YulIdentifier","src":"4153:10:22"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:22","nodeType":"YulIdentifier","src":"4143:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4717,"isOffset":false,"isSlot":true,"src":"4143:6:22","suffix":"slot","valueSize":1},{"declaration":4713,"isOffset":false,"isSlot":true,"src":"4153:10:22","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":4719,"nodeType":"InlineAssembly","src":"4104:69:22"}]},"documentation":{"id":4711,"nodeType":"StructuredDocumentation","src":"3903:99:22","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":4721,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:22","nodeType":"FunctionDefinition","parameters":{"id":4714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4713,"mutability":"mutable","name":"store","nameLocation":"4043:5:22","nodeType":"VariableDeclaration","scope":4721,"src":"4029:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4712,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:22"},"returnParameters":{"id":4718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4717,"mutability":"mutable","name":"r","nameLocation":"4091:1:22","nodeType":"VariableDeclaration","scope":4721,"src":"4073:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$4622_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":4716,"nodeType":"UserDefinedTypeName","pathNode":{"id":4715,"name":"BytesSlot","nameLocations":["4073:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":4622,"src":"4073:9:22"},"referencedDeclaration":4622,"src":"4073:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$4622_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:22"},"scope":4722,"src":"4007:172:22","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4723,"src":"1407:2774:22","usedErrors":[],"usedEvents":[]}],"src":"193:3989:22"},"id":22},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Bytes":[4295],"Math":[7925],"SafeCast":[9690],"SignedMath":[9834],"Strings":[6232]},"id":6233,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4724,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"101:24:23"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":4726,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6233,"sourceUnit":7926,"src":"127:37:23","symbolAliases":[{"foreign":{"id":4725,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"135:4:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./math/SafeCast.sol","id":4728,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6233,"sourceUnit":9691,"src":"165:45:23","symbolAliases":[{"foreign":{"id":4727,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"173:8:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":4730,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6233,"sourceUnit":9835,"src":"211:49:23","symbolAliases":[{"foreign":{"id":4729,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9834,"src":"219:10:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Bytes.sol","file":"./Bytes.sol","id":4732,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6233,"sourceUnit":4296,"src":"261:34:23","symbolAliases":[{"foreign":{"id":4731,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"269:5:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":4733,"nodeType":"StructuredDocumentation","src":"297:34:23","text":" @dev String operations."},"fullyImplemented":true,"id":6232,"linearizedBaseContracts":[6232],"name":"Strings","nameLocation":"340:7:23","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4735,"libraryName":{"id":4734,"name":"SafeCast","nameLocations":["360:8:23"],"nodeType":"IdentifierPath","referencedDeclaration":9690,"src":"360:8:23"},"nodeType":"UsingForDirective","src":"354:21:23"},{"constant":true,"id":4738,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"406:10:23","nodeType":"VariableDeclaration","scope":6232,"src":"381:56:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":4736,"name":"bytes16","nodeType":"ElementaryTypeName","src":"381:7:23","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":4737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"419:18:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":4741,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"466:14:23","nodeType":"VariableDeclaration","scope":6232,"src":"443:42:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4739,"name":"uint8","nodeType":"ElementaryTypeName","src":"443:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":4740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"483:2:23","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"constant":true,"id":4754,"mutability":"constant","name":"SPECIAL_CHARS_LOOKUP","nameLocation":"516:20:23","nodeType":"VariableDeclaration","scope":6232,"src":"491:210:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4742,"name":"uint256","nodeType":"ElementaryTypeName","src":"491:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_4951760157141521121071333375_by_1","typeString":"int_const 4951760157141521121071333375"},"id":4753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_21474836479_by_1","typeString":"int_const 21474836479"},"id":4748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"30786666666666666666","id":4743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"547:10:23","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"},"id":4746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"649:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783232","id":4745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"654:4:23","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"649:9:23","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}}],"id":4747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"648:11:23","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}},"src":"547:112:23","typeDescriptions":{"typeIdentifier":"t_rational_21474836479_by_1","typeString":"int_const 21474836479"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"},"id":4751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"691:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783563","id":4750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"696:4:23","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"691:9:23","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}}],"id":4752,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"690:11:23","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}},"src":"547:154:23","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521121071333375_by_1","typeString":"int_const 4951760157141521121071333375"}},"visibility":"private"},{"documentation":{"id":4755,"nodeType":"StructuredDocumentation","src":"721:81:23","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","id":4761,"name":"StringsInsufficientHexLength","nameLocation":"813:28:23","nodeType":"ErrorDefinition","parameters":{"id":4760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4757,"mutability":"mutable","name":"value","nameLocation":"850:5:23","nodeType":"VariableDeclaration","scope":4761,"src":"842:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4756,"name":"uint256","nodeType":"ElementaryTypeName","src":"842:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4759,"mutability":"mutable","name":"length","nameLocation":"865:6:23","nodeType":"VariableDeclaration","scope":4761,"src":"857:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4758,"name":"uint256","nodeType":"ElementaryTypeName","src":"857:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"841:31:23"},"src":"807:66:23"},{"documentation":{"id":4762,"nodeType":"StructuredDocumentation","src":"879:108:23","text":" @dev The string being parsed contains characters that are not in scope of the given base."},"errorSelector":"94e2737e","id":4764,"name":"StringsInvalidChar","nameLocation":"998:18:23","nodeType":"ErrorDefinition","parameters":{"id":4763,"nodeType":"ParameterList","parameters":[],"src":"1016:2:23"},"src":"992:27:23"},{"documentation":{"id":4765,"nodeType":"StructuredDocumentation","src":"1025:84:23","text":" @dev The string being parsed is not a properly formatted address."},"errorSelector":"1d15ae44","id":4767,"name":"StringsInvalidAddressFormat","nameLocation":"1120:27:23","nodeType":"ErrorDefinition","parameters":{"id":4766,"nodeType":"ParameterList","parameters":[],"src":"1147:2:23"},"src":"1114:36:23"},{"body":{"id":4814,"nodeType":"Block","src":"1322:563:23","statements":[{"id":4813,"nodeType":"UncheckedBlock","src":"1332:547:23","statements":[{"assignments":[4776],"declarations":[{"constant":false,"id":4776,"mutability":"mutable","name":"length","nameLocation":"1364:6:23","nodeType":"VariableDeclaration","scope":4813,"src":"1356:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4775,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4783,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4779,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4770,"src":"1384:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4777,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"1373:4:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":4778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1378:5:23","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":7736,"src":"1373:10:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:17:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1393:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1373:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1356:38:23"},{"assignments":[4785],"declarations":[{"constant":false,"id":4785,"mutability":"mutable","name":"buffer","nameLocation":"1422:6:23","nodeType":"VariableDeclaration","scope":4813,"src":"1408:20:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4784,"name":"string","nodeType":"ElementaryTypeName","src":"1408:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":4790,"initialValue":{"arguments":[{"id":4788,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4776,"src":"1442:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1431:10:23","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":4786,"name":"string","nodeType":"ElementaryTypeName","src":"1435:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":4789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1431:18:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"1408:41:23"},{"assignments":[4792],"declarations":[{"constant":false,"id":4792,"mutability":"mutable","name":"ptr","nameLocation":"1471:3:23","nodeType":"VariableDeclaration","scope":4813,"src":"1463:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4791,"name":"uint256","nodeType":"ElementaryTypeName","src":"1463:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4793,"nodeType":"VariableDeclarationStatement","src":"1463:11:23"},{"AST":{"nativeSrc":"1513:69:23","nodeType":"YulBlock","src":"1513:69:23","statements":[{"nativeSrc":"1531:37:23","nodeType":"YulAssignment","src":"1531:37:23","value":{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"1546:6:23","nodeType":"YulIdentifier","src":"1546:6:23"},{"kind":"number","nativeSrc":"1554:4:23","nodeType":"YulLiteral","src":"1554:4:23","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1542:3:23","nodeType":"YulIdentifier","src":"1542:3:23"},"nativeSrc":"1542:17:23","nodeType":"YulFunctionCall","src":"1542:17:23"},{"name":"length","nativeSrc":"1561:6:23","nodeType":"YulIdentifier","src":"1561:6:23"}],"functionName":{"name":"add","nativeSrc":"1538:3:23","nodeType":"YulIdentifier","src":"1538:3:23"},"nativeSrc":"1538:30:23","nodeType":"YulFunctionCall","src":"1538:30:23"},"variableNames":[{"name":"ptr","nativeSrc":"1531:3:23","nodeType":"YulIdentifier","src":"1531:3:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4785,"isOffset":false,"isSlot":false,"src":"1546:6:23","valueSize":1},{"declaration":4776,"isOffset":false,"isSlot":false,"src":"1561:6:23","valueSize":1},{"declaration":4792,"isOffset":false,"isSlot":false,"src":"1531:3:23","valueSize":1}],"flags":["memory-safe"],"id":4794,"nodeType":"InlineAssembly","src":"1488:94:23"},{"body":{"id":4809,"nodeType":"Block","src":"1608:234:23","statements":[{"expression":{"id":4797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1626:5:23","subExpression":{"id":4796,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4792,"src":"1626:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4798,"nodeType":"ExpressionStatement","src":"1626:5:23"},{"AST":{"nativeSrc":"1674:86:23","nodeType":"YulBlock","src":"1674:86:23","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1704:3:23","nodeType":"YulIdentifier","src":"1704:3:23"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1718:5:23","nodeType":"YulIdentifier","src":"1718:5:23"},{"kind":"number","nativeSrc":"1725:2:23","nodeType":"YulLiteral","src":"1725:2:23","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"1714:3:23","nodeType":"YulIdentifier","src":"1714:3:23"},"nativeSrc":"1714:14:23","nodeType":"YulFunctionCall","src":"1714:14:23"},{"name":"HEX_DIGITS","nativeSrc":"1730:10:23","nodeType":"YulIdentifier","src":"1730:10:23"}],"functionName":{"name":"byte","nativeSrc":"1709:4:23","nodeType":"YulIdentifier","src":"1709:4:23"},"nativeSrc":"1709:32:23","nodeType":"YulFunctionCall","src":"1709:32:23"}],"functionName":{"name":"mstore8","nativeSrc":"1696:7:23","nodeType":"YulIdentifier","src":"1696:7:23"},"nativeSrc":"1696:46:23","nodeType":"YulFunctionCall","src":"1696:46:23"},"nativeSrc":"1696:46:23","nodeType":"YulExpressionStatement","src":"1696:46:23"}]},"evmVersion":"cancun","externalReferences":[{"declaration":4738,"isOffset":false,"isSlot":false,"src":"1730:10:23","valueSize":1},{"declaration":4792,"isOffset":false,"isSlot":false,"src":"1704:3:23","valueSize":1},{"declaration":4770,"isOffset":false,"isSlot":false,"src":"1718:5:23","valueSize":1}],"flags":["memory-safe"],"id":4799,"nodeType":"InlineAssembly","src":"1649:111:23"},{"expression":{"id":4802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4800,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4770,"src":"1777:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":4801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1786:2:23","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1777:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4803,"nodeType":"ExpressionStatement","src":"1777:11:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4804,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4770,"src":"1810:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1819:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1810:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4808,"nodeType":"IfStatement","src":"1806:21:23","trueBody":{"id":4807,"nodeType":"Break","src":"1822:5:23"}}]},"condition":{"hexValue":"74727565","id":4795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1602:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":4810,"nodeType":"WhileStatement","src":"1595:247:23"},{"expression":{"id":4811,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4785,"src":"1862:6:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4774,"id":4812,"nodeType":"Return","src":"1855:13:23"}]}]},"documentation":{"id":4768,"nodeType":"StructuredDocumentation","src":"1156:90:23","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":4815,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1260:8:23","nodeType":"FunctionDefinition","parameters":{"id":4771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4770,"mutability":"mutable","name":"value","nameLocation":"1277:5:23","nodeType":"VariableDeclaration","scope":4815,"src":"1269:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4769,"name":"uint256","nodeType":"ElementaryTypeName","src":"1269:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1268:15:23"},"returnParameters":{"id":4774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4815,"src":"1307:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4772,"name":"string","nodeType":"ElementaryTypeName","src":"1307:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1306:15:23"},"scope":6232,"src":"1251:634:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4840,"nodeType":"Block","src":"2061:92:23","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4826,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"2092:5:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2092:9:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":4830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2110:2:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":4831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2092:20:23","trueExpression":{"hexValue":"2d","id":4829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2104:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":4835,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4818,"src":"2138:5:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":4833,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9834,"src":"2123:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$9834_$","typeString":"type(library SignedMath)"}},"id":4834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2134:3:23","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":9833,"src":"2123:14:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":4836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2123:21:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4832,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4815,"src":"2114:8:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":4837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2114:31:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":4824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2078:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4823,"name":"string","nodeType":"ElementaryTypeName","src":"2078:6:23","typeDescriptions":{}}},"id":4825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2085:6:23","memberName":"concat","nodeType":"MemberAccess","src":"2078:13:23","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":4838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2078:68:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4822,"id":4839,"nodeType":"Return","src":"2071:75:23"}]},"documentation":{"id":4816,"nodeType":"StructuredDocumentation","src":"1891:89:23","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":4841,"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"1994:14:23","nodeType":"FunctionDefinition","parameters":{"id":4819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4818,"mutability":"mutable","name":"value","nameLocation":"2016:5:23","nodeType":"VariableDeclaration","scope":4841,"src":"2009:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4817,"name":"int256","nodeType":"ElementaryTypeName","src":"2009:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2008:14:23"},"returnParameters":{"id":4822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4841,"src":"2046:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4820,"name":"string","nodeType":"ElementaryTypeName","src":"2046:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2045:15:23"},"scope":6232,"src":"1985:168:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4860,"nodeType":"Block","src":"2332:100:23","statements":[{"id":4859,"nodeType":"UncheckedBlock","src":"2342:84:23","statements":[{"expression":{"arguments":[{"id":4850,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4844,"src":"2385:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4853,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4844,"src":"2404:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4851,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"2392:4:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":4852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2397:6:23","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":7847,"src":"2392:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2392:18:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2413:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2392:22:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4849,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[4861,4944,4964,5118],"referencedDeclaration":4944,"src":"2373:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":4857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2373:42:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4848,"id":4858,"nodeType":"Return","src":"2366:49:23"}]}]},"documentation":{"id":4842,"nodeType":"StructuredDocumentation","src":"2159:94:23","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":4861,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2267:11:23","nodeType":"FunctionDefinition","parameters":{"id":4845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4844,"mutability":"mutable","name":"value","nameLocation":"2287:5:23","nodeType":"VariableDeclaration","scope":4861,"src":"2279:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4843,"name":"uint256","nodeType":"ElementaryTypeName","src":"2279:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2278:15:23"},"returnParameters":{"id":4848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4847,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4861,"src":"2317:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4846,"name":"string","nodeType":"ElementaryTypeName","src":"2317:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2316:15:23"},"scope":6232,"src":"2258:174:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4943,"nodeType":"Block","src":"2645:435:23","statements":[{"assignments":[4872],"declarations":[{"constant":false,"id":4872,"mutability":"mutable","name":"localValue","nameLocation":"2663:10:23","nodeType":"VariableDeclaration","scope":4943,"src":"2655:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4871,"name":"uint256","nodeType":"ElementaryTypeName","src":"2655:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4874,"initialValue":{"id":4873,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4864,"src":"2676:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2655:26:23"},{"assignments":[4876],"declarations":[{"constant":false,"id":4876,"mutability":"mutable","name":"buffer","nameLocation":"2704:6:23","nodeType":"VariableDeclaration","scope":4943,"src":"2691:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4875,"name":"bytes","nodeType":"ElementaryTypeName","src":"2691:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4885,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2723:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4880,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4866,"src":"2727:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2723:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":4882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2736:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2723:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2713:9:23","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4877,"name":"bytes","nodeType":"ElementaryTypeName","src":"2717:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2713:25:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2691:47:23"},{"expression":{"id":4890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4886,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"2748:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4888,"indexExpression":{"hexValue":"30","id":4887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2755:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2748:9:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":4889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2760:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2748:15:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4891,"nodeType":"ExpressionStatement","src":"2748:15:23"},{"expression":{"id":4896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4892,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"2773:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4894,"indexExpression":{"hexValue":"31","id":4893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2780:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2773:9:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":4895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2785:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2773:15:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4897,"nodeType":"ExpressionStatement","src":"2773:15:23"},{"body":{"id":4926,"nodeType":"Block","src":"2843:95:23","statements":[{"expression":{"id":4920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4912,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"2857:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4914,"indexExpression":{"id":4913,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4899,"src":"2864:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2857:9:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4915,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4738,"src":"2869:10:23","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":4919,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4916,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4872,"src":"2880:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":4917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2893:3:23","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2880:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2869:28:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2857:40:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":4921,"nodeType":"ExpressionStatement","src":"2857:40:23"},{"expression":{"id":4924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4922,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4872,"src":"2911:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":4923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2926:1:23","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2911:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4925,"nodeType":"ExpressionStatement","src":"2911:16:23"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4906,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4899,"src":"2831:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":4907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2835:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2831:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4927,"initializationExpression":{"assignments":[4899],"declarations":[{"constant":false,"id":4899,"mutability":"mutable","name":"i","nameLocation":"2811:1:23","nodeType":"VariableDeclaration","scope":4927,"src":"2803:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4898,"name":"uint256","nodeType":"ElementaryTypeName","src":"2803:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4905,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2815:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4901,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4866,"src":"2819:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2815:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2828:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2815:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2803:26:23"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2838:3:23","subExpression":{"id":4909,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4899,"src":"2840:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4911,"nodeType":"ExpressionStatement","src":"2838:3:23"},"nodeType":"ForStatement","src":"2798:140:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4928,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4872,"src":"2951:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2965:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2951:15:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4937,"nodeType":"IfStatement","src":"2947:96:23","trueBody":{"id":4936,"nodeType":"Block","src":"2968:75:23","statements":[{"errorCall":{"arguments":[{"id":4932,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4864,"src":"3018:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4933,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4866,"src":"3025:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4931,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4761,"src":"2989:28:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":4934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2989:43:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4935,"nodeType":"RevertStatement","src":"2982:50:23"}]}},{"expression":{"arguments":[{"id":4940,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"3066:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3059:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4938,"name":"string","nodeType":"ElementaryTypeName","src":"3059:6:23","typeDescriptions":{}}},"id":4941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3059:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4870,"id":4942,"nodeType":"Return","src":"3052:21:23"}]},"documentation":{"id":4862,"nodeType":"StructuredDocumentation","src":"2438:112:23","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":4944,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2564:11:23","nodeType":"FunctionDefinition","parameters":{"id":4867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4864,"mutability":"mutable","name":"value","nameLocation":"2584:5:23","nodeType":"VariableDeclaration","scope":4944,"src":"2576:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4863,"name":"uint256","nodeType":"ElementaryTypeName","src":"2576:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4866,"mutability":"mutable","name":"length","nameLocation":"2599:6:23","nodeType":"VariableDeclaration","scope":4944,"src":"2591:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4865,"name":"uint256","nodeType":"ElementaryTypeName","src":"2591:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2575:31:23"},"returnParameters":{"id":4870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4944,"src":"2630:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4868,"name":"string","nodeType":"ElementaryTypeName","src":"2630:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2629:15:23"},"scope":6232,"src":"2555:525:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4963,"nodeType":"Block","src":"3312:75:23","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":4957,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4947,"src":"3357:4:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3349:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4955,"name":"uint160","nodeType":"ElementaryTypeName","src":"3349:7:23","typeDescriptions":{}}},"id":4958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3349:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3341:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4953,"name":"uint256","nodeType":"ElementaryTypeName","src":"3341:7:23","typeDescriptions":{}}},"id":4959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3341:22:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4960,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4741,"src":"3365:14:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":4952,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[4861,4944,4964,5118],"referencedDeclaration":4944,"src":"3329:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":4961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3329:51:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4951,"id":4962,"nodeType":"Return","src":"3322:58:23"}]},"documentation":{"id":4945,"nodeType":"StructuredDocumentation","src":"3086:148:23","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"id":4964,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"3248:11:23","nodeType":"FunctionDefinition","parameters":{"id":4948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4947,"mutability":"mutable","name":"addr","nameLocation":"3268:4:23","nodeType":"VariableDeclaration","scope":4964,"src":"3260:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4946,"name":"address","nodeType":"ElementaryTypeName","src":"3260:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3259:14:23"},"returnParameters":{"id":4951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4950,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4964,"src":"3297:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4949,"name":"string","nodeType":"ElementaryTypeName","src":"3297:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3296:15:23"},"scope":6232,"src":"3239:148:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5028,"nodeType":"Block","src":"3644:642:23","statements":[{"assignments":[4973],"declarations":[{"constant":false,"id":4973,"mutability":"mutable","name":"buffer","nameLocation":"3667:6:23","nodeType":"VariableDeclaration","scope":5028,"src":"3654:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4972,"name":"bytes","nodeType":"ElementaryTypeName","src":"3654:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4980,"initialValue":{"arguments":[{"arguments":[{"id":4977,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"3694:4:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4976,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[4861,4944,4964,5118],"referencedDeclaration":4964,"src":"3682:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) pure returns (string memory)"}},"id":4978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3682:17:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3676:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4974,"name":"bytes","nodeType":"ElementaryTypeName","src":"3676:5:23","typeDescriptions":{}}},"id":4979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3676:24:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3654:46:23"},{"assignments":[4982],"declarations":[{"constant":false,"id":4982,"mutability":"mutable","name":"hashValue","nameLocation":"3793:9:23","nodeType":"VariableDeclaration","scope":5028,"src":"3785:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4981,"name":"uint256","nodeType":"ElementaryTypeName","src":"3785:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4983,"nodeType":"VariableDeclarationStatement","src":"3785:17:23"},{"AST":{"nativeSrc":"3837:78:23","nodeType":"YulBlock","src":"3837:78:23","statements":[{"nativeSrc":"3851:54:23","nodeType":"YulAssignment","src":"3851:54:23","value":{"arguments":[{"kind":"number","nativeSrc":"3868:2:23","nodeType":"YulLiteral","src":"3868:2:23","type":"","value":"96"},{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"3886:6:23","nodeType":"YulIdentifier","src":"3886:6:23"},{"kind":"number","nativeSrc":"3894:4:23","nodeType":"YulLiteral","src":"3894:4:23","type":"","value":"0x22"}],"functionName":{"name":"add","nativeSrc":"3882:3:23","nodeType":"YulIdentifier","src":"3882:3:23"},"nativeSrc":"3882:17:23","nodeType":"YulFunctionCall","src":"3882:17:23"},{"kind":"number","nativeSrc":"3901:2:23","nodeType":"YulLiteral","src":"3901:2:23","type":"","value":"40"}],"functionName":{"name":"keccak256","nativeSrc":"3872:9:23","nodeType":"YulIdentifier","src":"3872:9:23"},"nativeSrc":"3872:32:23","nodeType":"YulFunctionCall","src":"3872:32:23"}],"functionName":{"name":"shr","nativeSrc":"3864:3:23","nodeType":"YulIdentifier","src":"3864:3:23"},"nativeSrc":"3864:41:23","nodeType":"YulFunctionCall","src":"3864:41:23"},"variableNames":[{"name":"hashValue","nativeSrc":"3851:9:23","nodeType":"YulIdentifier","src":"3851:9:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4973,"isOffset":false,"isSlot":false,"src":"3886:6:23","valueSize":1},{"declaration":4982,"isOffset":false,"isSlot":false,"src":"3851:9:23","valueSize":1}],"flags":["memory-safe"],"id":4984,"nodeType":"InlineAssembly","src":"3812:103:23"},{"body":{"id":5021,"nodeType":"Block","src":"3958:291:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4995,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"4064:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":4996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4076:3:23","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"4064:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"37","id":4998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4082:1:23","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"4064:19:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":5002,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4973,"src":"4093:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5004,"indexExpression":{"id":5003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4986,"src":"4100:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4093:9:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4087:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5000,"name":"uint8","nodeType":"ElementaryTypeName","src":"4087:5:23","typeDescriptions":{}}},"id":5005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4087:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":5006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4106:2:23","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"4087:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4064:44:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5016,"nodeType":"IfStatement","src":"4060:150:23","trueBody":{"id":5015,"nodeType":"Block","src":"4110:100:23","statements":[{"expression":{"id":5013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5009,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4973,"src":"4178:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5011,"indexExpression":{"id":5010,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4986,"src":"4185:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4178:9:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"^=","rightHandSide":{"hexValue":"30783230","id":5012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4191:4:23","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"4178:17:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":5014,"nodeType":"ExpressionStatement","src":"4178:17:23"}]}},{"expression":{"id":5019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5017,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"4223:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":5018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4237:1:23","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"4223:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5020,"nodeType":"ExpressionStatement","src":"4223:15:23"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4989,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4986,"src":"3946:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":4990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3950:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3946:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5022,"initializationExpression":{"assignments":[4986],"declarations":[{"constant":false,"id":4986,"mutability":"mutable","name":"i","nameLocation":"3938:1:23","nodeType":"VariableDeclaration","scope":5022,"src":"3930:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4985,"name":"uint256","nodeType":"ElementaryTypeName","src":"3930:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4988,"initialValue":{"hexValue":"3431","id":4987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3942:2:23","typeDescriptions":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"value":"41"},"nodeType":"VariableDeclarationStatement","src":"3930:14:23"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":4993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"3953:3:23","subExpression":{"id":4992,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4986,"src":"3955:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4994,"nodeType":"ExpressionStatement","src":"3953:3:23"},"nodeType":"ForStatement","src":"3925:324:23"},{"expression":{"arguments":[{"id":5025,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4973,"src":"4272:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5024,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4265:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":5023,"name":"string","nodeType":"ElementaryTypeName","src":"4265:6:23","typeDescriptions":{}}},"id":5026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4265:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4971,"id":5027,"nodeType":"Return","src":"4258:21:23"}]},"documentation":{"id":4965,"nodeType":"StructuredDocumentation","src":"3393:165:23","text":" @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n representation, according to EIP-55."},"id":5029,"implemented":true,"kind":"function","modifiers":[],"name":"toChecksumHexString","nameLocation":"3572:19:23","nodeType":"FunctionDefinition","parameters":{"id":4968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4967,"mutability":"mutable","name":"addr","nameLocation":"3600:4:23","nodeType":"VariableDeclaration","scope":5029,"src":"3592:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4966,"name":"address","nodeType":"ElementaryTypeName","src":"3592:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3591:14:23"},"returnParameters":{"id":4971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4970,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5029,"src":"3629:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4969,"name":"string","nodeType":"ElementaryTypeName","src":"3629:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3628:15:23"},"scope":6232,"src":"3563:723:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5117,"nodeType":"Block","src":"4475:424:23","statements":[{"id":5116,"nodeType":"UncheckedBlock","src":"4485:408:23","statements":[{"assignments":[5038],"declarations":[{"constant":false,"id":5038,"mutability":"mutable","name":"buffer","nameLocation":"4522:6:23","nodeType":"VariableDeclaration","scope":5116,"src":"4509:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5037,"name":"bytes","nodeType":"ElementaryTypeName","src":"4509:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5048,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":5041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4541:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":5042,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5032,"src":"4545:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4551:6:23","memberName":"length","nodeType":"MemberAccess","src":"4545:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4541:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":5045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4560:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4541:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4531:9:23","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":5039,"name":"bytes","nodeType":"ElementaryTypeName","src":"4535:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4531:31:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4509:53:23"},{"expression":{"id":5053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5049,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"4576:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5051,"indexExpression":{"hexValue":"30","id":5050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4583:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4576:9:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":5052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4588:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"4576:15:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":5054,"nodeType":"ExpressionStatement","src":"4576:15:23"},{"expression":{"id":5059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5055,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"4605:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5057,"indexExpression":{"hexValue":"31","id":5056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4612:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4605:9:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":5058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4617:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"4605:15:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":5060,"nodeType":"ExpressionStatement","src":"4605:15:23"},{"body":{"id":5109,"nodeType":"Block","src":"4677:171:23","statements":[{"assignments":[5073],"declarations":[{"constant":false,"id":5073,"mutability":"mutable","name":"v","nameLocation":"4701:1:23","nodeType":"VariableDeclaration","scope":5109,"src":"4695:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5072,"name":"uint8","nodeType":"ElementaryTypeName","src":"4695:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5080,"initialValue":{"arguments":[{"baseExpression":{"id":5076,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5032,"src":"4711:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5078,"indexExpression":{"id":5077,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"4717:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4711:8:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4705:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5074,"name":"uint8","nodeType":"ElementaryTypeName","src":"4705:5:23","typeDescriptions":{}}},"id":5079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4705:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4695:25:23"},{"expression":{"id":5093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5081,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"4738:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5087,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":5082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4745:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5083,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"4749:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4745:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":5085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4753:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4745:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4738:17:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":5088,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4738,"src":"4758:10:23","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":5092,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5089,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"4769:1:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":5090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4774:1:23","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"4769:6:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4758:18:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"4738:38:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":5094,"nodeType":"ExpressionStatement","src":"4738:38:23"},{"expression":{"id":5107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5095,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"4794:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5101,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":5096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4801:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5097,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"4805:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4801:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":5099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4809:1:23","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"4801:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4794:17:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":5102,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4738,"src":"4814:10:23","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":5106,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5103,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"4825:1:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":5104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4829:3:23","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"4825:7:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4814:19:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"4794:39:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":5108,"nodeType":"ExpressionStatement","src":"4794:39:23"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5065,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"4654:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5066,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5032,"src":"4658:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4664:6:23","memberName":"length","nodeType":"MemberAccess","src":"4658:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4654:16:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5110,"initializationExpression":{"assignments":[5062],"declarations":[{"constant":false,"id":5062,"mutability":"mutable","name":"i","nameLocation":"4647:1:23","nodeType":"VariableDeclaration","scope":5110,"src":"4639:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5061,"name":"uint256","nodeType":"ElementaryTypeName","src":"4639:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5064,"initialValue":{"hexValue":"30","id":5063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4651:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4639:13:23"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4672:3:23","subExpression":{"id":5069,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"4674:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5071,"nodeType":"ExpressionStatement","src":"4672:3:23"},"nodeType":"ForStatement","src":"4634:214:23"},{"expression":{"arguments":[{"id":5113,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"4875:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4868:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":5111,"name":"string","nodeType":"ElementaryTypeName","src":"4868:6:23","typeDescriptions":{}}},"id":5114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4868:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":5036,"id":5115,"nodeType":"Return","src":"4861:21:23"}]}]},"documentation":{"id":5030,"nodeType":"StructuredDocumentation","src":"4292:99:23","text":" @dev Converts a `bytes` buffer to its ASCII `string` hexadecimal representation."},"id":5118,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"4405:11:23","nodeType":"FunctionDefinition","parameters":{"id":5033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5032,"mutability":"mutable","name":"input","nameLocation":"4430:5:23","nodeType":"VariableDeclaration","scope":5118,"src":"4417:18:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5031,"name":"bytes","nodeType":"ElementaryTypeName","src":"4417:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4416:20:23"},"returnParameters":{"id":5036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5035,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5118,"src":"4460:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5034,"name":"string","nodeType":"ElementaryTypeName","src":"4460:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4459:15:23"},"scope":6232,"src":"4396:503:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5140,"nodeType":"Block","src":"5054:55:23","statements":[{"expression":{"arguments":[{"arguments":[{"id":5132,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5121,"src":"5089:1:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5083:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5130,"name":"bytes","nodeType":"ElementaryTypeName","src":"5083:5:23","typeDescriptions":{}}},"id":5133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5083:8:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":5136,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"5099:1:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5093:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5134,"name":"bytes","nodeType":"ElementaryTypeName","src":"5093:5:23","typeDescriptions":{}}},"id":5137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5093:8:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5128,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"5071:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$4295_$","typeString":"type(library Bytes)"}},"id":5129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5077:5:23","memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":3945,"src":"5071:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":5138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5071:31:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5127,"id":5139,"nodeType":"Return","src":"5064:38:23"}]},"documentation":{"id":5119,"nodeType":"StructuredDocumentation","src":"4905:66:23","text":" @dev Returns true if the two strings are equal."},"id":5141,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"4985:5:23","nodeType":"FunctionDefinition","parameters":{"id":5124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5121,"mutability":"mutable","name":"a","nameLocation":"5005:1:23","nodeType":"VariableDeclaration","scope":5141,"src":"4991:15:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5120,"name":"string","nodeType":"ElementaryTypeName","src":"4991:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5123,"mutability":"mutable","name":"b","nameLocation":"5022:1:23","nodeType":"VariableDeclaration","scope":5141,"src":"5008:15:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5122,"name":"string","nodeType":"ElementaryTypeName","src":"5008:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4990:34:23"},"returnParameters":{"id":5127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5141,"src":"5048:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5125,"name":"bool","nodeType":"ElementaryTypeName","src":"5048:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5047:6:23"},"scope":6232,"src":"4976:133:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5159,"nodeType":"Block","src":"5406:64:23","statements":[{"expression":{"arguments":[{"id":5150,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"5433:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5440:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5154,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"5449:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5443:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5152,"name":"bytes","nodeType":"ElementaryTypeName","src":"5443:5:23","typeDescriptions":{}}},"id":5155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5443:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5456:6:23","memberName":"length","nodeType":"MemberAccess","src":"5443:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5149,"name":"parseUint","nodeType":"Identifier","overloadedDeclarations":[5160,5191],"referencedDeclaration":5191,"src":"5423:9:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (uint256)"}},"id":5157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5423:40:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5148,"id":5158,"nodeType":"Return","src":"5416:47:23"}]},"documentation":{"id":5142,"nodeType":"StructuredDocumentation","src":"5115:214:23","text":" @dev Parse a decimal string and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"},"id":5160,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"5343:9:23","nodeType":"FunctionDefinition","parameters":{"id":5145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5144,"mutability":"mutable","name":"input","nameLocation":"5367:5:23","nodeType":"VariableDeclaration","scope":5160,"src":"5353:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5143,"name":"string","nodeType":"ElementaryTypeName","src":"5353:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5352:21:23"},"returnParameters":{"id":5148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5160,"src":"5397:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5146,"name":"uint256","nodeType":"ElementaryTypeName","src":"5397:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5396:9:23"},"scope":6232,"src":"5334:136:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5190,"nodeType":"Block","src":"5875:153:23","statements":[{"assignments":[5173,5175],"declarations":[{"constant":false,"id":5173,"mutability":"mutable","name":"success","nameLocation":"5891:7:23","nodeType":"VariableDeclaration","scope":5190,"src":"5886:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5172,"name":"bool","nodeType":"ElementaryTypeName","src":"5886:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5175,"mutability":"mutable","name":"value","nameLocation":"5908:5:23","nodeType":"VariableDeclaration","scope":5190,"src":"5900:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5174,"name":"uint256","nodeType":"ElementaryTypeName","src":"5900:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5181,"initialValue":{"arguments":[{"id":5177,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"5930:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5178,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5165,"src":"5937:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5179,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"5944:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5176,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[5212,5249],"referencedDeclaration":5249,"src":"5917:12:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5917:31:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5885:63:23"},{"condition":{"id":5183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5962:8:23","subExpression":{"id":5182,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"5963:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5187,"nodeType":"IfStatement","src":"5958:41:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5184,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"5979:18:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5979:20:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5186,"nodeType":"RevertStatement","src":"5972:27:23"}},{"expression":{"id":5188,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"6016:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5171,"id":5189,"nodeType":"Return","src":"6009:12:23"}]},"documentation":{"id":5161,"nodeType":"StructuredDocumentation","src":"5476:294:23","text":" @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"},"id":5191,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"5784:9:23","nodeType":"FunctionDefinition","parameters":{"id":5168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5163,"mutability":"mutable","name":"input","nameLocation":"5808:5:23","nodeType":"VariableDeclaration","scope":5191,"src":"5794:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5162,"name":"string","nodeType":"ElementaryTypeName","src":"5794:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5165,"mutability":"mutable","name":"begin","nameLocation":"5823:5:23","nodeType":"VariableDeclaration","scope":5191,"src":"5815:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5164,"name":"uint256","nodeType":"ElementaryTypeName","src":"5815:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5167,"mutability":"mutable","name":"end","nameLocation":"5838:3:23","nodeType":"VariableDeclaration","scope":5191,"src":"5830:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5166,"name":"uint256","nodeType":"ElementaryTypeName","src":"5830:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5793:49:23"},"returnParameters":{"id":5171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5170,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5191,"src":"5866:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5169,"name":"uint256","nodeType":"ElementaryTypeName","src":"5866:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5865:9:23"},"scope":6232,"src":"5775:253:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5211,"nodeType":"Block","src":"6349:83:23","statements":[{"expression":{"arguments":[{"id":5202,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5194,"src":"6395:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6402:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5206,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5194,"src":"6411:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6405:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5204,"name":"bytes","nodeType":"ElementaryTypeName","src":"6405:5:23","typeDescriptions":{}}},"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6405:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6418:6:23","memberName":"length","nodeType":"MemberAccess","src":"6405:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5201,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5319,"src":"6366:28:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6366:59:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5200,"id":5210,"nodeType":"Return","src":"6359:66:23"}]},"documentation":{"id":5192,"nodeType":"StructuredDocumentation","src":"6034:215:23","text":" @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":5212,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"6263:12:23","nodeType":"FunctionDefinition","parameters":{"id":5195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5194,"mutability":"mutable","name":"input","nameLocation":"6290:5:23","nodeType":"VariableDeclaration","scope":5212,"src":"6276:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5193,"name":"string","nodeType":"ElementaryTypeName","src":"6276:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6275:21:23"},"returnParameters":{"id":5200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5197,"mutability":"mutable","name":"success","nameLocation":"6325:7:23","nodeType":"VariableDeclaration","scope":5212,"src":"6320:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5196,"name":"bool","nodeType":"ElementaryTypeName","src":"6320:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5199,"mutability":"mutable","name":"value","nameLocation":"6342:5:23","nodeType":"VariableDeclaration","scope":5212,"src":"6334:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5198,"name":"uint256","nodeType":"ElementaryTypeName","src":"6334:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6319:29:23"},"scope":6232,"src":"6254:178:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5248,"nodeType":"Block","src":"6834:144:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5226,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5219,"src":"6848:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5229,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"6860:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6854:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5227,"name":"bytes","nodeType":"ElementaryTypeName","src":"6854:5:23","typeDescriptions":{}}},"id":5230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6854:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6867:6:23","memberName":"length","nodeType":"MemberAccess","src":"6854:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6848:25:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5233,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5217,"src":"6877:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5234,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5219,"src":"6885:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6877:11:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6848:40:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5241,"nodeType":"IfStatement","src":"6844:63:23","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6898:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6905:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5239,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6897:10:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5225,"id":5240,"nodeType":"Return","src":"6890:17:23"}},{"expression":{"arguments":[{"id":5243,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"6953:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5244,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5217,"src":"6960:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5245,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5219,"src":"6967:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5242,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5319,"src":"6924:28:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6924:47:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5225,"id":5247,"nodeType":"Return","src":"6917:54:23"}]},"documentation":{"id":5213,"nodeType":"StructuredDocumentation","src":"6438:238:23","text":" @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":5249,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"6690:12:23","nodeType":"FunctionDefinition","parameters":{"id":5220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5215,"mutability":"mutable","name":"input","nameLocation":"6726:5:23","nodeType":"VariableDeclaration","scope":5249,"src":"6712:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5214,"name":"string","nodeType":"ElementaryTypeName","src":"6712:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5217,"mutability":"mutable","name":"begin","nameLocation":"6749:5:23","nodeType":"VariableDeclaration","scope":5249,"src":"6741:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5216,"name":"uint256","nodeType":"ElementaryTypeName","src":"6741:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5219,"mutability":"mutable","name":"end","nameLocation":"6772:3:23","nodeType":"VariableDeclaration","scope":5249,"src":"6764:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5218,"name":"uint256","nodeType":"ElementaryTypeName","src":"6764:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6702:79:23"},"returnParameters":{"id":5225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5222,"mutability":"mutable","name":"success","nameLocation":"6810:7:23","nodeType":"VariableDeclaration","scope":5249,"src":"6805:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5221,"name":"bool","nodeType":"ElementaryTypeName","src":"6805:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5224,"mutability":"mutable","name":"value","nameLocation":"6827:5:23","nodeType":"VariableDeclaration","scope":5249,"src":"6819:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5223,"name":"uint256","nodeType":"ElementaryTypeName","src":"6819:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6804:29:23"},"scope":6232,"src":"6681:297:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5318,"nodeType":"Block","src":"7381:347:23","statements":[{"assignments":[5264],"declarations":[{"constant":false,"id":5264,"mutability":"mutable","name":"buffer","nameLocation":"7404:6:23","nodeType":"VariableDeclaration","scope":5318,"src":"7391:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5263,"name":"bytes","nodeType":"ElementaryTypeName","src":"7391:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5269,"initialValue":{"arguments":[{"id":5267,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5252,"src":"7419:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7413:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5265,"name":"bytes","nodeType":"ElementaryTypeName","src":"7413:5:23","typeDescriptions":{}}},"id":5268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7413:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7391:34:23"},{"assignments":[5271],"declarations":[{"constant":false,"id":5271,"mutability":"mutable","name":"result","nameLocation":"7444:6:23","nodeType":"VariableDeclaration","scope":5318,"src":"7436:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5270,"name":"uint256","nodeType":"ElementaryTypeName","src":"7436:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5273,"initialValue":{"hexValue":"30","id":5272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7453:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7436:18:23"},{"body":{"id":5312,"nodeType":"Block","src":"7502:189:23","statements":[{"assignments":[5285],"declarations":[{"constant":false,"id":5285,"mutability":"mutable","name":"chr","nameLocation":"7522:3:23","nodeType":"VariableDeclaration","scope":5312,"src":"7516:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5284,"name":"uint8","nodeType":"ElementaryTypeName","src":"7516:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5295,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":5290,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5264,"src":"7571:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5291,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5275,"src":"7579:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5289,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"7548:22:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":5292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7548:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7541:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5287,"name":"bytes1","nodeType":"ElementaryTypeName","src":"7541:6:23","typeDescriptions":{}}},"id":5293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7541:41:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5286,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5999,"src":"7528:12:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":5294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7528:55:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"7516:67:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5296,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"7601:3:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"39","id":5297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7607:1:23","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"7601:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5303,"nodeType":"IfStatement","src":"7597:30:23","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7618:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7625:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5301,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7617:10:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5262,"id":5302,"nodeType":"Return","src":"7610:17:23"}},{"expression":{"id":5306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5304,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5271,"src":"7641:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3130","id":5305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7651:2:23","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"7641:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5307,"nodeType":"ExpressionStatement","src":"7641:12:23"},{"expression":{"id":5310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5308,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5271,"src":"7667:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5309,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5285,"src":"7677:3:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7667:13:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5311,"nodeType":"ExpressionStatement","src":"7667:13:23"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5278,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5275,"src":"7488:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5279,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5256,"src":"7492:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7488:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5313,"initializationExpression":{"assignments":[5275],"declarations":[{"constant":false,"id":5275,"mutability":"mutable","name":"i","nameLocation":"7477:1:23","nodeType":"VariableDeclaration","scope":5313,"src":"7469:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5274,"name":"uint256","nodeType":"ElementaryTypeName","src":"7469:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5277,"initialValue":{"id":5276,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5254,"src":"7481:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7469:17:23"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7497:3:23","subExpression":{"id":5281,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5275,"src":"7499:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5283,"nodeType":"ExpressionStatement","src":"7497:3:23"},"nodeType":"ForStatement","src":"7464:227:23"},{"expression":{"components":[{"hexValue":"74727565","id":5314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7708:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":5315,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5271,"src":"7714:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5316,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7707:14:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5262,"id":5317,"nodeType":"Return","src":"7700:21:23"}]},"documentation":{"id":5250,"nodeType":"StructuredDocumentation","src":"6984:224:23","text":" @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":5319,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseUintUncheckedBounds","nameLocation":"7222:28:23","nodeType":"FunctionDefinition","parameters":{"id":5257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5252,"mutability":"mutable","name":"input","nameLocation":"7274:5:23","nodeType":"VariableDeclaration","scope":5319,"src":"7260:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5251,"name":"string","nodeType":"ElementaryTypeName","src":"7260:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5254,"mutability":"mutable","name":"begin","nameLocation":"7297:5:23","nodeType":"VariableDeclaration","scope":5319,"src":"7289:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5253,"name":"uint256","nodeType":"ElementaryTypeName","src":"7289:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5256,"mutability":"mutable","name":"end","nameLocation":"7320:3:23","nodeType":"VariableDeclaration","scope":5319,"src":"7312:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5255,"name":"uint256","nodeType":"ElementaryTypeName","src":"7312:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7250:79:23"},"returnParameters":{"id":5262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5259,"mutability":"mutable","name":"success","nameLocation":"7357:7:23","nodeType":"VariableDeclaration","scope":5319,"src":"7352:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5258,"name":"bool","nodeType":"ElementaryTypeName","src":"7352:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5261,"mutability":"mutable","name":"value","nameLocation":"7374:5:23","nodeType":"VariableDeclaration","scope":5319,"src":"7366:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5260,"name":"uint256","nodeType":"ElementaryTypeName","src":"7366:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7351:29:23"},"scope":6232,"src":"7213:515:23","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5337,"nodeType":"Block","src":"8025:63:23","statements":[{"expression":{"arguments":[{"id":5328,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5322,"src":"8051:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8058:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5332,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5322,"src":"8067:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8061:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5330,"name":"bytes","nodeType":"ElementaryTypeName","src":"8061:5:23","typeDescriptions":{}}},"id":5333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8061:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8074:6:23","memberName":"length","nodeType":"MemberAccess","src":"8061:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5327,"name":"parseInt","nodeType":"Identifier","overloadedDeclarations":[5338,5369],"referencedDeclaration":5369,"src":"8042:8:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (int256)"}},"id":5335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8042:39:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5326,"id":5336,"nodeType":"Return","src":"8035:46:23"}]},"documentation":{"id":5320,"nodeType":"StructuredDocumentation","src":"7734:216:23","text":" @dev Parse a decimal string and returns the value as a `int256`.\n Requirements:\n - The string must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."},"id":5338,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"7964:8:23","nodeType":"FunctionDefinition","parameters":{"id":5323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5322,"mutability":"mutable","name":"input","nameLocation":"7987:5:23","nodeType":"VariableDeclaration","scope":5338,"src":"7973:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5321,"name":"string","nodeType":"ElementaryTypeName","src":"7973:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7972:21:23"},"returnParameters":{"id":5326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5338,"src":"8017:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5324,"name":"int256","nodeType":"ElementaryTypeName","src":"8017:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8016:8:23"},"scope":6232,"src":"7955:133:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5368,"nodeType":"Block","src":"8493:151:23","statements":[{"assignments":[5351,5353],"declarations":[{"constant":false,"id":5351,"mutability":"mutable","name":"success","nameLocation":"8509:7:23","nodeType":"VariableDeclaration","scope":5368,"src":"8504:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5350,"name":"bool","nodeType":"ElementaryTypeName","src":"8504:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5353,"mutability":"mutable","name":"value","nameLocation":"8525:5:23","nodeType":"VariableDeclaration","scope":5368,"src":"8518:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5352,"name":"int256","nodeType":"ElementaryTypeName","src":"8518:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5359,"initialValue":{"arguments":[{"id":5355,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"8546:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5356,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"8553:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5357,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"8560:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5354,"name":"tryParseInt","nodeType":"Identifier","overloadedDeclarations":[5390,5432],"referencedDeclaration":5432,"src":"8534:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":5358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8534:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"nodeType":"VariableDeclarationStatement","src":"8503:61:23"},{"condition":{"id":5361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8578:8:23","subExpression":{"id":5360,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5351,"src":"8579:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5365,"nodeType":"IfStatement","src":"8574:41:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5362,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"8595:18:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8595:20:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5364,"nodeType":"RevertStatement","src":"8588:27:23"}},{"expression":{"id":5366,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5353,"src":"8632:5:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5349,"id":5367,"nodeType":"Return","src":"8625:12:23"}]},"documentation":{"id":5339,"nodeType":"StructuredDocumentation","src":"8094:296:23","text":" @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."},"id":5369,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"8404:8:23","nodeType":"FunctionDefinition","parameters":{"id":5346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5341,"mutability":"mutable","name":"input","nameLocation":"8427:5:23","nodeType":"VariableDeclaration","scope":5369,"src":"8413:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5340,"name":"string","nodeType":"ElementaryTypeName","src":"8413:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5343,"mutability":"mutable","name":"begin","nameLocation":"8442:5:23","nodeType":"VariableDeclaration","scope":5369,"src":"8434:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5342,"name":"uint256","nodeType":"ElementaryTypeName","src":"8434:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5345,"mutability":"mutable","name":"end","nameLocation":"8457:3:23","nodeType":"VariableDeclaration","scope":5369,"src":"8449:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5344,"name":"uint256","nodeType":"ElementaryTypeName","src":"8449:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8412:49:23"},"returnParameters":{"id":5349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5369,"src":"8485:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5347,"name":"int256","nodeType":"ElementaryTypeName","src":"8485:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8484:8:23"},"scope":6232,"src":"8395:249:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5389,"nodeType":"Block","src":"9035:82:23","statements":[{"expression":{"arguments":[{"id":5380,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5372,"src":"9080:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9087:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5384,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5372,"src":"9096:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9090:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5382,"name":"bytes","nodeType":"ElementaryTypeName","src":"9090:5:23","typeDescriptions":{}}},"id":5385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9090:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9103:6:23","memberName":"length","nodeType":"MemberAccess","src":"9090:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5379,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5553,"src":"9052:27:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":5387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9052:58:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":5378,"id":5388,"nodeType":"Return","src":"9045:65:23"}]},"documentation":{"id":5370,"nodeType":"StructuredDocumentation","src":"8650:287:23","text":" @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\n the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."},"id":5390,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"8951:11:23","nodeType":"FunctionDefinition","parameters":{"id":5373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5372,"mutability":"mutable","name":"input","nameLocation":"8977:5:23","nodeType":"VariableDeclaration","scope":5390,"src":"8963:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5371,"name":"string","nodeType":"ElementaryTypeName","src":"8963:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8962:21:23"},"returnParameters":{"id":5378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5375,"mutability":"mutable","name":"success","nameLocation":"9012:7:23","nodeType":"VariableDeclaration","scope":5390,"src":"9007:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5374,"name":"bool","nodeType":"ElementaryTypeName","src":"9007:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5377,"mutability":"mutable","name":"value","nameLocation":"9028:5:23","nodeType":"VariableDeclaration","scope":5390,"src":"9021:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5376,"name":"int256","nodeType":"ElementaryTypeName","src":"9021:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9006:28:23"},"scope":6232,"src":"8942:175:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"constant":true,"id":5395,"mutability":"constant","name":"ABS_MIN_INT256","nameLocation":"9148:14:23","nodeType":"VariableDeclaration","scope":6232,"src":"9123:50:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5391,"name":"uint256","nodeType":"ElementaryTypeName","src":"9123:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":5394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":5392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":5393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9170:3:23","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"9165:8:23","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"visibility":"private"},{"body":{"id":5431,"nodeType":"Block","src":"9639:143:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5409,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5402,"src":"9653:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5412,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5398,"src":"9665:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9659:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5410,"name":"bytes","nodeType":"ElementaryTypeName","src":"9659:5:23","typeDescriptions":{}}},"id":5413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9659:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9672:6:23","memberName":"length","nodeType":"MemberAccess","src":"9659:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9653:25:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5416,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5400,"src":"9682:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5417,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5402,"src":"9690:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9682:11:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9653:40:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5424,"nodeType":"IfStatement","src":"9649:63:23","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9703:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9710:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5422,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9702:10:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5408,"id":5423,"nodeType":"Return","src":"9695:17:23"}},{"expression":{"arguments":[{"id":5426,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5398,"src":"9757:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5427,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5400,"src":"9764:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5428,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5402,"src":"9771:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5425,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5553,"src":"9729:27:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":5429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9729:46:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":5408,"id":5430,"nodeType":"Return","src":"9722:53:23"}]},"documentation":{"id":5396,"nodeType":"StructuredDocumentation","src":"9180:303:23","text":" @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character or if the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."},"id":5432,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"9497:11:23","nodeType":"FunctionDefinition","parameters":{"id":5403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5398,"mutability":"mutable","name":"input","nameLocation":"9532:5:23","nodeType":"VariableDeclaration","scope":5432,"src":"9518:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5397,"name":"string","nodeType":"ElementaryTypeName","src":"9518:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5400,"mutability":"mutable","name":"begin","nameLocation":"9555:5:23","nodeType":"VariableDeclaration","scope":5432,"src":"9547:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5399,"name":"uint256","nodeType":"ElementaryTypeName","src":"9547:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5402,"mutability":"mutable","name":"end","nameLocation":"9578:3:23","nodeType":"VariableDeclaration","scope":5432,"src":"9570:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5401,"name":"uint256","nodeType":"ElementaryTypeName","src":"9570:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9508:79:23"},"returnParameters":{"id":5408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5405,"mutability":"mutable","name":"success","nameLocation":"9616:7:23","nodeType":"VariableDeclaration","scope":5432,"src":"9611:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5404,"name":"bool","nodeType":"ElementaryTypeName","src":"9611:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5407,"mutability":"mutable","name":"value","nameLocation":"9632:5:23","nodeType":"VariableDeclaration","scope":5432,"src":"9625:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5406,"name":"int256","nodeType":"ElementaryTypeName","src":"9625:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9610:28:23"},"scope":6232,"src":"9488:294:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5552,"nodeType":"Block","src":"10182:812:23","statements":[{"assignments":[5447],"declarations":[{"constant":false,"id":5447,"mutability":"mutable","name":"buffer","nameLocation":"10205:6:23","nodeType":"VariableDeclaration","scope":5552,"src":"10192:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5446,"name":"bytes","nodeType":"ElementaryTypeName","src":"10192:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5452,"initialValue":{"arguments":[{"id":5450,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5435,"src":"10220:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10214:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5448,"name":"bytes","nodeType":"ElementaryTypeName","src":"10214:5:23","typeDescriptions":{}}},"id":5451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10214:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"10192:34:23"},{"assignments":[5454],"declarations":[{"constant":false,"id":5454,"mutability":"mutable","name":"sign","nameLocation":"10290:4:23","nodeType":"VariableDeclaration","scope":5552,"src":"10283:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":5453,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10283:6:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":5470,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5455,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"10297:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5456,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5439,"src":"10306:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10297:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":5465,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5447,"src":"10354:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5466,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"10362:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5464,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"10331:22:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":5467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10331:37:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10324:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5462,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10324:6:23","typeDescriptions":{}}},"id":5468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10324:45:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":5469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10297:72:23","trueExpression":{"arguments":[{"hexValue":"30","id":5460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10312:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5458,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10312:6:23","typeDescriptions":{}}},"id":5461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10312:9:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"10283:86:23"},{"assignments":[5472],"declarations":[{"constant":false,"id":5472,"mutability":"mutable","name":"positiveSign","nameLocation":"10455:12:23","nodeType":"VariableDeclaration","scope":5552,"src":"10450:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5471,"name":"bool","nodeType":"ElementaryTypeName","src":"10450:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5479,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":5478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5473,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5454,"src":"10470:4:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2b","id":5476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10485:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""},"value":"+"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""}],"id":5475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10478:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5474,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10478:6:23","typeDescriptions":{}}},"id":5477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10478:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"10470:19:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"10450:39:23"},{"assignments":[5481],"declarations":[{"constant":false,"id":5481,"mutability":"mutable","name":"negativeSign","nameLocation":"10504:12:23","nodeType":"VariableDeclaration","scope":5552,"src":"10499:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5480,"name":"bool","nodeType":"ElementaryTypeName","src":"10499:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5488,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":5487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5482,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5454,"src":"10519:4:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2d","id":5485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10534:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""}],"id":5484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10527:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5483,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10527:6:23","typeDescriptions":{}}},"id":5486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10527:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"10519:19:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"10499:39:23"},{"assignments":[5490],"declarations":[{"constant":false,"id":5490,"mutability":"mutable","name":"offset","nameLocation":"10556:6:23","nodeType":"VariableDeclaration","scope":5552,"src":"10548:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5489,"name":"uint256","nodeType":"ElementaryTypeName","src":"10548:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5497,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5491,"name":"positiveSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5472,"src":"10566:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":5492,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"10582:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10566:28:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5494,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10565:30:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10596:6:23","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"10565:37:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":5496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10565:39:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10548:56:23"},{"assignments":[5499,5501],"declarations":[{"constant":false,"id":5499,"mutability":"mutable","name":"absSuccess","nameLocation":"10621:10:23","nodeType":"VariableDeclaration","scope":5552,"src":"10616:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5498,"name":"bool","nodeType":"ElementaryTypeName","src":"10616:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5501,"mutability":"mutable","name":"absValue","nameLocation":"10641:8:23","nodeType":"VariableDeclaration","scope":5552,"src":"10633:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5500,"name":"uint256","nodeType":"ElementaryTypeName","src":"10633:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5509,"initialValue":{"arguments":[{"id":5503,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5435,"src":"10666:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5504,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"10673:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5505,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5490,"src":"10681:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10673:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5507,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5439,"src":"10689:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5502,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[5212,5249],"referencedDeclaration":5249,"src":"10653:12:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10653:40:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10615:78:23"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5510,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5499,"src":"10708:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5511,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5501,"src":"10722:8:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5512,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"10733:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10722:25:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10708:39:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5530,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5499,"src":"10850:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":5531,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"10864:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10850:26:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5533,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5501,"src":"10880:8:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5534,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"10892:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10880:26:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10850:56:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10978:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10985:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5548,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10977:10:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5445,"id":5549,"nodeType":"Return","src":"10970:17:23"},"id":5550,"nodeType":"IfStatement","src":"10846:141:23","trueBody":{"id":5545,"nodeType":"Block","src":"10908:56:23","statements":[{"expression":{"components":[{"hexValue":"74727565","id":5537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10930:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"arguments":[{"id":5540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10941:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5539,"name":"int256","nodeType":"ElementaryTypeName","src":"10941:6:23","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":5538,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"10936:4:23","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10936:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":5542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10949:3:23","memberName":"min","nodeType":"MemberAccess","src":"10936:16:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5543,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10929:24:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":5445,"id":5544,"nodeType":"Return","src":"10922:31:23"}]}},"id":5551,"nodeType":"IfStatement","src":"10704:283:23","trueBody":{"id":5529,"nodeType":"Block","src":"10749:91:23","statements":[{"expression":{"components":[{"hexValue":"74727565","id":5515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10771:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"condition":{"id":5516,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"10777:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5524,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5501,"src":"10819:8:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10812:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5522,"name":"int256","nodeType":"ElementaryTypeName","src":"10812:6:23","typeDescriptions":{}}},"id":5525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10812:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10777:51:23","trueExpression":{"id":5521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10792:17:23","subExpression":{"arguments":[{"id":5519,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5501,"src":"10800:8:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10793:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5517,"name":"int256","nodeType":"ElementaryTypeName","src":"10793:6:23","typeDescriptions":{}}},"id":5520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10793:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5527,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10770:59:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":5445,"id":5528,"nodeType":"Return","src":"10763:66:23"}]}}]},"documentation":{"id":5433,"nodeType":"StructuredDocumentation","src":"9788:223:23","text":" @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":5553,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseIntUncheckedBounds","nameLocation":"10025:27:23","nodeType":"FunctionDefinition","parameters":{"id":5440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5435,"mutability":"mutable","name":"input","nameLocation":"10076:5:23","nodeType":"VariableDeclaration","scope":5553,"src":"10062:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5434,"name":"string","nodeType":"ElementaryTypeName","src":"10062:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5437,"mutability":"mutable","name":"begin","nameLocation":"10099:5:23","nodeType":"VariableDeclaration","scope":5553,"src":"10091:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5436,"name":"uint256","nodeType":"ElementaryTypeName","src":"10091:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5439,"mutability":"mutable","name":"end","nameLocation":"10122:3:23","nodeType":"VariableDeclaration","scope":5553,"src":"10114:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5438,"name":"uint256","nodeType":"ElementaryTypeName","src":"10114:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10052:79:23"},"returnParameters":{"id":5445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5442,"mutability":"mutable","name":"success","nameLocation":"10159:7:23","nodeType":"VariableDeclaration","scope":5553,"src":"10154:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5441,"name":"bool","nodeType":"ElementaryTypeName","src":"10154:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5444,"mutability":"mutable","name":"value","nameLocation":"10175:5:23","nodeType":"VariableDeclaration","scope":5553,"src":"10168:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5443,"name":"int256","nodeType":"ElementaryTypeName","src":"10168:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"10153:28:23"},"scope":6232,"src":"10016:978:23","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5571,"nodeType":"Block","src":"11339:67:23","statements":[{"expression":{"arguments":[{"id":5562,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5556,"src":"11369:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11376:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5566,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5556,"src":"11385:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11379:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5564,"name":"bytes","nodeType":"ElementaryTypeName","src":"11379:5:23","typeDescriptions":{}}},"id":5567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11379:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11392:6:23","memberName":"length","nodeType":"MemberAccess","src":"11379:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5561,"name":"parseHexUint","nodeType":"Identifier","overloadedDeclarations":[5572,5603],"referencedDeclaration":5603,"src":"11356:12:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (uint256)"}},"id":5569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11356:43:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5560,"id":5570,"nodeType":"Return","src":"11349:50:23"}]},"documentation":{"id":5554,"nodeType":"StructuredDocumentation","src":"11000:259:23","text":" @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."},"id":5572,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"11273:12:23","nodeType":"FunctionDefinition","parameters":{"id":5557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5556,"mutability":"mutable","name":"input","nameLocation":"11300:5:23","nodeType":"VariableDeclaration","scope":5572,"src":"11286:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5555,"name":"string","nodeType":"ElementaryTypeName","src":"11286:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11285:21:23"},"returnParameters":{"id":5560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5559,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5572,"src":"11330:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5558,"name":"uint256","nodeType":"ElementaryTypeName","src":"11330:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11329:9:23"},"scope":6232,"src":"11264:142:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5602,"nodeType":"Block","src":"11827:156:23","statements":[{"assignments":[5585,5587],"declarations":[{"constant":false,"id":5585,"mutability":"mutable","name":"success","nameLocation":"11843:7:23","nodeType":"VariableDeclaration","scope":5602,"src":"11838:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5584,"name":"bool","nodeType":"ElementaryTypeName","src":"11838:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5587,"mutability":"mutable","name":"value","nameLocation":"11860:5:23","nodeType":"VariableDeclaration","scope":5602,"src":"11852:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5586,"name":"uint256","nodeType":"ElementaryTypeName","src":"11852:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5593,"initialValue":{"arguments":[{"id":5589,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"11885:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5590,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5577,"src":"11892:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5591,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5579,"src":"11899:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5588,"name":"tryParseHexUint","nodeType":"Identifier","overloadedDeclarations":[5624,5661],"referencedDeclaration":5661,"src":"11869:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11869:34:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11837:66:23"},{"condition":{"id":5595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11917:8:23","subExpression":{"id":5594,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"11918:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5599,"nodeType":"IfStatement","src":"11913:41:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5596,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"11934:18:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11934:20:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5598,"nodeType":"RevertStatement","src":"11927:27:23"}},{"expression":{"id":5600,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5587,"src":"11971:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5583,"id":5601,"nodeType":"Return","src":"11964:12:23"}]},"documentation":{"id":5573,"nodeType":"StructuredDocumentation","src":"11412:307:23","text":" @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."},"id":5603,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"11733:12:23","nodeType":"FunctionDefinition","parameters":{"id":5580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5575,"mutability":"mutable","name":"input","nameLocation":"11760:5:23","nodeType":"VariableDeclaration","scope":5603,"src":"11746:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5574,"name":"string","nodeType":"ElementaryTypeName","src":"11746:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5577,"mutability":"mutable","name":"begin","nameLocation":"11775:5:23","nodeType":"VariableDeclaration","scope":5603,"src":"11767:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5576,"name":"uint256","nodeType":"ElementaryTypeName","src":"11767:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5579,"mutability":"mutable","name":"end","nameLocation":"11790:3:23","nodeType":"VariableDeclaration","scope":5603,"src":"11782:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5578,"name":"uint256","nodeType":"ElementaryTypeName","src":"11782:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11745:49:23"},"returnParameters":{"id":5583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5603,"src":"11818:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5581,"name":"uint256","nodeType":"ElementaryTypeName","src":"11818:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11817:9:23"},"scope":6232,"src":"11724:259:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5623,"nodeType":"Block","src":"12310:86:23","statements":[{"expression":{"arguments":[{"id":5614,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"12359:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12366:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5618,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"12375:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12369:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5616,"name":"bytes","nodeType":"ElementaryTypeName","src":"12369:5:23","typeDescriptions":{}}},"id":5619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12369:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12382:6:23","memberName":"length","nodeType":"MemberAccess","src":"12369:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5613,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"12327:31:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12327:62:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5612,"id":5622,"nodeType":"Return","src":"12320:69:23"}]},"documentation":{"id":5604,"nodeType":"StructuredDocumentation","src":"11989:218:23","text":" @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":5624,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"12221:15:23","nodeType":"FunctionDefinition","parameters":{"id":5607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5606,"mutability":"mutable","name":"input","nameLocation":"12251:5:23","nodeType":"VariableDeclaration","scope":5624,"src":"12237:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5605,"name":"string","nodeType":"ElementaryTypeName","src":"12237:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"12236:21:23"},"returnParameters":{"id":5612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5609,"mutability":"mutable","name":"success","nameLocation":"12286:7:23","nodeType":"VariableDeclaration","scope":5624,"src":"12281:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5608,"name":"bool","nodeType":"ElementaryTypeName","src":"12281:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5611,"mutability":"mutable","name":"value","nameLocation":"12303:5:23","nodeType":"VariableDeclaration","scope":5624,"src":"12295:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5610,"name":"uint256","nodeType":"ElementaryTypeName","src":"12295:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12280:29:23"},"scope":6232,"src":"12212:184:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5660,"nodeType":"Block","src":"12804:147:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5638,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5631,"src":"12818:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5641,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5627,"src":"12830:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12824:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5639,"name":"bytes","nodeType":"ElementaryTypeName","src":"12824:5:23","typeDescriptions":{}}},"id":5642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12824:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12837:6:23","memberName":"length","nodeType":"MemberAccess","src":"12824:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12818:25:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5645,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5629,"src":"12847:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5646,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5631,"src":"12855:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12847:11:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12818:40:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5653,"nodeType":"IfStatement","src":"12814:63:23","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12868:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12875:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5651,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12867:10:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5637,"id":5652,"nodeType":"Return","src":"12860:17:23"}},{"expression":{"arguments":[{"id":5655,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5627,"src":"12926:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5656,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5629,"src":"12933:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5657,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5631,"src":"12940:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5654,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"12894:31:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12894:50:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5637,"id":5659,"nodeType":"Return","src":"12887:57:23"}]},"documentation":{"id":5625,"nodeType":"StructuredDocumentation","src":"12402:241:23","text":" @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\n invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":5661,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"12657:15:23","nodeType":"FunctionDefinition","parameters":{"id":5632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5627,"mutability":"mutable","name":"input","nameLocation":"12696:5:23","nodeType":"VariableDeclaration","scope":5661,"src":"12682:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5626,"name":"string","nodeType":"ElementaryTypeName","src":"12682:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5629,"mutability":"mutable","name":"begin","nameLocation":"12719:5:23","nodeType":"VariableDeclaration","scope":5661,"src":"12711:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5628,"name":"uint256","nodeType":"ElementaryTypeName","src":"12711:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5631,"mutability":"mutable","name":"end","nameLocation":"12742:3:23","nodeType":"VariableDeclaration","scope":5661,"src":"12734:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5630,"name":"uint256","nodeType":"ElementaryTypeName","src":"12734:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12672:79:23"},"returnParameters":{"id":5637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5634,"mutability":"mutable","name":"success","nameLocation":"12780:7:23","nodeType":"VariableDeclaration","scope":5661,"src":"12775:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5633,"name":"bool","nodeType":"ElementaryTypeName","src":"12775:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5636,"mutability":"mutable","name":"value","nameLocation":"12797:5:23","nodeType":"VariableDeclaration","scope":5661,"src":"12789:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5635,"name":"uint256","nodeType":"ElementaryTypeName","src":"12789:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12774:29:23"},"scope":6232,"src":"12648:303:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5763,"nodeType":"Block","src":"13360:881:23","statements":[{"assignments":[5676],"declarations":[{"constant":false,"id":5676,"mutability":"mutable","name":"buffer","nameLocation":"13383:6:23","nodeType":"VariableDeclaration","scope":5763,"src":"13370:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5675,"name":"bytes","nodeType":"ElementaryTypeName","src":"13370:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5681,"initialValue":{"arguments":[{"id":5679,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5664,"src":"13398:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13392:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5677,"name":"bytes","nodeType":"ElementaryTypeName","src":"13392:5:23","typeDescriptions":{}}},"id":5680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13392:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"13370:34:23"},{"assignments":[5683],"declarations":[{"constant":false,"id":5683,"mutability":"mutable","name":"hasPrefix","nameLocation":"13457:9:23","nodeType":"VariableDeclaration","scope":5763,"src":"13452:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5682,"name":"bool","nodeType":"ElementaryTypeName","src":"13452:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5703,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5684,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5668,"src":"13470:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5685,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5666,"src":"13476:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13484:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13476:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13470:15:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5689,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13469:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":5701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":5693,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5676,"src":"13520:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5694,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5666,"src":"13528:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5692,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"13497:22:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":5695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13497:37:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13490:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":5690,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13490:6:23","typeDescriptions":{}}},"id":5696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13490:45:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":5699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13546:4:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":5698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13539:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":5697,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13539:6:23","typeDescriptions":{}}},"id":5700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13539:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"13490:61:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13469:82:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"13452:99:23"},{"assignments":[5705],"declarations":[{"constant":false,"id":5705,"mutability":"mutable","name":"offset","nameLocation":"13640:6:23","nodeType":"VariableDeclaration","scope":5763,"src":"13632:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5704,"name":"uint256","nodeType":"ElementaryTypeName","src":"13632:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5711,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5706,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5683,"src":"13649:9:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13659:6:23","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"13649:16:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":5708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13649:18:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13670:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13649:22:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13632:39:23"},{"assignments":[5713],"declarations":[{"constant":false,"id":5713,"mutability":"mutable","name":"result","nameLocation":"13690:6:23","nodeType":"VariableDeclaration","scope":5763,"src":"13682:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5712,"name":"uint256","nodeType":"ElementaryTypeName","src":"13682:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5715,"initialValue":{"hexValue":"30","id":5714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13699:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13682:18:23"},{"body":{"id":5757,"nodeType":"Block","src":"13757:447:23","statements":[{"assignments":[5729],"declarations":[{"constant":false,"id":5729,"mutability":"mutable","name":"chr","nameLocation":"13777:3:23","nodeType":"VariableDeclaration","scope":5757,"src":"13771:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5728,"name":"uint8","nodeType":"ElementaryTypeName","src":"13771:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5739,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":5734,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5676,"src":"13826:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5735,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5717,"src":"13834:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5733,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"13803:22:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":5736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13803:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13796:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":5731,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13796:6:23","typeDescriptions":{}}},"id":5737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13796:41:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5730,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5999,"src":"13783:12:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":5738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13783:55:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13771:67:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5740,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5729,"src":"13856:3:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3135","id":5741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13862:2:23","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"13856:8:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5747,"nodeType":"IfStatement","src":"13852:31:23","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13874:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13881:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5745,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13873:10:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5674,"id":5746,"nodeType":"Return","src":"13866:17:23"}},{"expression":{"id":5750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5748,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5713,"src":"13897:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3136","id":5749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13907:2:23","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13897:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5751,"nodeType":"ExpressionStatement","src":"13897:12:23"},{"id":5756,"nodeType":"UncheckedBlock","src":"13923:271:23","statements":[{"expression":{"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5713,"src":"14166:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5753,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5729,"src":"14176:3:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14166:13:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5755,"nodeType":"ExpressionStatement","src":"14166:13:23"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5722,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5717,"src":"13743:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5723,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5668,"src":"13747:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13743:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5758,"initializationExpression":{"assignments":[5717],"declarations":[{"constant":false,"id":5717,"mutability":"mutable","name":"i","nameLocation":"13723:1:23","nodeType":"VariableDeclaration","scope":5758,"src":"13715:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5716,"name":"uint256","nodeType":"ElementaryTypeName","src":"13715:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5721,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5718,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5666,"src":"13727:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5719,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5705,"src":"13735:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13727:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13715:26:23"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13752:3:23","subExpression":{"id":5725,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5717,"src":"13754:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5727,"nodeType":"ExpressionStatement","src":"13752:3:23"},"nodeType":"ForStatement","src":"13710:494:23"},{"expression":{"components":[{"hexValue":"74727565","id":5759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14221:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":5760,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5713,"src":"14227:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5761,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14220:14:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":5674,"id":5762,"nodeType":"Return","src":"14213:21:23"}]},"documentation":{"id":5662,"nodeType":"StructuredDocumentation","src":"12957:227:23","text":" @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":5764,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseHexUintUncheckedBounds","nameLocation":"13198:31:23","nodeType":"FunctionDefinition","parameters":{"id":5669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5664,"mutability":"mutable","name":"input","nameLocation":"13253:5:23","nodeType":"VariableDeclaration","scope":5764,"src":"13239:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5663,"name":"string","nodeType":"ElementaryTypeName","src":"13239:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5666,"mutability":"mutable","name":"begin","nameLocation":"13276:5:23","nodeType":"VariableDeclaration","scope":5764,"src":"13268:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5665,"name":"uint256","nodeType":"ElementaryTypeName","src":"13268:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5668,"mutability":"mutable","name":"end","nameLocation":"13299:3:23","nodeType":"VariableDeclaration","scope":5764,"src":"13291:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5667,"name":"uint256","nodeType":"ElementaryTypeName","src":"13291:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13229:79:23"},"returnParameters":{"id":5674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5671,"mutability":"mutable","name":"success","nameLocation":"13336:7:23","nodeType":"VariableDeclaration","scope":5764,"src":"13331:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5670,"name":"bool","nodeType":"ElementaryTypeName","src":"13331:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5673,"mutability":"mutable","name":"value","nameLocation":"13353:5:23","nodeType":"VariableDeclaration","scope":5764,"src":"13345:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5672,"name":"uint256","nodeType":"ElementaryTypeName","src":"13345:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13330:29:23"},"scope":6232,"src":"13189:1052:23","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5782,"nodeType":"Block","src":"14539:67:23","statements":[{"expression":{"arguments":[{"id":5773,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5767,"src":"14569:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14576:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5777,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5767,"src":"14585:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14579:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5775,"name":"bytes","nodeType":"ElementaryTypeName","src":"14579:5:23","typeDescriptions":{}}},"id":5778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14579:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14592:6:23","memberName":"length","nodeType":"MemberAccess","src":"14579:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5772,"name":"parseAddress","nodeType":"Identifier","overloadedDeclarations":[5783,5814],"referencedDeclaration":5814,"src":"14556:12:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (address)"}},"id":5780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14556:43:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5771,"id":5781,"nodeType":"Return","src":"14549:50:23"}]},"documentation":{"id":5765,"nodeType":"StructuredDocumentation","src":"14247:212:23","text":" @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as an `address`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`"},"id":5783,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"14473:12:23","nodeType":"FunctionDefinition","parameters":{"id":5768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5767,"mutability":"mutable","name":"input","nameLocation":"14500:5:23","nodeType":"VariableDeclaration","scope":5783,"src":"14486:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5766,"name":"string","nodeType":"ElementaryTypeName","src":"14486:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14485:21:23"},"returnParameters":{"id":5771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5783,"src":"14530:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5769,"name":"address","nodeType":"ElementaryTypeName","src":"14530:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14529:9:23"},"scope":6232,"src":"14464:142:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5813,"nodeType":"Block","src":"14979:165:23","statements":[{"assignments":[5796,5798],"declarations":[{"constant":false,"id":5796,"mutability":"mutable","name":"success","nameLocation":"14995:7:23","nodeType":"VariableDeclaration","scope":5813,"src":"14990:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5795,"name":"bool","nodeType":"ElementaryTypeName","src":"14990:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5798,"mutability":"mutable","name":"value","nameLocation":"15012:5:23","nodeType":"VariableDeclaration","scope":5813,"src":"15004:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5797,"name":"address","nodeType":"ElementaryTypeName","src":"15004:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5804,"initialValue":{"arguments":[{"id":5800,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"15037:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5801,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5788,"src":"15044:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5802,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5790,"src":"15051:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5799,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[5835,5939],"referencedDeclaration":5939,"src":"15021:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,address)"}},"id":5803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15021:34:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"nodeType":"VariableDeclarationStatement","src":"14989:66:23"},{"condition":{"id":5806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15069:8:23","subExpression":{"id":5805,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5796,"src":"15070:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5810,"nodeType":"IfStatement","src":"15065:50:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5807,"name":"StringsInvalidAddressFormat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4767,"src":"15086:27:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15086:29:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5809,"nodeType":"RevertStatement","src":"15079:36:23"}},{"expression":{"id":5811,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5798,"src":"15132:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5794,"id":5812,"nodeType":"Return","src":"15125:12:23"}]},"documentation":{"id":5784,"nodeType":"StructuredDocumentation","src":"14612:259:23","text":" @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`"},"id":5814,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"14885:12:23","nodeType":"FunctionDefinition","parameters":{"id":5791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5786,"mutability":"mutable","name":"input","nameLocation":"14912:5:23","nodeType":"VariableDeclaration","scope":5814,"src":"14898:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5785,"name":"string","nodeType":"ElementaryTypeName","src":"14898:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5788,"mutability":"mutable","name":"begin","nameLocation":"14927:5:23","nodeType":"VariableDeclaration","scope":5814,"src":"14919:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5787,"name":"uint256","nodeType":"ElementaryTypeName","src":"14919:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5790,"mutability":"mutable","name":"end","nameLocation":"14942:3:23","nodeType":"VariableDeclaration","scope":5814,"src":"14934:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5789,"name":"uint256","nodeType":"ElementaryTypeName","src":"14934:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14897:49:23"},"returnParameters":{"id":5794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5814,"src":"14970:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5792,"name":"address","nodeType":"ElementaryTypeName","src":"14970:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14969:9:23"},"scope":6232,"src":"14876:268:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5834,"nodeType":"Block","src":"15451:70:23","statements":[{"expression":{"arguments":[{"id":5825,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"15484:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":5826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15491:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":5829,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"15500:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15494:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5827,"name":"bytes","nodeType":"ElementaryTypeName","src":"15494:5:23","typeDescriptions":{}}},"id":5830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15494:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15507:6:23","memberName":"length","nodeType":"MemberAccess","src":"15494:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5824,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[5835,5939],"referencedDeclaration":5939,"src":"15468:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,address)"}},"id":5832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15468:46:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":5823,"id":5833,"nodeType":"Return","src":"15461:53:23"}]},"documentation":{"id":5815,"nodeType":"StructuredDocumentation","src":"15150:198:23","text":" @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\n formatted address. See {parseAddress-string} requirements."},"id":5835,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"15362:15:23","nodeType":"FunctionDefinition","parameters":{"id":5818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5817,"mutability":"mutable","name":"input","nameLocation":"15392:5:23","nodeType":"VariableDeclaration","scope":5835,"src":"15378:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5816,"name":"string","nodeType":"ElementaryTypeName","src":"15378:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"15377:21:23"},"returnParameters":{"id":5823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5820,"mutability":"mutable","name":"success","nameLocation":"15427:7:23","nodeType":"VariableDeclaration","scope":5835,"src":"15422:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5819,"name":"bool","nodeType":"ElementaryTypeName","src":"15422:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5822,"mutability":"mutable","name":"value","nameLocation":"15444:5:23","nodeType":"VariableDeclaration","scope":5835,"src":"15436:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5821,"name":"address","nodeType":"ElementaryTypeName","src":"15436:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15421:29:23"},"scope":6232,"src":"15353:168:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5938,"nodeType":"Block","src":"15914:733:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5849,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"15928:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5852,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5838,"src":"15940:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15934:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5850,"name":"bytes","nodeType":"ElementaryTypeName","src":"15934:5:23","typeDescriptions":{}}},"id":5853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15934:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15947:6:23","memberName":"length","nodeType":"MemberAccess","src":"15934:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15928:25:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5856,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5840,"src":"15957:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5857,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"15965:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15957:11:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15928:40:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5867,"nodeType":"IfStatement","src":"15924:72:23","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15978:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":5863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15993:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15985:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5861,"name":"address","nodeType":"ElementaryTypeName","src":"15985:7:23","typeDescriptions":{}}},"id":5864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15985:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5865,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15977:19:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":5848,"id":5866,"nodeType":"Return","src":"15970:26:23"}},{"assignments":[5869],"declarations":[{"constant":false,"id":5869,"mutability":"mutable","name":"hasPrefix","nameLocation":"16012:9:23","nodeType":"VariableDeclaration","scope":5938,"src":"16007:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5868,"name":"bool","nodeType":"ElementaryTypeName","src":"16007:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5892,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5870,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"16025:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5871,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5840,"src":"16031:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16039:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16031:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16025:15:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5875,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16024:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":5881,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5838,"src":"16081:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16075:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5879,"name":"bytes","nodeType":"ElementaryTypeName","src":"16075:5:23","typeDescriptions":{}}},"id":5882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16075:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5883,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5840,"src":"16089:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5878,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"16052:22:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":5884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16052:43:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16045:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":5876,"name":"bytes2","nodeType":"ElementaryTypeName","src":"16045:6:23","typeDescriptions":{}}},"id":5885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16045:51:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":5888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16107:4:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":5887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16100:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":5886,"name":"bytes2","nodeType":"ElementaryTypeName","src":"16100:6:23","typeDescriptions":{}}},"id":5889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16100:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"16045:67:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16024:88:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"16007:105:23"},{"assignments":[5894],"declarations":[{"constant":false,"id":5894,"mutability":"mutable","name":"expectedLength","nameLocation":"16201:14:23","nodeType":"VariableDeclaration","scope":5938,"src":"16193:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5893,"name":"uint256","nodeType":"ElementaryTypeName","src":"16193:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5902,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3430","id":5895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16218:2:23","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5896,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5869,"src":"16223:9:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16233:6:23","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"16223:16:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":5898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16223:18:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16244:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"16223:22:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16218:27:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16193:52:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5903,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"16310:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5904,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5840,"src":"16316:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16310:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5906,"name":"expectedLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5894,"src":"16325:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16310:29:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5936,"nodeType":"Block","src":"16590:51:23","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":5929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16612:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":5932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16627:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16619:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5930,"name":"address","nodeType":"ElementaryTypeName","src":"16619:7:23","typeDescriptions":{}}},"id":5933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16619:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5934,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16611:19:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":5848,"id":5935,"nodeType":"Return","src":"16604:26:23"}]},"id":5937,"nodeType":"IfStatement","src":"16306:335:23","trueBody":{"id":5928,"nodeType":"Block","src":"16341:243:23","statements":[{"assignments":[5909,5911],"declarations":[{"constant":false,"id":5909,"mutability":"mutable","name":"s","nameLocation":"16462:1:23","nodeType":"VariableDeclaration","scope":5928,"src":"16457:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5908,"name":"bool","nodeType":"ElementaryTypeName","src":"16457:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5911,"mutability":"mutable","name":"v","nameLocation":"16473:1:23","nodeType":"VariableDeclaration","scope":5928,"src":"16465:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5910,"name":"uint256","nodeType":"ElementaryTypeName","src":"16465:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5917,"initialValue":{"arguments":[{"id":5913,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5838,"src":"16510:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5914,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5840,"src":"16517:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5915,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"16524:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5912,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"16478:31:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":5916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16478:50:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16456:72:23"},{"expression":{"components":[{"id":5918,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5909,"src":"16550:1:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"id":5923,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5911,"src":"16569:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16561:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5921,"name":"uint160","nodeType":"ElementaryTypeName","src":"16561:7:23","typeDescriptions":{}}},"id":5924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16561:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":5920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16553:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5919,"name":"address","nodeType":"ElementaryTypeName","src":"16553:7:23","typeDescriptions":{}}},"id":5925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16553:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5926,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16549:24:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":5848,"id":5927,"nodeType":"Return","src":"16542:31:23"}]}}]},"documentation":{"id":5836,"nodeType":"StructuredDocumentation","src":"15527:226:23","text":" @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\n formatted address. See {parseAddress-string-uint256-uint256} requirements."},"id":5939,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"15767:15:23","nodeType":"FunctionDefinition","parameters":{"id":5843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5838,"mutability":"mutable","name":"input","nameLocation":"15806:5:23","nodeType":"VariableDeclaration","scope":5939,"src":"15792:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5837,"name":"string","nodeType":"ElementaryTypeName","src":"15792:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5840,"mutability":"mutable","name":"begin","nameLocation":"15829:5:23","nodeType":"VariableDeclaration","scope":5939,"src":"15821:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5839,"name":"uint256","nodeType":"ElementaryTypeName","src":"15821:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5842,"mutability":"mutable","name":"end","nameLocation":"15852:3:23","nodeType":"VariableDeclaration","scope":5939,"src":"15844:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5841,"name":"uint256","nodeType":"ElementaryTypeName","src":"15844:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15782:79:23"},"returnParameters":{"id":5848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5845,"mutability":"mutable","name":"success","nameLocation":"15890:7:23","nodeType":"VariableDeclaration","scope":5939,"src":"15885:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5844,"name":"bool","nodeType":"ElementaryTypeName","src":"15885:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5847,"mutability":"mutable","name":"value","nameLocation":"15907:5:23","nodeType":"VariableDeclaration","scope":5939,"src":"15899:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5846,"name":"address","nodeType":"ElementaryTypeName","src":"15899:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15884:29:23"},"scope":6232,"src":"15758:889:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5998,"nodeType":"Block","src":"16716:461:23","statements":[{"assignments":[5947],"declarations":[{"constant":false,"id":5947,"mutability":"mutable","name":"value","nameLocation":"16732:5:23","nodeType":"VariableDeclaration","scope":5998,"src":"16726:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5946,"name":"uint8","nodeType":"ElementaryTypeName","src":"16726:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5952,"initialValue":{"arguments":[{"id":5950,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5941,"src":"16746:3:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":5949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16740:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5948,"name":"uint8","nodeType":"ElementaryTypeName","src":"16740:5:23","typeDescriptions":{}}},"id":5951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16740:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"16726:24:23"},{"id":5995,"nodeType":"UncheckedBlock","src":"16910:238:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5953,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5947,"src":"16938:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3437","id":5954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16946:2:23","typeDescriptions":{"typeIdentifier":"t_rational_47_by_1","typeString":"int_const 47"},"value":"47"},"src":"16938:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5956,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5947,"src":"16952:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3538","id":5957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16960:2:23","typeDescriptions":{"typeIdentifier":"t_rational_58_by_1","typeString":"int_const 58"},"value":"58"},"src":"16952:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16938:24:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5964,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5947,"src":"16998:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":5965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17006:2:23","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"16998:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5967,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5947,"src":"17012:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"313033","id":5968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17020:3:23","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"src":"17012:11:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16998:25:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5975,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5947,"src":"17059:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3634","id":5976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17067:2:23","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"17059:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5978,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5947,"src":"17073:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3731","id":5979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17081:2:23","typeDescriptions":{"typeIdentifier":"t_rational_71_by_1","typeString":"int_const 71"},"value":"71"},"src":"17073:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17059:24:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"expression":{"arguments":[{"id":5988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17127:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5987,"name":"uint8","nodeType":"ElementaryTypeName","src":"17127:5:23","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":5986,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"17122:4:23","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17122:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":5990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17134:3:23","memberName":"max","nodeType":"MemberAccess","src":"17122:15:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5945,"id":5991,"nodeType":"Return","src":"17115:22:23"},"id":5992,"nodeType":"IfStatement","src":"17055:82:23","trueBody":{"expression":{"id":5984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5982,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5947,"src":"17085:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3535","id":5983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17094:2:23","typeDescriptions":{"typeIdentifier":"t_rational_55_by_1","typeString":"int_const 55"},"value":"55"},"src":"17085:11:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5985,"nodeType":"ExpressionStatement","src":"17085:11:23"}},"id":5993,"nodeType":"IfStatement","src":"16994:143:23","trueBody":{"expression":{"id":5973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5971,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5947,"src":"17025:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3837","id":5972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17034:2:23","typeDescriptions":{"typeIdentifier":"t_rational_87_by_1","typeString":"int_const 87"},"value":"87"},"src":"17025:11:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5974,"nodeType":"ExpressionStatement","src":"17025:11:23"}},"id":5994,"nodeType":"IfStatement","src":"16934:203:23","trueBody":{"expression":{"id":5962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5960,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5947,"src":"16964:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3438","id":5961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16973:2:23","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"src":"16964:11:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5963,"nodeType":"ExpressionStatement","src":"16964:11:23"}}]},{"expression":{"id":5996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5947,"src":"17165:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5945,"id":5997,"nodeType":"Return","src":"17158:12:23"}]},"id":5999,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseChr","nameLocation":"16662:12:23","nodeType":"FunctionDefinition","parameters":{"id":5942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5941,"mutability":"mutable","name":"chr","nameLocation":"16682:3:23","nodeType":"VariableDeclaration","scope":5999,"src":"16675:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":5940,"name":"bytes1","nodeType":"ElementaryTypeName","src":"16675:6:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"16674:12:23"},"returnParameters":{"id":5945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5999,"src":"16709:5:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5943,"name":"uint8","nodeType":"ElementaryTypeName","src":"16709:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16708:7:23"},"scope":6232,"src":"16653:524:23","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":6206,"nodeType":"Block","src":"17984:2333:23","statements":[{"assignments":[6008],"declarations":[{"constant":false,"id":6008,"mutability":"mutable","name":"buffer","nameLocation":"18007:6:23","nodeType":"VariableDeclaration","scope":6206,"src":"17994:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6007,"name":"bytes","nodeType":"ElementaryTypeName","src":"17994:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6013,"initialValue":{"arguments":[{"id":6011,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6002,"src":"18022:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6010,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18016:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":6009,"name":"bytes","nodeType":"ElementaryTypeName","src":"18016:5:23","typeDescriptions":{}}},"id":6012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18016:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17994:34:23"},{"assignments":[6015],"declarations":[{"constant":false,"id":6015,"mutability":"mutable","name":"output","nameLocation":"18318:6:23","nodeType":"VariableDeclaration","scope":6206,"src":"18305:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6014,"name":"bytes","nodeType":"ElementaryTypeName","src":"18305:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6016,"nodeType":"VariableDeclarationStatement","src":"18305:19:23"},{"AST":{"nativeSrc":"18359:45:23","nodeType":"YulBlock","src":"18359:45:23","statements":[{"nativeSrc":"18373:21:23","nodeType":"YulAssignment","src":"18373:21:23","value":{"arguments":[{"kind":"number","nativeSrc":"18389:4:23","nodeType":"YulLiteral","src":"18389:4:23","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"18383:5:23","nodeType":"YulIdentifier","src":"18383:5:23"},"nativeSrc":"18383:11:23","nodeType":"YulFunctionCall","src":"18383:11:23"},"variableNames":[{"name":"output","nativeSrc":"18373:6:23","nodeType":"YulIdentifier","src":"18373:6:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6015,"isOffset":false,"isSlot":false,"src":"18373:6:23","valueSize":1}],"flags":["memory-safe"],"id":6017,"nodeType":"InlineAssembly","src":"18334:70:23"},{"assignments":[6019],"declarations":[{"constant":false,"id":6019,"mutability":"mutable","name":"outputLength","nameLocation":"18421:12:23","nodeType":"VariableDeclaration","scope":6206,"src":"18413:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6018,"name":"uint256","nodeType":"ElementaryTypeName","src":"18413:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6021,"initialValue":{"hexValue":"30","id":6020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18436:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18413:24:23"},{"body":{"id":6198,"nodeType":"Block","src":"18492:1584:23","statements":[{"assignments":[6034],"declarations":[{"constant":false,"id":6034,"mutability":"mutable","name":"char","nameLocation":"18512:4:23","nodeType":"VariableDeclaration","scope":6198,"src":"18506:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6033,"name":"uint8","nodeType":"ElementaryTypeName","src":"18506:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":6045,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":6040,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6008,"src":"18555:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6041,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6023,"src":"18563:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6039,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"18532:22:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":6042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18532:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18525:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":6037,"name":"bytes1","nodeType":"ElementaryTypeName","src":"18525:6:23","typeDescriptions":{}}},"id":6043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18525:41:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":6036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18519:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6035,"name":"uint8","nodeType":"ElementaryTypeName","src":"18519:5:23","typeDescriptions":{}}},"id":6044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18519:48:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"18506:61:23"},{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6046,"name":"SPECIAL_CHARS_LOOKUP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4754,"src":"18587:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18611:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6048,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"18616:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18611:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6050,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18610:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18587:34:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6052,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18586:36:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18626:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18586:41:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6055,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18585:43:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6196,"nodeType":"Block","src":"19972:94:23","statements":[{"expression":{"arguments":[{"id":6187,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"20014:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"20022:14:23","subExpression":{"id":6188,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"20022:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":6192,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"20045:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20038:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":6190,"name":"bytes1","nodeType":"ElementaryTypeName","src":"20038:6:23","typeDescriptions":{}}},"id":6193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20038:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":6186,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"19990:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19990:61:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6195,"nodeType":"ExpressionStatement","src":"19990:61:23"}]},"id":6197,"nodeType":"IfStatement","src":"18581:1485:23","trueBody":{"id":6185,"nodeType":"Block","src":"18630:1336:23","statements":[{"expression":{"arguments":[{"id":6057,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"18672:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18680:14:23","subExpression":{"id":6058,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"18680:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"5c","id":6060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18696:4:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""}],"id":6056,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"18648:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18648:53:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6062,"nodeType":"ExpressionStatement","src":"18648:53:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6063,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"18723:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783038","id":6064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18731:4:23","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"18723:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6073,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"18816:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783039","id":6074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18824:4:23","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"src":"18816:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6083,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"18909:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783061","id":6084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18917:4:23","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"src":"18909:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6093,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"19002:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783063","id":6094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19010:4:23","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"19002:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6103,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"19095:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783064","id":6104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19103:4:23","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"src":"19095:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6113,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"19188:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783563","id":6114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19196:4:23","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"19188:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6123,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"19282:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783232","id":6124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19290:4:23","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"19282:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6177,"nodeType":"Block","src":"19451:501:23","statements":[{"expression":{"arguments":[{"id":6135,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"19571:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19579:14:23","subExpression":{"id":6136,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"19579:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"75","id":6138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19595:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_32cefdcd8e794145c9af8dd1f4b1fbd92d6e547ae855553080fc8bd19c4883a0","typeString":"literal_string \"u\""},"value":"u"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_32cefdcd8e794145c9af8dd1f4b1fbd92d6e547ae855553080fc8bd19c4883a0","typeString":"literal_string \"u\""}],"id":6134,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"19547:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19547:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6140,"nodeType":"ExpressionStatement","src":"19547:52:23"},{"expression":{"arguments":[{"id":6142,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"19645:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19653:14:23","subExpression":{"id":6143,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"19653:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":6145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19669:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""}],"id":6141,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"19621:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19621:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6147,"nodeType":"ExpressionStatement","src":"19621:52:23"},{"expression":{"arguments":[{"id":6149,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"19719:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19727:14:23","subExpression":{"id":6150,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"19727:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":6152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19743:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""}],"id":6148,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"19695:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19695:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6154,"nodeType":"ExpressionStatement","src":"19695:52:23"},{"expression":{"arguments":[{"id":6156,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"19793:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19801:14:23","subExpression":{"id":6157,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"19801:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6159,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4738,"src":"19817:10:23","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":6163,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6160,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"19828:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":6161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19836:1:23","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19828:9:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19817:21:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":6155,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"19769:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19769:70:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6165,"nodeType":"ExpressionStatement","src":"19769:70:23"},{"expression":{"arguments":[{"id":6167,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"19885:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19893:14:23","subExpression":{"id":6168,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"19893:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6170,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4738,"src":"19909:10:23","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":6174,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6171,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"19920:4:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783066","id":6172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19927:4:23","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0x0f"},"src":"19920:11:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19909:23:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":6166,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"19861:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19861:72:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6176,"nodeType":"ExpressionStatement","src":"19861:72:23"}]},"id":6178,"nodeType":"IfStatement","src":"19278:674:23","trueBody":{"id":6133,"nodeType":"Block","src":"19296:149:23","statements":[{"expression":{"arguments":[{"id":6127,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"19398:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19406:14:23","subExpression":{"id":6128,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"19406:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"22","id":6130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19422:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""},"value":"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""}],"id":6126,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"19374:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19374:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6132,"nodeType":"ExpressionStatement","src":"19374:52:23"}]}},"id":6179,"nodeType":"IfStatement","src":"19184:768:23","trueBody":{"expression":{"arguments":[{"id":6117,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"19226:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19234:14:23","subExpression":{"id":6118,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"19234:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"5c","id":6120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19250:4:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""}],"id":6116,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"19202:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19202:53:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6122,"nodeType":"ExpressionStatement","src":"19202:53:23"}},"id":6180,"nodeType":"IfStatement","src":"19091:861:23","trueBody":{"expression":{"arguments":[{"id":6107,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"19133:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19141:14:23","subExpression":{"id":6108,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"19141:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"72","id":6110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19157:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_414f72a4d550cad29f17d9d99a4af64b3776ec5538cd440cef0f03fef2e9e010","typeString":"literal_string \"r\""},"value":"r"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_414f72a4d550cad29f17d9d99a4af64b3776ec5538cd440cef0f03fef2e9e010","typeString":"literal_string \"r\""}],"id":6106,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"19109:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19109:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6112,"nodeType":"ExpressionStatement","src":"19109:52:23"}},"id":6181,"nodeType":"IfStatement","src":"18998:954:23","trueBody":{"expression":{"arguments":[{"id":6097,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"19040:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19048:14:23","subExpression":{"id":6098,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"19048:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66","id":6100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19064:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_d1e8aeb79500496ef3dc2e57ba746a8315d048b7a664a2bf948db4fa91960483","typeString":"literal_string \"f\""},"value":"f"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_d1e8aeb79500496ef3dc2e57ba746a8315d048b7a664a2bf948db4fa91960483","typeString":"literal_string \"f\""}],"id":6096,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"19016:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19016:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6102,"nodeType":"ExpressionStatement","src":"19016:52:23"}},"id":6182,"nodeType":"IfStatement","src":"18905:1047:23","trueBody":{"expression":{"arguments":[{"id":6087,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"18947:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18955:14:23","subExpression":{"id":6088,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"18955:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"6e","id":6090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18971:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b4ecedb4964a40fe416b16c7bd8b46092040ec42ef0aa69e59f09872f105cf3","typeString":"literal_string \"n\""},"value":"n"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_4b4ecedb4964a40fe416b16c7bd8b46092040ec42ef0aa69e59f09872f105cf3","typeString":"literal_string \"n\""}],"id":6086,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"18923:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18923:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6092,"nodeType":"ExpressionStatement","src":"18923:52:23"}},"id":6183,"nodeType":"IfStatement","src":"18812:1140:23","trueBody":{"expression":{"arguments":[{"id":6077,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"18854:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18862:14:23","subExpression":{"id":6078,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"18862:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74","id":6080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18878:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_cac1bb71f0a97c8ac94ca9546b43178a9ad254c7b757ac07433aa6df35cd8089","typeString":"literal_string \"t\""},"value":"t"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_cac1bb71f0a97c8ac94ca9546b43178a9ad254c7b757ac07433aa6df35cd8089","typeString":"literal_string \"t\""}],"id":6076,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"18830:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18830:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6082,"nodeType":"ExpressionStatement","src":"18830:52:23"}},"id":6184,"nodeType":"IfStatement","src":"18719:1233:23","trueBody":{"expression":{"arguments":[{"id":6067,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"18761:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":6069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18769:14:23","subExpression":{"id":6068,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"18769:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"62","id":6070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18785:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510","typeString":"literal_string \"b\""},"value":"b"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510","typeString":"literal_string \"b\""}],"id":6066,"name":"_unsafeWriteBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6231,"src":"18737:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes1_$returns$__$","typeString":"function (bytes memory,uint256,bytes1) pure"}},"id":6071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18737:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6072,"nodeType":"ExpressionStatement","src":"18737:52:23"}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6026,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6023,"src":"18468:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":6027,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6008,"src":"18472:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18479:6:23","memberName":"length","nodeType":"MemberAccess","src":"18472:13:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18468:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6199,"initializationExpression":{"assignments":[6023],"declarations":[{"constant":false,"id":6023,"mutability":"mutable","name":"i","nameLocation":"18461:1:23","nodeType":"VariableDeclaration","scope":6199,"src":"18453:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6022,"name":"uint256","nodeType":"ElementaryTypeName","src":"18453:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6025,"initialValue":{"hexValue":"30","id":6024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18465:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18453:13:23"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"18487:3:23","subExpression":{"id":6030,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6023,"src":"18489:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6032,"nodeType":"ExpressionStatement","src":"18487:3:23"},"nodeType":"ForStatement","src":"18448:1628:23"},{"AST":{"nativeSrc":"20164:115:23","nodeType":"YulBlock","src":"20164:115:23","statements":[{"expression":{"arguments":[{"name":"output","nativeSrc":"20185:6:23","nodeType":"YulIdentifier","src":"20185:6:23"},{"name":"outputLength","nativeSrc":"20193:12:23","nodeType":"YulIdentifier","src":"20193:12:23"}],"functionName":{"name":"mstore","nativeSrc":"20178:6:23","nodeType":"YulIdentifier","src":"20178:6:23"},"nativeSrc":"20178:28:23","nodeType":"YulFunctionCall","src":"20178:28:23"},"nativeSrc":"20178:28:23","nodeType":"YulExpressionStatement","src":"20178:28:23"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20226:4:23","nodeType":"YulLiteral","src":"20226:4:23","type":"","value":"0x40"},{"arguments":[{"name":"output","nativeSrc":"20236:6:23","nodeType":"YulIdentifier","src":"20236:6:23"},{"arguments":[{"name":"outputLength","nativeSrc":"20248:12:23","nodeType":"YulIdentifier","src":"20248:12:23"},{"kind":"number","nativeSrc":"20262:4:23","nodeType":"YulLiteral","src":"20262:4:23","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20244:3:23","nodeType":"YulIdentifier","src":"20244:3:23"},"nativeSrc":"20244:23:23","nodeType":"YulFunctionCall","src":"20244:23:23"}],"functionName":{"name":"add","nativeSrc":"20232:3:23","nodeType":"YulIdentifier","src":"20232:3:23"},"nativeSrc":"20232:36:23","nodeType":"YulFunctionCall","src":"20232:36:23"}],"functionName":{"name":"mstore","nativeSrc":"20219:6:23","nodeType":"YulIdentifier","src":"20219:6:23"},"nativeSrc":"20219:50:23","nodeType":"YulFunctionCall","src":"20219:50:23"},"nativeSrc":"20219:50:23","nodeType":"YulExpressionStatement","src":"20219:50:23"}]},"evmVersion":"cancun","externalReferences":[{"declaration":6015,"isOffset":false,"isSlot":false,"src":"20185:6:23","valueSize":1},{"declaration":6015,"isOffset":false,"isSlot":false,"src":"20236:6:23","valueSize":1},{"declaration":6019,"isOffset":false,"isSlot":false,"src":"20193:12:23","valueSize":1},{"declaration":6019,"isOffset":false,"isSlot":false,"src":"20248:12:23","valueSize":1}],"flags":["memory-safe"],"id":6200,"nodeType":"InlineAssembly","src":"20139:140:23"},{"expression":{"arguments":[{"id":6203,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"20303:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20296:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":6201,"name":"string","nodeType":"ElementaryTypeName","src":"20296:6:23","typeDescriptions":{}}},"id":6204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20296:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6006,"id":6205,"nodeType":"Return","src":"20289:21:23"}]},"documentation":{"id":6000,"nodeType":"StructuredDocumentation","src":"17183:717:23","text":" @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\n WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\n NOTE: This function escapes backslashes (including those in \\uXXXX sequences) and the characters in ranges\n defined in section 2.5 of RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). All control characters in U+0000\n to U+001F are escaped (\\b, \\t, \\n, \\f, \\r use short form; others use \\u00XX). ECMAScript's `JSON.parse` does\n recover escaped unicode characters that are not in this range, but other tooling may provide different results."},"id":6207,"implemented":true,"kind":"function","modifiers":[],"name":"escapeJSON","nameLocation":"17914:10:23","nodeType":"FunctionDefinition","parameters":{"id":6003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6002,"mutability":"mutable","name":"input","nameLocation":"17939:5:23","nodeType":"VariableDeclaration","scope":6207,"src":"17925:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6001,"name":"string","nodeType":"ElementaryTypeName","src":"17925:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17924:21:23"},"returnParameters":{"id":6006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6005,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6207,"src":"17969:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6004,"name":"string","nodeType":"ElementaryTypeName","src":"17969:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17968:15:23"},"scope":6232,"src":"17905:2412:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6218,"nodeType":"Block","src":"20702:225:23","statements":[{"AST":{"nativeSrc":"20851:70:23","nodeType":"YulBlock","src":"20851:70:23","statements":[{"nativeSrc":"20865:46:23","nodeType":"YulAssignment","src":"20865:46:23","value":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"20888:6:23","nodeType":"YulIdentifier","src":"20888:6:23"},{"kind":"number","nativeSrc":"20896:4:23","nodeType":"YulLiteral","src":"20896:4:23","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20884:3:23","nodeType":"YulIdentifier","src":"20884:3:23"},"nativeSrc":"20884:17:23","nodeType":"YulFunctionCall","src":"20884:17:23"},{"name":"offset","nativeSrc":"20903:6:23","nodeType":"YulIdentifier","src":"20903:6:23"}],"functionName":{"name":"add","nativeSrc":"20880:3:23","nodeType":"YulIdentifier","src":"20880:3:23"},"nativeSrc":"20880:30:23","nodeType":"YulFunctionCall","src":"20880:30:23"}],"functionName":{"name":"mload","nativeSrc":"20874:5:23","nodeType":"YulIdentifier","src":"20874:5:23"},"nativeSrc":"20874:37:23","nodeType":"YulFunctionCall","src":"20874:37:23"},"variableNames":[{"name":"value","nativeSrc":"20865:5:23","nodeType":"YulIdentifier","src":"20865:5:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6210,"isOffset":false,"isSlot":false,"src":"20888:6:23","valueSize":1},{"declaration":6212,"isOffset":false,"isSlot":false,"src":"20903:6:23","valueSize":1},{"declaration":6215,"isOffset":false,"isSlot":false,"src":"20865:5:23","valueSize":1}],"flags":["memory-safe"],"id":6217,"nodeType":"InlineAssembly","src":"20826:95:23"}]},"documentation":{"id":6208,"nodeType":"StructuredDocumentation","src":"20323:268:23","text":" @dev Reads a bytes32 from a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."},"id":6219,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeReadBytesOffset","nameLocation":"20605:22:23","nodeType":"FunctionDefinition","parameters":{"id":6213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6210,"mutability":"mutable","name":"buffer","nameLocation":"20641:6:23","nodeType":"VariableDeclaration","scope":6219,"src":"20628:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6209,"name":"bytes","nodeType":"ElementaryTypeName","src":"20628:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6212,"mutability":"mutable","name":"offset","nameLocation":"20657:6:23","nodeType":"VariableDeclaration","scope":6219,"src":"20649:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6211,"name":"uint256","nodeType":"ElementaryTypeName","src":"20649:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20627:37:23"},"returnParameters":{"id":6216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6215,"mutability":"mutable","name":"value","nameLocation":"20695:5:23","nodeType":"VariableDeclaration","scope":6219,"src":"20687:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6214,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20687:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20686:15:23"},"scope":6232,"src":"20596:331:23","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":6230,"nodeType":"Block","src":"21300:235:23","statements":[{"AST":{"nativeSrc":"21449:80:23","nodeType":"YulBlock","src":"21449:80:23","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"21479:6:23","nodeType":"YulIdentifier","src":"21479:6:23"},{"kind":"number","nativeSrc":"21487:4:23","nodeType":"YulLiteral","src":"21487:4:23","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21475:3:23","nodeType":"YulIdentifier","src":"21475:3:23"},"nativeSrc":"21475:17:23","nodeType":"YulFunctionCall","src":"21475:17:23"},{"name":"offset","nativeSrc":"21494:6:23","nodeType":"YulIdentifier","src":"21494:6:23"}],"functionName":{"name":"add","nativeSrc":"21471:3:23","nodeType":"YulIdentifier","src":"21471:3:23"},"nativeSrc":"21471:30:23","nodeType":"YulFunctionCall","src":"21471:30:23"},{"arguments":[{"kind":"number","nativeSrc":"21507:3:23","nodeType":"YulLiteral","src":"21507:3:23","type":"","value":"248"},{"name":"value","nativeSrc":"21512:5:23","nodeType":"YulIdentifier","src":"21512:5:23"}],"functionName":{"name":"shr","nativeSrc":"21503:3:23","nodeType":"YulIdentifier","src":"21503:3:23"},"nativeSrc":"21503:15:23","nodeType":"YulFunctionCall","src":"21503:15:23"}],"functionName":{"name":"mstore8","nativeSrc":"21463:7:23","nodeType":"YulIdentifier","src":"21463:7:23"},"nativeSrc":"21463:56:23","nodeType":"YulFunctionCall","src":"21463:56:23"},"nativeSrc":"21463:56:23","nodeType":"YulExpressionStatement","src":"21463:56:23"}]},"evmVersion":"cancun","externalReferences":[{"declaration":6222,"isOffset":false,"isSlot":false,"src":"21479:6:23","valueSize":1},{"declaration":6224,"isOffset":false,"isSlot":false,"src":"21494:6:23","valueSize":1},{"declaration":6226,"isOffset":false,"isSlot":false,"src":"21512:5:23","valueSize":1}],"flags":["memory-safe"],"id":6229,"nodeType":"InlineAssembly","src":"21424:105:23"}]},"documentation":{"id":6220,"nodeType":"StructuredDocumentation","src":"20933:265:23","text":" @dev Write a bytes1 to a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."},"id":6231,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeWriteBytesOffset","nameLocation":"21212:23:23","nodeType":"FunctionDefinition","parameters":{"id":6227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6222,"mutability":"mutable","name":"buffer","nameLocation":"21249:6:23","nodeType":"VariableDeclaration","scope":6231,"src":"21236:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6221,"name":"bytes","nodeType":"ElementaryTypeName","src":"21236:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6224,"mutability":"mutable","name":"offset","nameLocation":"21265:6:23","nodeType":"VariableDeclaration","scope":6231,"src":"21257:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6223,"name":"uint256","nodeType":"ElementaryTypeName","src":"21257:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6226,"mutability":"mutable","name":"value","nameLocation":"21280:5:23","nodeType":"VariableDeclaration","scope":6231,"src":"21273:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":6225,"name":"bytes1","nodeType":"ElementaryTypeName","src":"21273:6:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"21235:51:23"},"returnParameters":{"id":6228,"nodeType":"ParameterList","parameters":[],"src":"21300:0:23"},"scope":6232,"src":"21203:332:23","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":6233,"src":"332:21205:23","usedErrors":[4761,4764,4767],"usedEvents":[]}],"src":"101:21437:23"},"id":23},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[6256],"IERC165":[6268]},"id":6257,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6234,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:24"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":6236,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6257,"sourceUnit":6269,"src":"140:38:24","symbolAliases":[{"foreign":{"id":6235,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6268,"src":"148:7:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6238,"name":"IERC165","nameLocations":["688:7:24"],"nodeType":"IdentifierPath","referencedDeclaration":6268,"src":"688:7:24"},"id":6239,"nodeType":"InheritanceSpecifier","src":"688:7:24"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":6237,"nodeType":"StructuredDocumentation","src":"180:479:24","text":" @dev Implementation of the {IERC165} interface.\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 ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"id":6256,"linearizedBaseContracts":[6256,6268],"name":"ERC165","nameLocation":"678:6:24","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[6267],"body":{"id":6254,"nodeType":"Block","src":"812:64:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6247,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"829:11:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":6249,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6268,"src":"849:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$6268_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$6268_$","typeString":"type(contract IERC165)"}],"id":6248,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"844:4:24","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"844:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$6268","typeString":"type(contract IERC165)"}},"id":6251,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"858:11:24","memberName":"interfaceId","nodeType":"MemberAccess","src":"844:25:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"829:40:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6246,"id":6253,"nodeType":"Return","src":"822:47:24"}]},"documentation":{"id":6240,"nodeType":"StructuredDocumentation","src":"702:23:24","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":6255,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"739:17:24","nodeType":"FunctionDefinition","parameters":{"id":6243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6242,"mutability":"mutable","name":"interfaceId","nameLocation":"764:11:24","nodeType":"VariableDeclaration","scope":6255,"src":"757:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6241,"name":"bytes4","nodeType":"ElementaryTypeName","src":"757:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"756:20:24"},"returnParameters":{"id":6246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6255,"src":"806:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6244,"name":"bool","nodeType":"ElementaryTypeName","src":"806:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"805:6:24"},"scope":6256,"src":"730:146:24","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":6257,"src":"660:218:24","usedErrors":[],"usedEvents":[]}],"src":"114:765:24"},"id":24},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[6268]},"id":6269,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6258,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"115:25:25"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":6259,"nodeType":"StructuredDocumentation","src":"142:280:25","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":6268,"linearizedBaseContracts":[6268],"name":"IERC165","nameLocation":"433:7:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6260,"nodeType":"StructuredDocumentation","src":"447:340:25","text":" @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 This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":6267,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"801:17:25","nodeType":"FunctionDefinition","parameters":{"id":6263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6262,"mutability":"mutable","name":"interfaceId","nameLocation":"826:11:25","nodeType":"VariableDeclaration","scope":6267,"src":"819:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6261,"name":"bytes4","nodeType":"ElementaryTypeName","src":"819:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"818:20:25"},"returnParameters":{"id":6266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6267,"src":"862:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6264,"name":"bool","nodeType":"ElementaryTypeName","src":"862:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"861:6:25"},"scope":6268,"src":"792:76:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6269,"src":"423:447:25","usedErrors":[],"usedEvents":[]}],"src":"115:756:25"},"id":25},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[7925],"Panic":[4377],"SafeCast":[9690]},"id":7926,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6270,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:26"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"../Panic.sol","id":6272,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7926,"sourceUnit":4378,"src":"129:35:26","symbolAliases":[{"foreign":{"id":6271,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"137:5:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":6274,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7926,"sourceUnit":9691,"src":"165:40:26","symbolAliases":[{"foreign":{"id":6273,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"173:8:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":6275,"nodeType":"StructuredDocumentation","src":"207:73:26","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":7925,"linearizedBaseContracts":[7925],"name":"Math","nameLocation":"289:4:26","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":6280,"members":[{"id":6276,"name":"Floor","nameLocation":"324:5:26","nodeType":"EnumValue","src":"324:5:26"},{"id":6277,"name":"Ceil","nameLocation":"367:4:26","nodeType":"EnumValue","src":"367:4:26"},{"id":6278,"name":"Trunc","nameLocation":"409:5:26","nodeType":"EnumValue","src":"409:5:26"},{"id":6279,"name":"Expand","nameLocation":"439:6:26","nodeType":"EnumValue","src":"439:6:26"}],"name":"Rounding","nameLocation":"305:8:26","nodeType":"EnumDefinition","src":"300:169:26"},{"body":{"id":6293,"nodeType":"Block","src":"731:112:26","statements":[{"AST":{"nativeSrc":"766:71:26","nodeType":"YulBlock","src":"766:71:26","statements":[{"nativeSrc":"780:16:26","nodeType":"YulAssignment","src":"780:16:26","value":{"arguments":[{"name":"a","nativeSrc":"791:1:26","nodeType":"YulIdentifier","src":"791:1:26"},{"name":"b","nativeSrc":"794:1:26","nodeType":"YulIdentifier","src":"794:1:26"}],"functionName":{"name":"add","nativeSrc":"787:3:26","nodeType":"YulIdentifier","src":"787:3:26"},"nativeSrc":"787:9:26","nodeType":"YulFunctionCall","src":"787:9:26"},"variableNames":[{"name":"low","nativeSrc":"780:3:26","nodeType":"YulIdentifier","src":"780:3:26"}]},{"nativeSrc":"809:18:26","nodeType":"YulAssignment","src":"809:18:26","value":{"arguments":[{"name":"low","nativeSrc":"820:3:26","nodeType":"YulIdentifier","src":"820:3:26"},{"name":"a","nativeSrc":"825:1:26","nodeType":"YulIdentifier","src":"825:1:26"}],"functionName":{"name":"lt","nativeSrc":"817:2:26","nodeType":"YulIdentifier","src":"817:2:26"},"nativeSrc":"817:10:26","nodeType":"YulFunctionCall","src":"817:10:26"},"variableNames":[{"name":"high","nativeSrc":"809:4:26","nodeType":"YulIdentifier","src":"809:4:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6283,"isOffset":false,"isSlot":false,"src":"791:1:26","valueSize":1},{"declaration":6283,"isOffset":false,"isSlot":false,"src":"825:1:26","valueSize":1},{"declaration":6285,"isOffset":false,"isSlot":false,"src":"794:1:26","valueSize":1},{"declaration":6288,"isOffset":false,"isSlot":false,"src":"809:4:26","valueSize":1},{"declaration":6290,"isOffset":false,"isSlot":false,"src":"780:3:26","valueSize":1},{"declaration":6290,"isOffset":false,"isSlot":false,"src":"820:3:26","valueSize":1}],"flags":["memory-safe"],"id":6292,"nodeType":"InlineAssembly","src":"741:96:26"}]},"documentation":{"id":6281,"nodeType":"StructuredDocumentation","src":"475:163:26","text":" @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low."},"id":6294,"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:26","nodeType":"FunctionDefinition","parameters":{"id":6286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6283,"mutability":"mutable","name":"a","nameLocation":"667:1:26","nodeType":"VariableDeclaration","scope":6294,"src":"659:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6282,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6285,"mutability":"mutable","name":"b","nameLocation":"678:1:26","nodeType":"VariableDeclaration","scope":6294,"src":"670:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6284,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:26"},"returnParameters":{"id":6291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6288,"mutability":"mutable","name":"high","nameLocation":"712:4:26","nodeType":"VariableDeclaration","scope":6294,"src":"704:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6287,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6290,"mutability":"mutable","name":"low","nameLocation":"726:3:26","nodeType":"VariableDeclaration","scope":6294,"src":"718:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6289,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:26"},"scope":7925,"src":"643:200:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6307,"nodeType":"Block","src":"1115:462:26","statements":[{"AST":{"nativeSrc":"1437:134:26","nodeType":"YulBlock","src":"1437:134:26","statements":[{"nativeSrc":"1451:30:26","nodeType":"YulVariableDeclaration","src":"1451:30:26","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:26","nodeType":"YulIdentifier","src":"1468:1:26"},{"name":"b","nativeSrc":"1471:1:26","nodeType":"YulIdentifier","src":"1471:1:26"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:26","nodeType":"YulLiteral","src":"1478:1:26","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:26","nodeType":"YulIdentifier","src":"1474:3:26"},"nativeSrc":"1474:6:26","nodeType":"YulFunctionCall","src":"1474:6:26"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:26","nodeType":"YulIdentifier","src":"1461:6:26"},"nativeSrc":"1461:20:26","nodeType":"YulFunctionCall","src":"1461:20:26"},"variables":[{"name":"mm","nativeSrc":"1455:2:26","nodeType":"YulTypedName","src":"1455:2:26","type":""}]},{"nativeSrc":"1494:16:26","nodeType":"YulAssignment","src":"1494:16:26","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:26","nodeType":"YulIdentifier","src":"1505:1:26"},{"name":"b","nativeSrc":"1508:1:26","nodeType":"YulIdentifier","src":"1508:1:26"}],"functionName":{"name":"mul","nativeSrc":"1501:3:26","nodeType":"YulIdentifier","src":"1501:3:26"},"nativeSrc":"1501:9:26","nodeType":"YulFunctionCall","src":"1501:9:26"},"variableNames":[{"name":"low","nativeSrc":"1494:3:26","nodeType":"YulIdentifier","src":"1494:3:26"}]},{"nativeSrc":"1523:38:26","nodeType":"YulAssignment","src":"1523:38:26","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:26","nodeType":"YulIdentifier","src":"1539:2:26"},{"name":"low","nativeSrc":"1543:3:26","nodeType":"YulIdentifier","src":"1543:3:26"}],"functionName":{"name":"sub","nativeSrc":"1535:3:26","nodeType":"YulIdentifier","src":"1535:3:26"},"nativeSrc":"1535:12:26","nodeType":"YulFunctionCall","src":"1535:12:26"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:26","nodeType":"YulIdentifier","src":"1552:2:26"},{"name":"low","nativeSrc":"1556:3:26","nodeType":"YulIdentifier","src":"1556:3:26"}],"functionName":{"name":"lt","nativeSrc":"1549:2:26","nodeType":"YulIdentifier","src":"1549:2:26"},"nativeSrc":"1549:11:26","nodeType":"YulFunctionCall","src":"1549:11:26"}],"functionName":{"name":"sub","nativeSrc":"1531:3:26","nodeType":"YulIdentifier","src":"1531:3:26"},"nativeSrc":"1531:30:26","nodeType":"YulFunctionCall","src":"1531:30:26"},"variableNames":[{"name":"high","nativeSrc":"1523:4:26","nodeType":"YulIdentifier","src":"1523:4:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6297,"isOffset":false,"isSlot":false,"src":"1468:1:26","valueSize":1},{"declaration":6297,"isOffset":false,"isSlot":false,"src":"1505:1:26","valueSize":1},{"declaration":6299,"isOffset":false,"isSlot":false,"src":"1471:1:26","valueSize":1},{"declaration":6299,"isOffset":false,"isSlot":false,"src":"1508:1:26","valueSize":1},{"declaration":6302,"isOffset":false,"isSlot":false,"src":"1523:4:26","valueSize":1},{"declaration":6304,"isOffset":false,"isSlot":false,"src":"1494:3:26","valueSize":1},{"declaration":6304,"isOffset":false,"isSlot":false,"src":"1543:3:26","valueSize":1},{"declaration":6304,"isOffset":false,"isSlot":false,"src":"1556:3:26","valueSize":1}],"flags":["memory-safe"],"id":6306,"nodeType":"InlineAssembly","src":"1412:159:26"}]},"documentation":{"id":6295,"nodeType":"StructuredDocumentation","src":"849:173:26","text":" @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low."},"id":6308,"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:26","nodeType":"FunctionDefinition","parameters":{"id":6300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6297,"mutability":"mutable","name":"a","nameLocation":"1051:1:26","nodeType":"VariableDeclaration","scope":6308,"src":"1043:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6296,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6299,"mutability":"mutable","name":"b","nameLocation":"1062:1:26","nodeType":"VariableDeclaration","scope":6308,"src":"1054:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6298,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:26"},"returnParameters":{"id":6305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6302,"mutability":"mutable","name":"high","nameLocation":"1096:4:26","nodeType":"VariableDeclaration","scope":6308,"src":"1088:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6301,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6304,"mutability":"mutable","name":"low","nameLocation":"1110:3:26","nodeType":"VariableDeclaration","scope":6308,"src":"1102:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6303,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:26"},"scope":7925,"src":"1027:550:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6342,"nodeType":"Block","src":"1784:149:26","statements":[{"id":6341,"nodeType":"UncheckedBlock","src":"1794:133:26","statements":[{"assignments":[6321],"declarations":[{"constant":false,"id":6321,"mutability":"mutable","name":"c","nameLocation":"1826:1:26","nodeType":"VariableDeclaration","scope":6341,"src":"1818:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6320,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6325,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"1830:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6323,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6313,"src":"1834:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:26"},{"expression":{"id":6330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6326,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"1849:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6327,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6321,"src":"1859:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6328,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"1864:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6331,"nodeType":"ExpressionStatement","src":"1849:16:26"},{"expression":{"id":6339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6332,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"1879:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6333,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6321,"src":"1888:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":6336,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"1908:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6334,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"1892:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":6335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"1892:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6340,"nodeType":"ExpressionStatement","src":"1879:37:26"}]}]},"documentation":{"id":6309,"nodeType":"StructuredDocumentation","src":"1583:105:26","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"id":6343,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:26","nodeType":"FunctionDefinition","parameters":{"id":6314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6311,"mutability":"mutable","name":"a","nameLocation":"1717:1:26","nodeType":"VariableDeclaration","scope":6343,"src":"1709:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6310,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6313,"mutability":"mutable","name":"b","nameLocation":"1728:1:26","nodeType":"VariableDeclaration","scope":6343,"src":"1720:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6312,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:26"},"returnParameters":{"id":6319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6316,"mutability":"mutable","name":"success","nameLocation":"1759:7:26","nodeType":"VariableDeclaration","scope":6343,"src":"1754:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6315,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6318,"mutability":"mutable","name":"result","nameLocation":"1776:6:26","nodeType":"VariableDeclaration","scope":6343,"src":"1768:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6317,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:26"},"scope":7925,"src":"1693:240:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6377,"nodeType":"Block","src":"2143:149:26","statements":[{"id":6376,"nodeType":"UncheckedBlock","src":"2153:133:26","statements":[{"assignments":[6356],"declarations":[{"constant":false,"id":6356,"mutability":"mutable","name":"c","nameLocation":"2185:1:26","nodeType":"VariableDeclaration","scope":6376,"src":"2177:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6355,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6360,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6357,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"2189:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6358,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6348,"src":"2193:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:26"},{"expression":{"id":6365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6361,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"2208:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6362,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6356,"src":"2218:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6363,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"2223:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6366,"nodeType":"ExpressionStatement","src":"2208:16:26"},{"expression":{"id":6374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6367,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6353,"src":"2238:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6368,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6356,"src":"2247:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":6371,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"2267:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6369,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"2251:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":6370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"2251:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6375,"nodeType":"ExpressionStatement","src":"2238:37:26"}]}]},"documentation":{"id":6344,"nodeType":"StructuredDocumentation","src":"1939:108:26","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"id":6378,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:26","nodeType":"FunctionDefinition","parameters":{"id":6349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6346,"mutability":"mutable","name":"a","nameLocation":"2076:1:26","nodeType":"VariableDeclaration","scope":6378,"src":"2068:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6345,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6348,"mutability":"mutable","name":"b","nameLocation":"2087:1:26","nodeType":"VariableDeclaration","scope":6378,"src":"2079:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6347,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:26"},"returnParameters":{"id":6354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6351,"mutability":"mutable","name":"success","nameLocation":"2118:7:26","nodeType":"VariableDeclaration","scope":6378,"src":"2113:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6350,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6353,"mutability":"mutable","name":"result","nameLocation":"2135:6:26","nodeType":"VariableDeclaration","scope":6378,"src":"2127:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6352,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:26"},"scope":7925,"src":"2052:240:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6407,"nodeType":"Block","src":"2505:391:26","statements":[{"id":6406,"nodeType":"UncheckedBlock","src":"2515:375:26","statements":[{"assignments":[6391],"declarations":[{"constant":false,"id":6391,"mutability":"mutable","name":"c","nameLocation":"2547:1:26","nodeType":"VariableDeclaration","scope":6406,"src":"2539:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6390,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6395,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6392,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6381,"src":"2551:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6393,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6383,"src":"2555:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:26"},{"AST":{"nativeSrc":"2595:188:26","nodeType":"YulBlock","src":"2595:188:26","statements":[{"nativeSrc":"2727:42:26","nodeType":"YulAssignment","src":"2727:42:26","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:26","nodeType":"YulIdentifier","src":"2748:1:26"},{"name":"a","nativeSrc":"2751:1:26","nodeType":"YulIdentifier","src":"2751:1:26"}],"functionName":{"name":"div","nativeSrc":"2744:3:26","nodeType":"YulIdentifier","src":"2744:3:26"},"nativeSrc":"2744:9:26","nodeType":"YulFunctionCall","src":"2744:9:26"},{"name":"b","nativeSrc":"2755:1:26","nodeType":"YulIdentifier","src":"2755:1:26"}],"functionName":{"name":"eq","nativeSrc":"2741:2:26","nodeType":"YulIdentifier","src":"2741:2:26"},"nativeSrc":"2741:16:26","nodeType":"YulFunctionCall","src":"2741:16:26"},{"arguments":[{"name":"a","nativeSrc":"2766:1:26","nodeType":"YulIdentifier","src":"2766:1:26"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:26","nodeType":"YulIdentifier","src":"2759:6:26"},"nativeSrc":"2759:9:26","nodeType":"YulFunctionCall","src":"2759:9:26"}],"functionName":{"name":"or","nativeSrc":"2738:2:26","nodeType":"YulIdentifier","src":"2738:2:26"},"nativeSrc":"2738:31:26","nodeType":"YulFunctionCall","src":"2738:31:26"},"variableNames":[{"name":"success","nativeSrc":"2727:7:26","nodeType":"YulIdentifier","src":"2727:7:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6381,"isOffset":false,"isSlot":false,"src":"2751:1:26","valueSize":1},{"declaration":6381,"isOffset":false,"isSlot":false,"src":"2766:1:26","valueSize":1},{"declaration":6383,"isOffset":false,"isSlot":false,"src":"2755:1:26","valueSize":1},{"declaration":6391,"isOffset":false,"isSlot":false,"src":"2748:1:26","valueSize":1},{"declaration":6386,"isOffset":false,"isSlot":false,"src":"2727:7:26","valueSize":1}],"flags":["memory-safe"],"id":6396,"nodeType":"InlineAssembly","src":"2570:213:26"},{"expression":{"id":6404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6397,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"2842:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6398,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6391,"src":"2851:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":6401,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6386,"src":"2871:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6399,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"2855:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":6400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"2855:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6405,"nodeType":"ExpressionStatement","src":"2842:37:26"}]}]},"documentation":{"id":6379,"nodeType":"StructuredDocumentation","src":"2298:111:26","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"id":6408,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:26","nodeType":"FunctionDefinition","parameters":{"id":6384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6381,"mutability":"mutable","name":"a","nameLocation":"2438:1:26","nodeType":"VariableDeclaration","scope":6408,"src":"2430:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6380,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6383,"mutability":"mutable","name":"b","nameLocation":"2449:1:26","nodeType":"VariableDeclaration","scope":6408,"src":"2441:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6382,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:26"},"returnParameters":{"id":6389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6386,"mutability":"mutable","name":"success","nameLocation":"2480:7:26","nodeType":"VariableDeclaration","scope":6408,"src":"2475:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6385,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6388,"mutability":"mutable","name":"result","nameLocation":"2497:6:26","nodeType":"VariableDeclaration","scope":6408,"src":"2489:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6387,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:26"},"scope":7925,"src":"2414:482:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6428,"nodeType":"Block","src":"3111:231:26","statements":[{"id":6427,"nodeType":"UncheckedBlock","src":"3121:215:26","statements":[{"expression":{"id":6424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6420,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6416,"src":"3145:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6421,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6413,"src":"3155:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6425,"nodeType":"ExpressionStatement","src":"3145:15:26"},{"AST":{"nativeSrc":"3199:127:26","nodeType":"YulBlock","src":"3199:127:26","statements":[{"nativeSrc":"3293:19:26","nodeType":"YulAssignment","src":"3293:19:26","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:26","nodeType":"YulIdentifier","src":"3307:1:26"},{"name":"b","nativeSrc":"3310:1:26","nodeType":"YulIdentifier","src":"3310:1:26"}],"functionName":{"name":"div","nativeSrc":"3303:3:26","nodeType":"YulIdentifier","src":"3303:3:26"},"nativeSrc":"3303:9:26","nodeType":"YulFunctionCall","src":"3303:9:26"},"variableNames":[{"name":"result","nativeSrc":"3293:6:26","nodeType":"YulIdentifier","src":"3293:6:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6411,"isOffset":false,"isSlot":false,"src":"3307:1:26","valueSize":1},{"declaration":6413,"isOffset":false,"isSlot":false,"src":"3310:1:26","valueSize":1},{"declaration":6418,"isOffset":false,"isSlot":false,"src":"3293:6:26","valueSize":1}],"flags":["memory-safe"],"id":6426,"nodeType":"InlineAssembly","src":"3174:152:26"}]}]},"documentation":{"id":6409,"nodeType":"StructuredDocumentation","src":"2902:113:26","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":6429,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:26","nodeType":"FunctionDefinition","parameters":{"id":6414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6411,"mutability":"mutable","name":"a","nameLocation":"3044:1:26","nodeType":"VariableDeclaration","scope":6429,"src":"3036:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6410,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6413,"mutability":"mutable","name":"b","nameLocation":"3055:1:26","nodeType":"VariableDeclaration","scope":6429,"src":"3047:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6412,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:26"},"returnParameters":{"id":6419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6416,"mutability":"mutable","name":"success","nameLocation":"3086:7:26","nodeType":"VariableDeclaration","scope":6429,"src":"3081:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6415,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6418,"mutability":"mutable","name":"result","nameLocation":"3103:6:26","nodeType":"VariableDeclaration","scope":6429,"src":"3095:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6417,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:26"},"scope":7925,"src":"3020:322:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6449,"nodeType":"Block","src":"3567:231:26","statements":[{"id":6448,"nodeType":"UncheckedBlock","src":"3577:215:26","statements":[{"expression":{"id":6445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6441,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6437,"src":"3601:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6442,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6434,"src":"3611:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6446,"nodeType":"ExpressionStatement","src":"3601:15:26"},{"AST":{"nativeSrc":"3655:127:26","nodeType":"YulBlock","src":"3655:127:26","statements":[{"nativeSrc":"3749:19:26","nodeType":"YulAssignment","src":"3749:19:26","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:26","nodeType":"YulIdentifier","src":"3763:1:26"},{"name":"b","nativeSrc":"3766:1:26","nodeType":"YulIdentifier","src":"3766:1:26"}],"functionName":{"name":"mod","nativeSrc":"3759:3:26","nodeType":"YulIdentifier","src":"3759:3:26"},"nativeSrc":"3759:9:26","nodeType":"YulFunctionCall","src":"3759:9:26"},"variableNames":[{"name":"result","nativeSrc":"3749:6:26","nodeType":"YulIdentifier","src":"3749:6:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6432,"isOffset":false,"isSlot":false,"src":"3763:1:26","valueSize":1},{"declaration":6434,"isOffset":false,"isSlot":false,"src":"3766:1:26","valueSize":1},{"declaration":6439,"isOffset":false,"isSlot":false,"src":"3749:6:26","valueSize":1}],"flags":["memory-safe"],"id":6447,"nodeType":"InlineAssembly","src":"3630:152:26"}]}]},"documentation":{"id":6430,"nodeType":"StructuredDocumentation","src":"3348:123:26","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":6450,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:26","nodeType":"FunctionDefinition","parameters":{"id":6435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6432,"mutability":"mutable","name":"a","nameLocation":"3500:1:26","nodeType":"VariableDeclaration","scope":6450,"src":"3492:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6431,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6434,"mutability":"mutable","name":"b","nameLocation":"3511:1:26","nodeType":"VariableDeclaration","scope":6450,"src":"3503:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6433,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:26"},"returnParameters":{"id":6440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6437,"mutability":"mutable","name":"success","nameLocation":"3542:7:26","nodeType":"VariableDeclaration","scope":6450,"src":"3537:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6436,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6439,"mutability":"mutable","name":"result","nameLocation":"3559:6:26","nodeType":"VariableDeclaration","scope":6450,"src":"3551:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6438,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:26"},"scope":7925,"src":"3476:322:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6479,"nodeType":"Block","src":"3989:122:26","statements":[{"assignments":[6461,6463],"declarations":[{"constant":false,"id":6461,"mutability":"mutable","name":"success","nameLocation":"4005:7:26","nodeType":"VariableDeclaration","scope":6479,"src":"4000:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6460,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6463,"mutability":"mutable","name":"result","nameLocation":"4022:6:26","nodeType":"VariableDeclaration","scope":6479,"src":"4014:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6462,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6468,"initialValue":{"arguments":[{"id":6465,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6453,"src":"4039:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6466,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"4042:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6464,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6343,"src":"4032:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":6467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:26"},{"expression":{"arguments":[{"id":6470,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6461,"src":"4069:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6471,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"4078:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":6474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6473,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:26","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":6472,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"4086:4:26","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":6476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:26","memberName":"max","nodeType":"MemberAccess","src":"4086:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6469,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6557,"src":"4061:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6459,"id":6478,"nodeType":"Return","src":"4054:50:26"}]},"documentation":{"id":6451,"nodeType":"StructuredDocumentation","src":"3804:103:26","text":" @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":6480,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:26","nodeType":"FunctionDefinition","parameters":{"id":6456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6453,"mutability":"mutable","name":"a","nameLocation":"3943:1:26","nodeType":"VariableDeclaration","scope":6480,"src":"3935:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6452,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6455,"mutability":"mutable","name":"b","nameLocation":"3954:1:26","nodeType":"VariableDeclaration","scope":6480,"src":"3946:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6454,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:26"},"returnParameters":{"id":6459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6458,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6480,"src":"3980:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6457,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:26"},"scope":7925,"src":"3912:199:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6499,"nodeType":"Block","src":"4294:73:26","statements":[{"assignments":[null,6491],"declarations":[null,{"constant":false,"id":6491,"mutability":"mutable","name":"result","nameLocation":"4315:6:26","nodeType":"VariableDeclaration","scope":6499,"src":"4307:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6490,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6496,"initialValue":{"arguments":[{"id":6493,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6483,"src":"4332:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6485,"src":"4335:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6492,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6378,"src":"4325:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":6495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:26"},{"expression":{"id":6497,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6491,"src":"4354:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6489,"id":6498,"nodeType":"Return","src":"4347:13:26"}]},"documentation":{"id":6481,"nodeType":"StructuredDocumentation","src":"4117:95:26","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"id":6500,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:26","nodeType":"FunctionDefinition","parameters":{"id":6486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6483,"mutability":"mutable","name":"a","nameLocation":"4248:1:26","nodeType":"VariableDeclaration","scope":6500,"src":"4240:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6482,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6485,"mutability":"mutable","name":"b","nameLocation":"4259:1:26","nodeType":"VariableDeclaration","scope":6500,"src":"4251:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6484,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:26"},"returnParameters":{"id":6489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6488,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6500,"src":"4285:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6487,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:26"},"scope":7925,"src":"4217:150:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6529,"nodeType":"Block","src":"4564:122:26","statements":[{"assignments":[6511,6513],"declarations":[{"constant":false,"id":6511,"mutability":"mutable","name":"success","nameLocation":"4580:7:26","nodeType":"VariableDeclaration","scope":6529,"src":"4575:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6510,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6513,"mutability":"mutable","name":"result","nameLocation":"4597:6:26","nodeType":"VariableDeclaration","scope":6529,"src":"4589:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6512,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6518,"initialValue":{"arguments":[{"id":6515,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6503,"src":"4614:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6516,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6505,"src":"4617:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6514,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"4607:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":6517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:26"},{"expression":{"arguments":[{"id":6520,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6511,"src":"4644:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6521,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6513,"src":"4653:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":6524,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6523,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:26","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":6522,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"4661:4:26","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":6526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:26","memberName":"max","nodeType":"MemberAccess","src":"4661:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6519,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6557,"src":"4636:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6509,"id":6528,"nodeType":"Return","src":"4629:50:26"}]},"documentation":{"id":6501,"nodeType":"StructuredDocumentation","src":"4373:109:26","text":" @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":6530,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:26","nodeType":"FunctionDefinition","parameters":{"id":6506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6503,"mutability":"mutable","name":"a","nameLocation":"4518:1:26","nodeType":"VariableDeclaration","scope":6530,"src":"4510:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6502,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6505,"mutability":"mutable","name":"b","nameLocation":"4529:1:26","nodeType":"VariableDeclaration","scope":6530,"src":"4521:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6504,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:26"},"returnParameters":{"id":6509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6508,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6530,"src":"4555:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6507,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:26"},"scope":7925,"src":"4487:199:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6556,"nodeType":"Block","src":"5174:207:26","statements":[{"id":6555,"nodeType":"UncheckedBlock","src":"5184:191:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6542,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6537,"src":"5322:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6543,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6535,"src":"5328:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":6544,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6537,"src":"5332:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5328:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6546,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5327:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":6549,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6533,"src":"5353:9:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6547,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"5337:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":6548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5346:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"5337:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5337:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5327:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6552,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5326:38:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5322:42:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6541,"id":6554,"nodeType":"Return","src":"5315:49:26"}]}]},"documentation":{"id":6531,"nodeType":"StructuredDocumentation","src":"4692:390:26","text":" @dev Branchless ternary evaluation for `condition ? a : b`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `condition ? a : b`) to only compute\n one branch when needed, making this function more expensive."},"id":6557,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5096:7:26","nodeType":"FunctionDefinition","parameters":{"id":6538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6533,"mutability":"mutable","name":"condition","nameLocation":"5109:9:26","nodeType":"VariableDeclaration","scope":6557,"src":"5104:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6532,"name":"bool","nodeType":"ElementaryTypeName","src":"5104:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6535,"mutability":"mutable","name":"a","nameLocation":"5128:1:26","nodeType":"VariableDeclaration","scope":6557,"src":"5120:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6534,"name":"uint256","nodeType":"ElementaryTypeName","src":"5120:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6537,"mutability":"mutable","name":"b","nameLocation":"5139:1:26","nodeType":"VariableDeclaration","scope":6557,"src":"5131:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6536,"name":"uint256","nodeType":"ElementaryTypeName","src":"5131:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5103:38:26"},"returnParameters":{"id":6541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6540,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6557,"src":"5165:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6539,"name":"uint256","nodeType":"ElementaryTypeName","src":"5165:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5164:9:26"},"scope":7925,"src":"5087:294:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6575,"nodeType":"Block","src":"5518:44:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6568,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6560,"src":"5543:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6569,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6562,"src":"5547:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5543:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6571,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6560,"src":"5550:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6572,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6562,"src":"5553:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6567,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6557,"src":"5535:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:20:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6566,"id":6574,"nodeType":"Return","src":"5528:27:26"}]},"documentation":{"id":6558,"nodeType":"StructuredDocumentation","src":"5387:59:26","text":" @dev Returns the largest of two numbers."},"id":6576,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5460:3:26","nodeType":"FunctionDefinition","parameters":{"id":6563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6560,"mutability":"mutable","name":"a","nameLocation":"5472:1:26","nodeType":"VariableDeclaration","scope":6576,"src":"5464:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6559,"name":"uint256","nodeType":"ElementaryTypeName","src":"5464:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6562,"mutability":"mutable","name":"b","nameLocation":"5483:1:26","nodeType":"VariableDeclaration","scope":6576,"src":"5475:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6561,"name":"uint256","nodeType":"ElementaryTypeName","src":"5475:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5463:22:26"},"returnParameters":{"id":6566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6565,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6576,"src":"5509:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6564,"name":"uint256","nodeType":"ElementaryTypeName","src":"5509:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5508:9:26"},"scope":7925,"src":"5451:111:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6594,"nodeType":"Block","src":"5700:44:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6587,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"5725:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6588,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6581,"src":"5729:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5725:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6590,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"5732:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6591,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6581,"src":"5735:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6586,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6557,"src":"5717:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5717:20:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6585,"id":6593,"nodeType":"Return","src":"5710:27:26"}]},"documentation":{"id":6577,"nodeType":"StructuredDocumentation","src":"5568:60:26","text":" @dev Returns the smallest of two numbers."},"id":6595,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5642:3:26","nodeType":"FunctionDefinition","parameters":{"id":6582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6579,"mutability":"mutable","name":"a","nameLocation":"5654:1:26","nodeType":"VariableDeclaration","scope":6595,"src":"5646:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6578,"name":"uint256","nodeType":"ElementaryTypeName","src":"5646:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6581,"mutability":"mutable","name":"b","nameLocation":"5665:1:26","nodeType":"VariableDeclaration","scope":6595,"src":"5657:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6580,"name":"uint256","nodeType":"ElementaryTypeName","src":"5657:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5645:22:26"},"returnParameters":{"id":6585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6584,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6595,"src":"5691:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6583,"name":"uint256","nodeType":"ElementaryTypeName","src":"5691:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5690:9:26"},"scope":7925,"src":"5633:111:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6618,"nodeType":"Block","src":"5928:120:26","statements":[{"id":6617,"nodeType":"UncheckedBlock","src":"5938:104:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6605,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6598,"src":"6011:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6606,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"6015:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6011:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6608,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6010:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6609,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6598,"src":"6021:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":6610,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6600,"src":"6025:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6021:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6612,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6020:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":6613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6030:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6020:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6010:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6604,"id":6616,"nodeType":"Return","src":"6003:28:26"}]}]},"documentation":{"id":6596,"nodeType":"StructuredDocumentation","src":"5750:102:26","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":6619,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5866:7:26","nodeType":"FunctionDefinition","parameters":{"id":6601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6598,"mutability":"mutable","name":"a","nameLocation":"5882:1:26","nodeType":"VariableDeclaration","scope":6619,"src":"5874:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6597,"name":"uint256","nodeType":"ElementaryTypeName","src":"5874:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6600,"mutability":"mutable","name":"b","nameLocation":"5893:1:26","nodeType":"VariableDeclaration","scope":6619,"src":"5885:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6599,"name":"uint256","nodeType":"ElementaryTypeName","src":"5885:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5873:22:26"},"returnParameters":{"id":6604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6619,"src":"5919:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6602,"name":"uint256","nodeType":"ElementaryTypeName","src":"5919:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5918:9:26"},"scope":7925,"src":"5857:191:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6659,"nodeType":"Block","src":"6340:633:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6629,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6624,"src":"6354:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6359:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6354:6:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6640,"nodeType":"IfStatement","src":"6350:150:26","trueBody":{"id":6639,"nodeType":"Block","src":"6362:138:26","statements":[{"expression":{"arguments":[{"expression":{"id":6635,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"6466:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":6636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6472:16:26","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":4344,"src":"6466:22:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6632,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"6454:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":6634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6460:5:26","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":4376,"src":"6454:11:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6454:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6638,"nodeType":"ExpressionStatement","src":"6454:35:26"}]}},{"id":6658,"nodeType":"UncheckedBlock","src":"6883:84:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6643,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6622,"src":"6930:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6934:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6930:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6641,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"6914:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":6642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6923:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"6914:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6914:22:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6647,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6622,"src":"6941:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6945:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6941:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6650,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6940:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6651,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6624,"src":"6950:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6940:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6954:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6940:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6655,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6939:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6914:42:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6628,"id":6657,"nodeType":"Return","src":"6907:49:26"}]}]},"documentation":{"id":6620,"nodeType":"StructuredDocumentation","src":"6054:210:26","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"id":6660,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6278:7:26","nodeType":"FunctionDefinition","parameters":{"id":6625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6622,"mutability":"mutable","name":"a","nameLocation":"6294:1:26","nodeType":"VariableDeclaration","scope":6660,"src":"6286:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6621,"name":"uint256","nodeType":"ElementaryTypeName","src":"6286:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6624,"mutability":"mutable","name":"b","nameLocation":"6305:1:26","nodeType":"VariableDeclaration","scope":6660,"src":"6297:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6623,"name":"uint256","nodeType":"ElementaryTypeName","src":"6297:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6285:22:26"},"returnParameters":{"id":6628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6660,"src":"6331:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6626,"name":"uint256","nodeType":"ElementaryTypeName","src":"6331:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6330:9:26"},"scope":7925,"src":"6269:704:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6795,"nodeType":"Block","src":"7394:3585:26","statements":[{"id":6794,"nodeType":"UncheckedBlock","src":"7404:3569:26","statements":[{"assignments":[6673,6675],"declarations":[{"constant":false,"id":6673,"mutability":"mutable","name":"high","nameLocation":"7437:4:26","nodeType":"VariableDeclaration","scope":6794,"src":"7429:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6672,"name":"uint256","nodeType":"ElementaryTypeName","src":"7429:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6675,"mutability":"mutable","name":"low","nameLocation":"7451:3:26","nodeType":"VariableDeclaration","scope":6794,"src":"7443:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6674,"name":"uint256","nodeType":"ElementaryTypeName","src":"7443:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6680,"initialValue":{"arguments":[{"id":6677,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6663,"src":"7465:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6678,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6665,"src":"7468:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6676,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6308,"src":"7458:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":6679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7458:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7428:42:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6681,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6673,"src":"7552:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7560:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7552:9:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6689,"nodeType":"IfStatement","src":"7548:365:26","trueBody":{"id":6688,"nodeType":"Block","src":"7563:350:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6684,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6675,"src":"7881:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6685,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"7887:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7881:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6671,"id":6687,"nodeType":"Return","src":"7874:24:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6690,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"8023:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6691,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6673,"src":"8038:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8023:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6708,"nodeType":"IfStatement","src":"8019:142:26","trueBody":{"id":6707,"nodeType":"Block","src":"8044:117:26","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6697,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"8082:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8097:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8082:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6700,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"8100:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":6701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8106:16:26","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":4344,"src":"8100:22:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6702,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"8124:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":6703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8130:14:26","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":4340,"src":"8124:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6696,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6557,"src":"8074:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":6704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8074:71:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6693,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"8062:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":6695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8068:5:26","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":4376,"src":"8062:11:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8062:84:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6706,"nodeType":"ExpressionStatement","src":"8062:84:26"}]}},{"assignments":[6710],"declarations":[{"constant":false,"id":6710,"mutability":"mutable","name":"remainder","nameLocation":"8421:9:26","nodeType":"VariableDeclaration","scope":6794,"src":"8413:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6709,"name":"uint256","nodeType":"ElementaryTypeName","src":"8413:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6711,"nodeType":"VariableDeclarationStatement","src":"8413:17:26"},{"AST":{"nativeSrc":"8469:283:26","nodeType":"YulBlock","src":"8469:283:26","statements":[{"nativeSrc":"8538:38:26","nodeType":"YulAssignment","src":"8538:38:26","value":{"arguments":[{"name":"x","nativeSrc":"8558:1:26","nodeType":"YulIdentifier","src":"8558:1:26"},{"name":"y","nativeSrc":"8561:1:26","nodeType":"YulIdentifier","src":"8561:1:26"},{"name":"denominator","nativeSrc":"8564:11:26","nodeType":"YulIdentifier","src":"8564:11:26"}],"functionName":{"name":"mulmod","nativeSrc":"8551:6:26","nodeType":"YulIdentifier","src":"8551:6:26"},"nativeSrc":"8551:25:26","nodeType":"YulFunctionCall","src":"8551:25:26"},"variableNames":[{"name":"remainder","nativeSrc":"8538:9:26","nodeType":"YulIdentifier","src":"8538:9:26"}]},{"nativeSrc":"8658:37:26","nodeType":"YulAssignment","src":"8658:37:26","value":{"arguments":[{"name":"high","nativeSrc":"8670:4:26","nodeType":"YulIdentifier","src":"8670:4:26"},{"arguments":[{"name":"remainder","nativeSrc":"8679:9:26","nodeType":"YulIdentifier","src":"8679:9:26"},{"name":"low","nativeSrc":"8690:3:26","nodeType":"YulIdentifier","src":"8690:3:26"}],"functionName":{"name":"gt","nativeSrc":"8676:2:26","nodeType":"YulIdentifier","src":"8676:2:26"},"nativeSrc":"8676:18:26","nodeType":"YulFunctionCall","src":"8676:18:26"}],"functionName":{"name":"sub","nativeSrc":"8666:3:26","nodeType":"YulIdentifier","src":"8666:3:26"},"nativeSrc":"8666:29:26","nodeType":"YulFunctionCall","src":"8666:29:26"},"variableNames":[{"name":"high","nativeSrc":"8658:4:26","nodeType":"YulIdentifier","src":"8658:4:26"}]},{"nativeSrc":"8712:26:26","nodeType":"YulAssignment","src":"8712:26:26","value":{"arguments":[{"name":"low","nativeSrc":"8723:3:26","nodeType":"YulIdentifier","src":"8723:3:26"},{"name":"remainder","nativeSrc":"8728:9:26","nodeType":"YulIdentifier","src":"8728:9:26"}],"functionName":{"name":"sub","nativeSrc":"8719:3:26","nodeType":"YulIdentifier","src":"8719:3:26"},"nativeSrc":"8719:19:26","nodeType":"YulFunctionCall","src":"8719:19:26"},"variableNames":[{"name":"low","nativeSrc":"8712:3:26","nodeType":"YulIdentifier","src":"8712:3:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6667,"isOffset":false,"isSlot":false,"src":"8564:11:26","valueSize":1},{"declaration":6673,"isOffset":false,"isSlot":false,"src":"8658:4:26","valueSize":1},{"declaration":6673,"isOffset":false,"isSlot":false,"src":"8670:4:26","valueSize":1},{"declaration":6675,"isOffset":false,"isSlot":false,"src":"8690:3:26","valueSize":1},{"declaration":6675,"isOffset":false,"isSlot":false,"src":"8712:3:26","valueSize":1},{"declaration":6675,"isOffset":false,"isSlot":false,"src":"8723:3:26","valueSize":1},{"declaration":6710,"isOffset":false,"isSlot":false,"src":"8538:9:26","valueSize":1},{"declaration":6710,"isOffset":false,"isSlot":false,"src":"8679:9:26","valueSize":1},{"declaration":6710,"isOffset":false,"isSlot":false,"src":"8728:9:26","valueSize":1},{"declaration":6663,"isOffset":false,"isSlot":false,"src":"8558:1:26","valueSize":1},{"declaration":6665,"isOffset":false,"isSlot":false,"src":"8561:1:26","valueSize":1}],"flags":["memory-safe"],"id":6712,"nodeType":"InlineAssembly","src":"8444:308:26"},{"assignments":[6714],"declarations":[{"constant":false,"id":6714,"mutability":"mutable","name":"twos","nameLocation":"8964:4:26","nodeType":"VariableDeclaration","scope":6794,"src":"8956:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6713,"name":"uint256","nodeType":"ElementaryTypeName","src":"8956:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6721,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6715,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"8971:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":6716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8986:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6717,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"8990:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8986:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6719,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8985:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8971:31:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8956:46:26"},{"AST":{"nativeSrc":"9041:359:26","nodeType":"YulBlock","src":"9041:359:26","statements":[{"nativeSrc":"9106:37:26","nodeType":"YulAssignment","src":"9106:37:26","value":{"arguments":[{"name":"denominator","nativeSrc":"9125:11:26","nodeType":"YulIdentifier","src":"9125:11:26"},{"name":"twos","nativeSrc":"9138:4:26","nodeType":"YulIdentifier","src":"9138:4:26"}],"functionName":{"name":"div","nativeSrc":"9121:3:26","nodeType":"YulIdentifier","src":"9121:3:26"},"nativeSrc":"9121:22:26","nodeType":"YulFunctionCall","src":"9121:22:26"},"variableNames":[{"name":"denominator","nativeSrc":"9106:11:26","nodeType":"YulIdentifier","src":"9106:11:26"}]},{"nativeSrc":"9207:21:26","nodeType":"YulAssignment","src":"9207:21:26","value":{"arguments":[{"name":"low","nativeSrc":"9218:3:26","nodeType":"YulIdentifier","src":"9218:3:26"},{"name":"twos","nativeSrc":"9223:4:26","nodeType":"YulIdentifier","src":"9223:4:26"}],"functionName":{"name":"div","nativeSrc":"9214:3:26","nodeType":"YulIdentifier","src":"9214:3:26"},"nativeSrc":"9214:14:26","nodeType":"YulFunctionCall","src":"9214:14:26"},"variableNames":[{"name":"low","nativeSrc":"9207:3:26","nodeType":"YulIdentifier","src":"9207:3:26"}]},{"nativeSrc":"9347:39:26","nodeType":"YulAssignment","src":"9347:39:26","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9367:1:26","nodeType":"YulLiteral","src":"9367:1:26","type":"","value":"0"},{"name":"twos","nativeSrc":"9370:4:26","nodeType":"YulIdentifier","src":"9370:4:26"}],"functionName":{"name":"sub","nativeSrc":"9363:3:26","nodeType":"YulIdentifier","src":"9363:3:26"},"nativeSrc":"9363:12:26","nodeType":"YulFunctionCall","src":"9363:12:26"},{"name":"twos","nativeSrc":"9377:4:26","nodeType":"YulIdentifier","src":"9377:4:26"}],"functionName":{"name":"div","nativeSrc":"9359:3:26","nodeType":"YulIdentifier","src":"9359:3:26"},"nativeSrc":"9359:23:26","nodeType":"YulFunctionCall","src":"9359:23:26"},{"kind":"number","nativeSrc":"9384:1:26","nodeType":"YulLiteral","src":"9384:1:26","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9355:3:26","nodeType":"YulIdentifier","src":"9355:3:26"},"nativeSrc":"9355:31:26","nodeType":"YulFunctionCall","src":"9355:31:26"},"variableNames":[{"name":"twos","nativeSrc":"9347:4:26","nodeType":"YulIdentifier","src":"9347:4:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6667,"isOffset":false,"isSlot":false,"src":"9106:11:26","valueSize":1},{"declaration":6667,"isOffset":false,"isSlot":false,"src":"9125:11:26","valueSize":1},{"declaration":6675,"isOffset":false,"isSlot":false,"src":"9207:3:26","valueSize":1},{"declaration":6675,"isOffset":false,"isSlot":false,"src":"9218:3:26","valueSize":1},{"declaration":6714,"isOffset":false,"isSlot":false,"src":"9138:4:26","valueSize":1},{"declaration":6714,"isOffset":false,"isSlot":false,"src":"9223:4:26","valueSize":1},{"declaration":6714,"isOffset":false,"isSlot":false,"src":"9347:4:26","valueSize":1},{"declaration":6714,"isOffset":false,"isSlot":false,"src":"9370:4:26","valueSize":1},{"declaration":6714,"isOffset":false,"isSlot":false,"src":"9377:4:26","valueSize":1}],"flags":["memory-safe"],"id":6722,"nodeType":"InlineAssembly","src":"9016:384:26"},{"expression":{"id":6727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6723,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6675,"src":"9463:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6724,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6673,"src":"9470:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6725,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6714,"src":"9477:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9470:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9463:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6728,"nodeType":"ExpressionStatement","src":"9463:18:26"},{"assignments":[6730],"declarations":[{"constant":false,"id":6730,"mutability":"mutable","name":"inverse","nameLocation":"9824:7:26","nodeType":"VariableDeclaration","scope":6794,"src":"9816:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6729,"name":"uint256","nodeType":"ElementaryTypeName","src":"9816:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6737,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":6731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9835:1:26","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6732,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"9839:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9835:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9834:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":6735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9854:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9834:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9816:39:26"},{"expression":{"id":6744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6738,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10072:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10083:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6740,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"10087:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6741,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10101:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10087:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10083:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10072:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6745,"nodeType":"ExpressionStatement","src":"10072:36:26"},{"expression":{"id":6752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6746,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10142:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10153:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6748,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"10157:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6749,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10171:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10157:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10153:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10142:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6753,"nodeType":"ExpressionStatement","src":"10142:36:26"},{"expression":{"id":6760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6754,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10214:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10225:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6756,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"10229:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6757,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10243:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10229:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10225:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10214:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6761,"nodeType":"ExpressionStatement","src":"10214:36:26"},{"expression":{"id":6768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6762,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10285:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10296:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6764,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"10300:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6765,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10314:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10300:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10296:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10285:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6769,"nodeType":"ExpressionStatement","src":"10285:36:26"},{"expression":{"id":6776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6770,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10358:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10369:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6772,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"10373:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6773,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10387:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10373:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10369:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10358:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6777,"nodeType":"ExpressionStatement","src":"10358:36:26"},{"expression":{"id":6784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6778,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10432:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10443:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6780,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"10447:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6781,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10461:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10447:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10443:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10432:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6785,"nodeType":"ExpressionStatement","src":"10432:36:26"},{"expression":{"id":6790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6786,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6670,"src":"10913:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6787,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6675,"src":"10922:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6788,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"10928:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10922:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10913:22:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6791,"nodeType":"ExpressionStatement","src":"10913:22:26"},{"expression":{"id":6792,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6670,"src":"10956:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6671,"id":6793,"nodeType":"Return","src":"10949:13:26"}]}]},"documentation":{"id":6661,"nodeType":"StructuredDocumentation","src":"6979:312:26","text":" @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"id":6796,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7305:6:26","nodeType":"FunctionDefinition","parameters":{"id":6668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6663,"mutability":"mutable","name":"x","nameLocation":"7320:1:26","nodeType":"VariableDeclaration","scope":6796,"src":"7312:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6662,"name":"uint256","nodeType":"ElementaryTypeName","src":"7312:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6665,"mutability":"mutable","name":"y","nameLocation":"7331:1:26","nodeType":"VariableDeclaration","scope":6796,"src":"7323:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6664,"name":"uint256","nodeType":"ElementaryTypeName","src":"7323:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6667,"mutability":"mutable","name":"denominator","nameLocation":"7342:11:26","nodeType":"VariableDeclaration","scope":6796,"src":"7334:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6666,"name":"uint256","nodeType":"ElementaryTypeName","src":"7334:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7311:43:26"},"returnParameters":{"id":6671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6670,"mutability":"mutable","name":"result","nameLocation":"7386:6:26","nodeType":"VariableDeclaration","scope":6796,"src":"7378:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6669,"name":"uint256","nodeType":"ElementaryTypeName","src":"7378:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7377:16:26"},"scope":7925,"src":"7296:3683:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6832,"nodeType":"Block","src":"11218:128:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6812,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6799,"src":"11242:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6813,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6801,"src":"11245:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6814,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6803,"src":"11248:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6811,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[6796,6833],"referencedDeclaration":6796,"src":"11235:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11235:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6819,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"11296:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}],"id":6818,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"11279:16:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$6280_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":6820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11279:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6822,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6799,"src":"11316:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6823,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6801,"src":"11319:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6824,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6803,"src":"11322:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6821,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967280,"src":"11309:6:26","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11309:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11309:29:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11279:59:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6816,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"11263:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":6817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11272:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"11263:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11263:76:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11235:104:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6810,"id":6831,"nodeType":"Return","src":"11228:111:26"}]},"documentation":{"id":6797,"nodeType":"StructuredDocumentation","src":"10985:118:26","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":6833,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11117:6:26","nodeType":"FunctionDefinition","parameters":{"id":6807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6799,"mutability":"mutable","name":"x","nameLocation":"11132:1:26","nodeType":"VariableDeclaration","scope":6833,"src":"11124:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6798,"name":"uint256","nodeType":"ElementaryTypeName","src":"11124:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6801,"mutability":"mutable","name":"y","nameLocation":"11143:1:26","nodeType":"VariableDeclaration","scope":6833,"src":"11135:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6800,"name":"uint256","nodeType":"ElementaryTypeName","src":"11135:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6803,"mutability":"mutable","name":"denominator","nameLocation":"11154:11:26","nodeType":"VariableDeclaration","scope":6833,"src":"11146:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6802,"name":"uint256","nodeType":"ElementaryTypeName","src":"11146:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6806,"mutability":"mutable","name":"rounding","nameLocation":"11176:8:26","nodeType":"VariableDeclaration","scope":6833,"src":"11167:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"},"typeName":{"id":6805,"nodeType":"UserDefinedTypeName","pathNode":{"id":6804,"name":"Rounding","nameLocations":["11167:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6280,"src":"11167:8:26"},"referencedDeclaration":6280,"src":"11167:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11123:62:26"},"returnParameters":{"id":6810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6833,"src":"11209:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6808,"name":"uint256","nodeType":"ElementaryTypeName","src":"11209:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11208:9:26"},"scope":7925,"src":"11108:238:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6882,"nodeType":"Block","src":"11554:245:26","statements":[{"id":6881,"nodeType":"UncheckedBlock","src":"11564:229:26","statements":[{"assignments":[6846,6848],"declarations":[{"constant":false,"id":6846,"mutability":"mutable","name":"high","nameLocation":"11597:4:26","nodeType":"VariableDeclaration","scope":6881,"src":"11589:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6845,"name":"uint256","nodeType":"ElementaryTypeName","src":"11589:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6848,"mutability":"mutable","name":"low","nameLocation":"11611:3:26","nodeType":"VariableDeclaration","scope":6881,"src":"11603:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6847,"name":"uint256","nodeType":"ElementaryTypeName","src":"11603:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6853,"initialValue":{"arguments":[{"id":6850,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6836,"src":"11625:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6851,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6838,"src":"11628:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6849,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6308,"src":"11618:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":6852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11618:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11588:42:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6854,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6846,"src":"11648:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11656:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6856,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6840,"src":"11661:1:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11656:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11648:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6867,"nodeType":"IfStatement","src":"11644:86:26","trueBody":{"id":6866,"nodeType":"Block","src":"11664:66:26","statements":[{"expression":{"arguments":[{"expression":{"id":6862,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"11694:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":6863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11700:14:26","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":4340,"src":"11694:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6859,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"11682:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":6861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11688:5:26","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":4376,"src":"11682:11:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11682:33:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6865,"nodeType":"ExpressionStatement","src":"11682:33:26"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6868,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6846,"src":"11751:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":6871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":6869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11760:3:26","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6870,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6840,"src":"11766:1:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11760:7:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":6872,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11759:9:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11751:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6874,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11750:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6875,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6848,"src":"11773:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":6876,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6840,"src":"11780:1:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11773:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6878,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11772:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11750:32:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6844,"id":6880,"nodeType":"Return","src":"11743:39:26"}]}]},"documentation":{"id":6834,"nodeType":"StructuredDocumentation","src":"11352:111:26","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"id":6883,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11477:6:26","nodeType":"FunctionDefinition","parameters":{"id":6841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6836,"mutability":"mutable","name":"x","nameLocation":"11492:1:26","nodeType":"VariableDeclaration","scope":6883,"src":"11484:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6835,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6838,"mutability":"mutable","name":"y","nameLocation":"11503:1:26","nodeType":"VariableDeclaration","scope":6883,"src":"11495:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6837,"name":"uint256","nodeType":"ElementaryTypeName","src":"11495:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6840,"mutability":"mutable","name":"n","nameLocation":"11512:1:26","nodeType":"VariableDeclaration","scope":6883,"src":"11506:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6839,"name":"uint8","nodeType":"ElementaryTypeName","src":"11506:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11483:31:26"},"returnParameters":{"id":6844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6843,"mutability":"mutable","name":"result","nameLocation":"11546:6:26","nodeType":"VariableDeclaration","scope":6883,"src":"11538:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6842,"name":"uint256","nodeType":"ElementaryTypeName","src":"11538:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11537:16:26"},"scope":7925,"src":"11468:331:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6921,"nodeType":"Block","src":"12017:113:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6899,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6886,"src":"12041:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6900,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6888,"src":"12044:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6901,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"12047:1:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6898,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[6883,6922],"referencedDeclaration":6883,"src":"12034:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":6902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12034:15:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6906,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6893,"src":"12085:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}],"id":6905,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"12068:16:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$6280_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":6907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12068:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6909,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6886,"src":"12105:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6910,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6888,"src":"12108:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12111:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6912,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"12116:1:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12111:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6908,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967280,"src":"12098:6:26","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12098:20:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12121:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12098:24:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12068:54:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6903,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"12052:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":6904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12061:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"12052:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12052:71:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12034:89:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6897,"id":6920,"nodeType":"Return","src":"12027:96:26"}]},"documentation":{"id":6884,"nodeType":"StructuredDocumentation","src":"11805:109:26","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"id":6922,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11928:6:26","nodeType":"FunctionDefinition","parameters":{"id":6894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6886,"mutability":"mutable","name":"x","nameLocation":"11943:1:26","nodeType":"VariableDeclaration","scope":6922,"src":"11935:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6885,"name":"uint256","nodeType":"ElementaryTypeName","src":"11935:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6888,"mutability":"mutable","name":"y","nameLocation":"11954:1:26","nodeType":"VariableDeclaration","scope":6922,"src":"11946:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6887,"name":"uint256","nodeType":"ElementaryTypeName","src":"11946:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6890,"mutability":"mutable","name":"n","nameLocation":"11963:1:26","nodeType":"VariableDeclaration","scope":6922,"src":"11957:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6889,"name":"uint8","nodeType":"ElementaryTypeName","src":"11957:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6893,"mutability":"mutable","name":"rounding","nameLocation":"11975:8:26","nodeType":"VariableDeclaration","scope":6922,"src":"11966:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"},"typeName":{"id":6892,"nodeType":"UserDefinedTypeName","pathNode":{"id":6891,"name":"Rounding","nameLocations":["11966:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6280,"src":"11966:8:26"},"referencedDeclaration":6280,"src":"11966:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11934:50:26"},"returnParameters":{"id":6897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6922,"src":"12008:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6895,"name":"uint256","nodeType":"ElementaryTypeName","src":"12008:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12007:9:26"},"scope":7925,"src":"11919:211:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7018,"nodeType":"Block","src":"12764:1849:26","statements":[{"id":7017,"nodeType":"UncheckedBlock","src":"12774:1833:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6932,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6927,"src":"12802:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12807:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12802:6:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6937,"nodeType":"IfStatement","src":"12798:20:26","trueBody":{"expression":{"hexValue":"30","id":6935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12817:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":6931,"id":6936,"nodeType":"Return","src":"12810:8:26"}},{"assignments":[6939],"declarations":[{"constant":false,"id":6939,"mutability":"mutable","name":"remainder","nameLocation":"13297:9:26","nodeType":"VariableDeclaration","scope":7017,"src":"13289:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6938,"name":"uint256","nodeType":"ElementaryTypeName","src":"13289:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6943,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6940,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6925,"src":"13309:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":6941,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6927,"src":"13313:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13309:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13289:25:26"},{"assignments":[6945],"declarations":[{"constant":false,"id":6945,"mutability":"mutable","name":"gcd","nameLocation":"13336:3:26","nodeType":"VariableDeclaration","scope":7017,"src":"13328:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6944,"name":"uint256","nodeType":"ElementaryTypeName","src":"13328:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6947,"initialValue":{"id":6946,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6927,"src":"13342:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13328:15:26"},{"assignments":[6949],"declarations":[{"constant":false,"id":6949,"mutability":"mutable","name":"x","nameLocation":"13486:1:26","nodeType":"VariableDeclaration","scope":7017,"src":"13479:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6948,"name":"int256","nodeType":"ElementaryTypeName","src":"13479:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6951,"initialValue":{"hexValue":"30","id":6950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13490:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13479:12:26"},{"assignments":[6953],"declarations":[{"constant":false,"id":6953,"mutability":"mutable","name":"y","nameLocation":"13512:1:26","nodeType":"VariableDeclaration","scope":7017,"src":"13505:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6952,"name":"int256","nodeType":"ElementaryTypeName","src":"13505:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6955,"initialValue":{"hexValue":"31","id":6954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13505:12:26"},{"body":{"id":6992,"nodeType":"Block","src":"13555:882:26","statements":[{"assignments":[6960],"declarations":[{"constant":false,"id":6960,"mutability":"mutable","name":"quotient","nameLocation":"13581:8:26","nodeType":"VariableDeclaration","scope":6992,"src":"13573:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6959,"name":"uint256","nodeType":"ElementaryTypeName","src":"13573:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6964,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6961,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"13592:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6962,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6939,"src":"13598:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13592:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13573:34:26"},{"expression":{"id":6975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":6965,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"13627:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6966,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6939,"src":"13632:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6967,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13626:16:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":6968,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6939,"src":"13732:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6969,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"13977:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6970,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6939,"src":"13983:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6971,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"13995:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13983:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13977:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6974,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13645:376:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13626:395:26","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6976,"nodeType":"ExpressionStatement","src":"13626:395:26"},{"expression":{"id":6990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":6977,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"14041:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":6978,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6953,"src":"14044:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6979,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14040:6:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":6980,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6953,"src":"14126:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6981,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"14380:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6982,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6953,"src":"14384:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":6985,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"14395:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14388:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6983,"name":"int256","nodeType":"ElementaryTypeName","src":"14388:6:26","typeDescriptions":{}}},"id":6986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14388:16:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14384:20:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14380:24:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14049:373:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"14040:382:26","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6991,"nodeType":"ExpressionStatement","src":"14040:382:26"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6956,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6939,"src":"13539:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13552:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13539:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6993,"nodeType":"WhileStatement","src":"13532:905:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6994,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"14455:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":6995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14462:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14455:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6999,"nodeType":"IfStatement","src":"14451:22:26","trueBody":{"expression":{"hexValue":"30","id":6997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14472:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":6931,"id":6998,"nodeType":"Return","src":"14465:8:26"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7001,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"14524:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":7002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14528:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14524:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7004,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6927,"src":"14531:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":7008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14543:2:26","subExpression":{"id":7007,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"14544:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14535:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7005,"name":"uint256","nodeType":"ElementaryTypeName","src":"14535:7:26","typeDescriptions":{}}},"id":7009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14535:11:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14531:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7013,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"14556:1:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14548:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7011,"name":"uint256","nodeType":"ElementaryTypeName","src":"14548:7:26","typeDescriptions":{}}},"id":7014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14548:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7000,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6557,"src":"14516:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":7015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14516:43:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6931,"id":7016,"nodeType":"Return","src":"14509:50:26"}]}]},"documentation":{"id":6923,"nodeType":"StructuredDocumentation","src":"12136:553:26","text":" @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."},"id":7019,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12703:6:26","nodeType":"FunctionDefinition","parameters":{"id":6928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6925,"mutability":"mutable","name":"a","nameLocation":"12718:1:26","nodeType":"VariableDeclaration","scope":7019,"src":"12710:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6924,"name":"uint256","nodeType":"ElementaryTypeName","src":"12710:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6927,"mutability":"mutable","name":"n","nameLocation":"12729:1:26","nodeType":"VariableDeclaration","scope":7019,"src":"12721:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6926,"name":"uint256","nodeType":"ElementaryTypeName","src":"12721:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12709:22:26"},"returnParameters":{"id":6931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7019,"src":"12755:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6929,"name":"uint256","nodeType":"ElementaryTypeName","src":"12755:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12754:9:26"},"scope":7925,"src":"12694:1919:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7039,"nodeType":"Block","src":"15213:82:26","statements":[{"id":7038,"nodeType":"UncheckedBlock","src":"15223:66:26","statements":[{"expression":{"arguments":[{"id":7031,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7022,"src":"15266:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7032,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7024,"src":"15269:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":7033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15273:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15269:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7035,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7024,"src":"15276:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7029,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"15254:4:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7925_$","typeString":"type(library Math)"}},"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15259:6:26","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":7076,"src":"15254:11:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":7036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15254:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7028,"id":7037,"nodeType":"Return","src":"15247:31:26"}]}]},"documentation":{"id":7020,"nodeType":"StructuredDocumentation","src":"14619:514:26","text":" @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."},"id":7040,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15147:11:26","nodeType":"FunctionDefinition","parameters":{"id":7025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7022,"mutability":"mutable","name":"a","nameLocation":"15167:1:26","nodeType":"VariableDeclaration","scope":7040,"src":"15159:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7021,"name":"uint256","nodeType":"ElementaryTypeName","src":"15159:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7024,"mutability":"mutable","name":"p","nameLocation":"15178:1:26","nodeType":"VariableDeclaration","scope":7040,"src":"15170:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7023,"name":"uint256","nodeType":"ElementaryTypeName","src":"15170:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15158:22:26"},"returnParameters":{"id":7028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7027,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7040,"src":"15204:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7026,"name":"uint256","nodeType":"ElementaryTypeName","src":"15204:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15203:9:26"},"scope":7925,"src":"15138:157:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7075,"nodeType":"Block","src":"16065:174:26","statements":[{"assignments":[7053,7055],"declarations":[{"constant":false,"id":7053,"mutability":"mutable","name":"success","nameLocation":"16081:7:26","nodeType":"VariableDeclaration","scope":7075,"src":"16076:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7052,"name":"bool","nodeType":"ElementaryTypeName","src":"16076:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7055,"mutability":"mutable","name":"result","nameLocation":"16098:6:26","nodeType":"VariableDeclaration","scope":7075,"src":"16090:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7054,"name":"uint256","nodeType":"ElementaryTypeName","src":"16090:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7061,"initialValue":{"arguments":[{"id":7057,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7043,"src":"16118:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7058,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7045,"src":"16121:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7059,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7047,"src":"16124:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7056,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[7100,7182],"referencedDeclaration":7100,"src":"16108:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (bool,uint256)"}},"id":7060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16108:18:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16075:51:26"},{"condition":{"id":7063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16140:8:26","subExpression":{"id":7062,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7053,"src":"16141:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7072,"nodeType":"IfStatement","src":"16136:74:26","trueBody":{"id":7071,"nodeType":"Block","src":"16150:60:26","statements":[{"expression":{"arguments":[{"expression":{"id":7067,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"16176:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":7068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16182:16:26","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":4344,"src":"16176:22:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7064,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"16164:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":7066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16170:5:26","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":4376,"src":"16164:11:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":7069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16164:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7070,"nodeType":"ExpressionStatement","src":"16164:35:26"}]}},{"expression":{"id":7073,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7055,"src":"16226:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7051,"id":7074,"nodeType":"Return","src":"16219:13:26"}]},"documentation":{"id":7041,"nodeType":"StructuredDocumentation","src":"15301:678:26","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."},"id":7076,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15993:6:26","nodeType":"FunctionDefinition","parameters":{"id":7048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7043,"mutability":"mutable","name":"b","nameLocation":"16008:1:26","nodeType":"VariableDeclaration","scope":7076,"src":"16000:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7042,"name":"uint256","nodeType":"ElementaryTypeName","src":"16000:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7045,"mutability":"mutable","name":"e","nameLocation":"16019:1:26","nodeType":"VariableDeclaration","scope":7076,"src":"16011:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7044,"name":"uint256","nodeType":"ElementaryTypeName","src":"16011:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7047,"mutability":"mutable","name":"m","nameLocation":"16030:1:26","nodeType":"VariableDeclaration","scope":7076,"src":"16022:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7046,"name":"uint256","nodeType":"ElementaryTypeName","src":"16022:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15999:33:26"},"returnParameters":{"id":7051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7076,"src":"16056:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7049,"name":"uint256","nodeType":"ElementaryTypeName","src":"16056:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16055:9:26"},"scope":7925,"src":"15984:255:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7099,"nodeType":"Block","src":"17093:1493:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7090,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7083,"src":"17107:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17112:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17107:6:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7097,"nodeType":"IfStatement","src":"17103:29:26","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":7093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17123:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":7094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17130:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":7095,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17122:10:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":7089,"id":7096,"nodeType":"Return","src":"17115:17:26"}},{"AST":{"nativeSrc":"17167:1413:26","nodeType":"YulBlock","src":"17167:1413:26","statements":[{"nativeSrc":"17181:22:26","nodeType":"YulVariableDeclaration","src":"17181:22:26","value":{"arguments":[{"kind":"number","nativeSrc":"17198:4:26","nodeType":"YulLiteral","src":"17198:4:26","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17192:5:26","nodeType":"YulIdentifier","src":"17192:5:26"},"nativeSrc":"17192:11:26","nodeType":"YulFunctionCall","src":"17192:11:26"},"variables":[{"name":"ptr","nativeSrc":"17185:3:26","nodeType":"YulTypedName","src":"17185:3:26","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18111:3:26","nodeType":"YulIdentifier","src":"18111:3:26"},{"kind":"number","nativeSrc":"18116:4:26","nodeType":"YulLiteral","src":"18116:4:26","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18104:6:26","nodeType":"YulIdentifier","src":"18104:6:26"},"nativeSrc":"18104:17:26","nodeType":"YulFunctionCall","src":"18104:17:26"},"nativeSrc":"18104:17:26","nodeType":"YulExpressionStatement","src":"18104:17:26"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18145:3:26","nodeType":"YulIdentifier","src":"18145:3:26"},{"kind":"number","nativeSrc":"18150:4:26","nodeType":"YulLiteral","src":"18150:4:26","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18141:3:26","nodeType":"YulIdentifier","src":"18141:3:26"},"nativeSrc":"18141:14:26","nodeType":"YulFunctionCall","src":"18141:14:26"},{"kind":"number","nativeSrc":"18157:4:26","nodeType":"YulLiteral","src":"18157:4:26","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18134:6:26","nodeType":"YulIdentifier","src":"18134:6:26"},"nativeSrc":"18134:28:26","nodeType":"YulFunctionCall","src":"18134:28:26"},"nativeSrc":"18134:28:26","nodeType":"YulExpressionStatement","src":"18134:28:26"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18186:3:26","nodeType":"YulIdentifier","src":"18186:3:26"},{"kind":"number","nativeSrc":"18191:4:26","nodeType":"YulLiteral","src":"18191:4:26","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18182:3:26","nodeType":"YulIdentifier","src":"18182:3:26"},"nativeSrc":"18182:14:26","nodeType":"YulFunctionCall","src":"18182:14:26"},{"kind":"number","nativeSrc":"18198:4:26","nodeType":"YulLiteral","src":"18198:4:26","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18175:6:26","nodeType":"YulIdentifier","src":"18175:6:26"},"nativeSrc":"18175:28:26","nodeType":"YulFunctionCall","src":"18175:28:26"},"nativeSrc":"18175:28:26","nodeType":"YulExpressionStatement","src":"18175:28:26"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18227:3:26","nodeType":"YulIdentifier","src":"18227:3:26"},{"kind":"number","nativeSrc":"18232:4:26","nodeType":"YulLiteral","src":"18232:4:26","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18223:3:26","nodeType":"YulIdentifier","src":"18223:3:26"},"nativeSrc":"18223:14:26","nodeType":"YulFunctionCall","src":"18223:14:26"},{"name":"b","nativeSrc":"18239:1:26","nodeType":"YulIdentifier","src":"18239:1:26"}],"functionName":{"name":"mstore","nativeSrc":"18216:6:26","nodeType":"YulIdentifier","src":"18216:6:26"},"nativeSrc":"18216:25:26","nodeType":"YulFunctionCall","src":"18216:25:26"},"nativeSrc":"18216:25:26","nodeType":"YulExpressionStatement","src":"18216:25:26"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18265:3:26","nodeType":"YulIdentifier","src":"18265:3:26"},{"kind":"number","nativeSrc":"18270:4:26","nodeType":"YulLiteral","src":"18270:4:26","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18261:3:26","nodeType":"YulIdentifier","src":"18261:3:26"},"nativeSrc":"18261:14:26","nodeType":"YulFunctionCall","src":"18261:14:26"},{"name":"e","nativeSrc":"18277:1:26","nodeType":"YulIdentifier","src":"18277:1:26"}],"functionName":{"name":"mstore","nativeSrc":"18254:6:26","nodeType":"YulIdentifier","src":"18254:6:26"},"nativeSrc":"18254:25:26","nodeType":"YulFunctionCall","src":"18254:25:26"},"nativeSrc":"18254:25:26","nodeType":"YulExpressionStatement","src":"18254:25:26"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18303:3:26","nodeType":"YulIdentifier","src":"18303:3:26"},{"kind":"number","nativeSrc":"18308:4:26","nodeType":"YulLiteral","src":"18308:4:26","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18299:3:26","nodeType":"YulIdentifier","src":"18299:3:26"},"nativeSrc":"18299:14:26","nodeType":"YulFunctionCall","src":"18299:14:26"},{"name":"m","nativeSrc":"18315:1:26","nodeType":"YulIdentifier","src":"18315:1:26"}],"functionName":{"name":"mstore","nativeSrc":"18292:6:26","nodeType":"YulIdentifier","src":"18292:6:26"},"nativeSrc":"18292:25:26","nodeType":"YulFunctionCall","src":"18292:25:26"},"nativeSrc":"18292:25:26","nodeType":"YulExpressionStatement","src":"18292:25:26"},{"nativeSrc":"18479:57:26","nodeType":"YulAssignment","src":"18479:57:26","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18501:3:26","nodeType":"YulIdentifier","src":"18501:3:26"},"nativeSrc":"18501:5:26","nodeType":"YulFunctionCall","src":"18501:5:26"},{"kind":"number","nativeSrc":"18508:4:26","nodeType":"YulLiteral","src":"18508:4:26","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18514:3:26","nodeType":"YulIdentifier","src":"18514:3:26"},{"kind":"number","nativeSrc":"18519:4:26","nodeType":"YulLiteral","src":"18519:4:26","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18525:4:26","nodeType":"YulLiteral","src":"18525:4:26","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18531:4:26","nodeType":"YulLiteral","src":"18531:4:26","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18490:10:26","nodeType":"YulIdentifier","src":"18490:10:26"},"nativeSrc":"18490:46:26","nodeType":"YulFunctionCall","src":"18490:46:26"},"variableNames":[{"name":"success","nativeSrc":"18479:7:26","nodeType":"YulIdentifier","src":"18479:7:26"}]},{"nativeSrc":"18549:21:26","nodeType":"YulAssignment","src":"18549:21:26","value":{"arguments":[{"kind":"number","nativeSrc":"18565:4:26","nodeType":"YulLiteral","src":"18565:4:26","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18559:5:26","nodeType":"YulIdentifier","src":"18559:5:26"},"nativeSrc":"18559:11:26","nodeType":"YulFunctionCall","src":"18559:11:26"},"variableNames":[{"name":"result","nativeSrc":"18549:6:26","nodeType":"YulIdentifier","src":"18549:6:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7079,"isOffset":false,"isSlot":false,"src":"18239:1:26","valueSize":1},{"declaration":7081,"isOffset":false,"isSlot":false,"src":"18277:1:26","valueSize":1},{"declaration":7083,"isOffset":false,"isSlot":false,"src":"18315:1:26","valueSize":1},{"declaration":7088,"isOffset":false,"isSlot":false,"src":"18549:6:26","valueSize":1},{"declaration":7086,"isOffset":false,"isSlot":false,"src":"18479:7:26","valueSize":1}],"flags":["memory-safe"],"id":7098,"nodeType":"InlineAssembly","src":"17142:1438:26"}]},"documentation":{"id":7077,"nodeType":"StructuredDocumentation","src":"16245:738:26","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."},"id":7100,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16997:9:26","nodeType":"FunctionDefinition","parameters":{"id":7084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7079,"mutability":"mutable","name":"b","nameLocation":"17015:1:26","nodeType":"VariableDeclaration","scope":7100,"src":"17007:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7078,"name":"uint256","nodeType":"ElementaryTypeName","src":"17007:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7081,"mutability":"mutable","name":"e","nameLocation":"17026:1:26","nodeType":"VariableDeclaration","scope":7100,"src":"17018:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7080,"name":"uint256","nodeType":"ElementaryTypeName","src":"17018:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7083,"mutability":"mutable","name":"m","nameLocation":"17037:1:26","nodeType":"VariableDeclaration","scope":7100,"src":"17029:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7082,"name":"uint256","nodeType":"ElementaryTypeName","src":"17029:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17006:33:26"},"returnParameters":{"id":7089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7086,"mutability":"mutable","name":"success","nameLocation":"17068:7:26","nodeType":"VariableDeclaration","scope":7100,"src":"17063:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7085,"name":"bool","nodeType":"ElementaryTypeName","src":"17063:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7088,"mutability":"mutable","name":"result","nameLocation":"17085:6:26","nodeType":"VariableDeclaration","scope":7100,"src":"17077:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7087,"name":"uint256","nodeType":"ElementaryTypeName","src":"17077:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17062:30:26"},"scope":7925,"src":"16988:1598:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7135,"nodeType":"Block","src":"18783:179:26","statements":[{"assignments":[7113,7115],"declarations":[{"constant":false,"id":7113,"mutability":"mutable","name":"success","nameLocation":"18799:7:26","nodeType":"VariableDeclaration","scope":7135,"src":"18794:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7112,"name":"bool","nodeType":"ElementaryTypeName","src":"18794:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7115,"mutability":"mutable","name":"result","nameLocation":"18821:6:26","nodeType":"VariableDeclaration","scope":7135,"src":"18808:19:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7114,"name":"bytes","nodeType":"ElementaryTypeName","src":"18808:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7121,"initialValue":{"arguments":[{"id":7117,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7103,"src":"18841:1:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7118,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7105,"src":"18844:1:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7119,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"18847:1:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7116,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[7100,7182],"referencedDeclaration":7182,"src":"18831:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"}},"id":7120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18831:18:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18793:56:26"},{"condition":{"id":7123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18863:8:26","subExpression":{"id":7122,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7113,"src":"18864:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7132,"nodeType":"IfStatement","src":"18859:74:26","trueBody":{"id":7131,"nodeType":"Block","src":"18873:60:26","statements":[{"expression":{"arguments":[{"expression":{"id":7127,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"18899:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":7128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18905:16:26","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":4344,"src":"18899:22:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7124,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"18887:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$4377_$","typeString":"type(library Panic)"}},"id":7126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18893:5:26","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":4376,"src":"18887:11:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":7129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18887:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7130,"nodeType":"ExpressionStatement","src":"18887:35:26"}]}},{"expression":{"id":7133,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"18949:6:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7111,"id":7134,"nodeType":"Return","src":"18942:13:26"}]},"documentation":{"id":7101,"nodeType":"StructuredDocumentation","src":"18592:85:26","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":7136,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18691:6:26","nodeType":"FunctionDefinition","parameters":{"id":7108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7103,"mutability":"mutable","name":"b","nameLocation":"18711:1:26","nodeType":"VariableDeclaration","scope":7136,"src":"18698:14:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7102,"name":"bytes","nodeType":"ElementaryTypeName","src":"18698:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7105,"mutability":"mutable","name":"e","nameLocation":"18727:1:26","nodeType":"VariableDeclaration","scope":7136,"src":"18714:14:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7104,"name":"bytes","nodeType":"ElementaryTypeName","src":"18714:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7107,"mutability":"mutable","name":"m","nameLocation":"18743:1:26","nodeType":"VariableDeclaration","scope":7136,"src":"18730:14:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7106,"name":"bytes","nodeType":"ElementaryTypeName","src":"18730:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18697:48:26"},"returnParameters":{"id":7111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7136,"src":"18769:12:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7109,"name":"bytes","nodeType":"ElementaryTypeName","src":"18769:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18768:14:26"},"scope":7925,"src":"18682:280:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7181,"nodeType":"Block","src":"19216:771:26","statements":[{"condition":{"arguments":[{"id":7151,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"19241:1:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7150,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7229,"src":"19230:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":7152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19230:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7160,"nodeType":"IfStatement","src":"19226:47:26","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":7153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19253:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":7156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19270:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19260:9:26","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":7154,"name":"bytes","nodeType":"ElementaryTypeName","src":"19264:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":7157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19260:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":7158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19252:21:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":7149,"id":7159,"nodeType":"Return","src":"19245:28:26"}},{"assignments":[7162],"declarations":[{"constant":false,"id":7162,"mutability":"mutable","name":"mLen","nameLocation":"19292:4:26","nodeType":"VariableDeclaration","scope":7181,"src":"19284:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7161,"name":"uint256","nodeType":"ElementaryTypeName","src":"19284:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7165,"initialValue":{"expression":{"id":7163,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"19299:1:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19301:6:26","memberName":"length","nodeType":"MemberAccess","src":"19299:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19284:23:26"},{"expression":{"id":7178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7166,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7148,"src":"19389:6:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":7169,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7139,"src":"19415:1:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19417:6:26","memberName":"length","nodeType":"MemberAccess","src":"19415:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7171,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"19425:1:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19427:6:26","memberName":"length","nodeType":"MemberAccess","src":"19425:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7173,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"19435:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7174,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7139,"src":"19441:1:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7175,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"19444:1:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7176,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"19447:1:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7167,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"19398:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19402:12:26","memberName":"encodePacked","nodeType":"MemberAccess","src":"19398:16:26","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19398:51:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19389:60:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7179,"nodeType":"ExpressionStatement","src":"19389:60:26"},{"AST":{"nativeSrc":"19485:496:26","nodeType":"YulBlock","src":"19485:496:26","statements":[{"nativeSrc":"19499:32:26","nodeType":"YulVariableDeclaration","src":"19499:32:26","value":{"arguments":[{"name":"result","nativeSrc":"19518:6:26","nodeType":"YulIdentifier","src":"19518:6:26"},{"kind":"number","nativeSrc":"19526:4:26","nodeType":"YulLiteral","src":"19526:4:26","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19514:3:26","nodeType":"YulIdentifier","src":"19514:3:26"},"nativeSrc":"19514:17:26","nodeType":"YulFunctionCall","src":"19514:17:26"},"variables":[{"name":"dataPtr","nativeSrc":"19503:7:26","nodeType":"YulTypedName","src":"19503:7:26","type":""}]},{"nativeSrc":"19621:73:26","nodeType":"YulAssignment","src":"19621:73:26","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19643:3:26","nodeType":"YulIdentifier","src":"19643:3:26"},"nativeSrc":"19643:5:26","nodeType":"YulFunctionCall","src":"19643:5:26"},{"kind":"number","nativeSrc":"19650:4:26","nodeType":"YulLiteral","src":"19650:4:26","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19656:7:26","nodeType":"YulIdentifier","src":"19656:7:26"},{"arguments":[{"name":"result","nativeSrc":"19671:6:26","nodeType":"YulIdentifier","src":"19671:6:26"}],"functionName":{"name":"mload","nativeSrc":"19665:5:26","nodeType":"YulIdentifier","src":"19665:5:26"},"nativeSrc":"19665:13:26","nodeType":"YulFunctionCall","src":"19665:13:26"},{"name":"dataPtr","nativeSrc":"19680:7:26","nodeType":"YulIdentifier","src":"19680:7:26"},{"name":"mLen","nativeSrc":"19689:4:26","nodeType":"YulIdentifier","src":"19689:4:26"}],"functionName":{"name":"staticcall","nativeSrc":"19632:10:26","nodeType":"YulIdentifier","src":"19632:10:26"},"nativeSrc":"19632:62:26","nodeType":"YulFunctionCall","src":"19632:62:26"},"variableNames":[{"name":"success","nativeSrc":"19621:7:26","nodeType":"YulIdentifier","src":"19621:7:26"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19850:6:26","nodeType":"YulIdentifier","src":"19850:6:26"},{"name":"mLen","nativeSrc":"19858:4:26","nodeType":"YulIdentifier","src":"19858:4:26"}],"functionName":{"name":"mstore","nativeSrc":"19843:6:26","nodeType":"YulIdentifier","src":"19843:6:26"},"nativeSrc":"19843:20:26","nodeType":"YulFunctionCall","src":"19843:20:26"},"nativeSrc":"19843:20:26","nodeType":"YulExpressionStatement","src":"19843:20:26"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19946:4:26","nodeType":"YulLiteral","src":"19946:4:26","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19956:7:26","nodeType":"YulIdentifier","src":"19956:7:26"},{"name":"mLen","nativeSrc":"19965:4:26","nodeType":"YulIdentifier","src":"19965:4:26"}],"functionName":{"name":"add","nativeSrc":"19952:3:26","nodeType":"YulIdentifier","src":"19952:3:26"},"nativeSrc":"19952:18:26","nodeType":"YulFunctionCall","src":"19952:18:26"}],"functionName":{"name":"mstore","nativeSrc":"19939:6:26","nodeType":"YulIdentifier","src":"19939:6:26"},"nativeSrc":"19939:32:26","nodeType":"YulFunctionCall","src":"19939:32:26"},"nativeSrc":"19939:32:26","nodeType":"YulExpressionStatement","src":"19939:32:26"}]},"evmVersion":"cancun","externalReferences":[{"declaration":7162,"isOffset":false,"isSlot":false,"src":"19689:4:26","valueSize":1},{"declaration":7162,"isOffset":false,"isSlot":false,"src":"19858:4:26","valueSize":1},{"declaration":7162,"isOffset":false,"isSlot":false,"src":"19965:4:26","valueSize":1},{"declaration":7148,"isOffset":false,"isSlot":false,"src":"19518:6:26","valueSize":1},{"declaration":7148,"isOffset":false,"isSlot":false,"src":"19671:6:26","valueSize":1},{"declaration":7148,"isOffset":false,"isSlot":false,"src":"19850:6:26","valueSize":1},{"declaration":7146,"isOffset":false,"isSlot":false,"src":"19621:7:26","valueSize":1}],"flags":["memory-safe"],"id":7180,"nodeType":"InlineAssembly","src":"19460:521:26"}]},"documentation":{"id":7137,"nodeType":"StructuredDocumentation","src":"18968:88:26","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":7182,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19070:9:26","nodeType":"FunctionDefinition","parameters":{"id":7144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7139,"mutability":"mutable","name":"b","nameLocation":"19102:1:26","nodeType":"VariableDeclaration","scope":7182,"src":"19089:14:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7138,"name":"bytes","nodeType":"ElementaryTypeName","src":"19089:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7141,"mutability":"mutable","name":"e","nameLocation":"19126:1:26","nodeType":"VariableDeclaration","scope":7182,"src":"19113:14:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7140,"name":"bytes","nodeType":"ElementaryTypeName","src":"19113:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7143,"mutability":"mutable","name":"m","nameLocation":"19150:1:26","nodeType":"VariableDeclaration","scope":7182,"src":"19137:14:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7142,"name":"bytes","nodeType":"ElementaryTypeName","src":"19137:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19079:78:26"},"returnParameters":{"id":7149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7146,"mutability":"mutable","name":"success","nameLocation":"19186:7:26","nodeType":"VariableDeclaration","scope":7182,"src":"19181:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7145,"name":"bool","nodeType":"ElementaryTypeName","src":"19181:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7148,"mutability":"mutable","name":"result","nameLocation":"19208:6:26","nodeType":"VariableDeclaration","scope":7182,"src":"19195:19:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7147,"name":"bytes","nodeType":"ElementaryTypeName","src":"19195:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19180:35:26"},"scope":7925,"src":"19061:926:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7228,"nodeType":"Block","src":"20139:417:26","statements":[{"assignments":[7191],"declarations":[{"constant":false,"id":7191,"mutability":"mutable","name":"chunk","nameLocation":"20157:5:26","nodeType":"VariableDeclaration","scope":7228,"src":"20149:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7190,"name":"uint256","nodeType":"ElementaryTypeName","src":"20149:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7192,"nodeType":"VariableDeclarationStatement","src":"20149:13:26"},{"body":{"id":7224,"nodeType":"Block","src":"20222:307:26","statements":[{"AST":{"nativeSrc":"20324:73:26","nodeType":"YulBlock","src":"20324:73:26","statements":[{"nativeSrc":"20342:41:26","nodeType":"YulAssignment","src":"20342:41:26","value":{"arguments":[{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"20365:6:26","nodeType":"YulIdentifier","src":"20365:6:26"},{"kind":"number","nativeSrc":"20373:4:26","nodeType":"YulLiteral","src":"20373:4:26","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20361:3:26","nodeType":"YulIdentifier","src":"20361:3:26"},"nativeSrc":"20361:17:26","nodeType":"YulFunctionCall","src":"20361:17:26"},{"name":"i","nativeSrc":"20380:1:26","nodeType":"YulIdentifier","src":"20380:1:26"}],"functionName":{"name":"add","nativeSrc":"20357:3:26","nodeType":"YulIdentifier","src":"20357:3:26"},"nativeSrc":"20357:25:26","nodeType":"YulFunctionCall","src":"20357:25:26"}],"functionName":{"name":"mload","nativeSrc":"20351:5:26","nodeType":"YulIdentifier","src":"20351:5:26"},"nativeSrc":"20351:32:26","nodeType":"YulFunctionCall","src":"20351:32:26"},"variableNames":[{"name":"chunk","nativeSrc":"20342:5:26","nodeType":"YulIdentifier","src":"20342:5:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7185,"isOffset":false,"isSlot":false,"src":"20365:6:26","valueSize":1},{"declaration":7191,"isOffset":false,"isSlot":false,"src":"20342:5:26","valueSize":1},{"declaration":7194,"isOffset":false,"isSlot":false,"src":"20380:1:26","valueSize":1}],"flags":["memory-safe"],"id":7205,"nodeType":"InlineAssembly","src":"20299:98:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7206,"name":"chunk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7191,"src":"20414:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":7207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7209,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"20442:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30783230","id":7210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20446:4:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"20442:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7212,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7185,"src":"20452:6:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20459:6:26","memberName":"length","nodeType":"MemberAccess","src":"20452:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7208,"name":"saturatingSub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6500,"src":"20428:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20428:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20424:42:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7216,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20423:44:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20414:53:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20471:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20414:58:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7223,"nodeType":"IfStatement","src":"20410:109:26","trueBody":{"id":7222,"nodeType":"Block","src":"20474:45:26","statements":[{"expression":{"hexValue":"66616c7365","id":7220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20499:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7189,"id":7221,"nodeType":"Return","src":"20492:12:26"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7197,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"20192:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7198,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7185,"src":"20196:6:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20203:6:26","memberName":"length","nodeType":"MemberAccess","src":"20196:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20192:17:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7225,"initializationExpression":{"assignments":[7194],"declarations":[{"constant":false,"id":7194,"mutability":"mutable","name":"i","nameLocation":"20185:1:26","nodeType":"VariableDeclaration","scope":7225,"src":"20177:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7193,"name":"uint256","nodeType":"ElementaryTypeName","src":"20177:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7196,"initialValue":{"hexValue":"30","id":7195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20189:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20177:13:26"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":7203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7201,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"20211:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"30783230","id":7202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20216:4:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"20211:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7204,"nodeType":"ExpressionStatement","src":"20211:9:26"},"nodeType":"ForStatement","src":"20172:357:26"},{"expression":{"hexValue":"74727565","id":7226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20545:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7189,"id":7227,"nodeType":"Return","src":"20538:11:26"}]},"documentation":{"id":7183,"nodeType":"StructuredDocumentation","src":"19993:72:26","text":" @dev Returns whether the provided byte array is zero."},"id":7229,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20079:10:26","nodeType":"FunctionDefinition","parameters":{"id":7186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7185,"mutability":"mutable","name":"buffer","nameLocation":"20103:6:26","nodeType":"VariableDeclaration","scope":7229,"src":"20090:19:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7184,"name":"bytes","nodeType":"ElementaryTypeName","src":"20090:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20089:21:26"},"returnParameters":{"id":7189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7188,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7229,"src":"20133:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7187,"name":"bool","nodeType":"ElementaryTypeName","src":"20133:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20132:6:26"},"scope":7925,"src":"20070:486:26","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":7447,"nodeType":"Block","src":"20916:5124:26","statements":[{"id":7446,"nodeType":"UncheckedBlock","src":"20926:5108:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7237,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"21020:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":7238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21025:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"21020:6:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7243,"nodeType":"IfStatement","src":"21016:53:26","trueBody":{"id":7242,"nodeType":"Block","src":"21028:41:26","statements":[{"expression":{"id":7240,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"21053:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7236,"id":7241,"nodeType":"Return","src":"21046:8:26"}]}},{"assignments":[7245],"declarations":[{"constant":false,"id":7245,"mutability":"mutable","name":"aa","nameLocation":"22004:2:26","nodeType":"VariableDeclaration","scope":7446,"src":"21996:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7244,"name":"uint256","nodeType":"ElementaryTypeName","src":"21996:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7247,"initialValue":{"id":7246,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"22009:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21996:14:26"},{"assignments":[7249],"declarations":[{"constant":false,"id":7249,"mutability":"mutable","name":"xn","nameLocation":"22032:2:26","nodeType":"VariableDeclaration","scope":7446,"src":"22024:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7248,"name":"uint256","nodeType":"ElementaryTypeName","src":"22024:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7251,"initialValue":{"hexValue":"31","id":7250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22037:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"22024:14:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7252,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22057:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":7255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22064:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":7254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:3:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"22064:8:26","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":7256,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22063:10:26","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"22057:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7267,"nodeType":"IfStatement","src":"22053:92:26","trueBody":{"id":7266,"nodeType":"Block","src":"22075:70:26","statements":[{"expression":{"id":7260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7258,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22093:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":7259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22100:3:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"22093:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7261,"nodeType":"ExpressionStatement","src":"22093:10:26"},{"expression":{"id":7264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7262,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"22121:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":7263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22128:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"22121:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7265,"nodeType":"ExpressionStatement","src":"22121:9:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7268,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22162:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":7271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22169:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":7270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22174:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"22169:7:26","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":7272,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22168:9:26","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"22162:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7283,"nodeType":"IfStatement","src":"22158:90:26","trueBody":{"id":7282,"nodeType":"Block","src":"22179:69:26","statements":[{"expression":{"id":7276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7274,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22197:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":7275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22204:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"22197:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7277,"nodeType":"ExpressionStatement","src":"22197:9:26"},{"expression":{"id":7280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7278,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"22224:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":7279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22231:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22224:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7281,"nodeType":"ExpressionStatement","src":"22224:9:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7284,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22265:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":7287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22272:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":7286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22277:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22272:7:26","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":7288,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22271:9:26","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"22265:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7299,"nodeType":"IfStatement","src":"22261:90:26","trueBody":{"id":7298,"nodeType":"Block","src":"22282:69:26","statements":[{"expression":{"id":7292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7290,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22300:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":7291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22307:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22300:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7293,"nodeType":"ExpressionStatement","src":"22300:9:26"},{"expression":{"id":7296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7294,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"22327:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":7295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22334:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22327:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7297,"nodeType":"ExpressionStatement","src":"22327:9:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7300,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22368:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":7303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22375:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":7302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22380:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22375:7:26","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":7304,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22374:9:26","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22368:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7315,"nodeType":"IfStatement","src":"22364:89:26","trueBody":{"id":7314,"nodeType":"Block","src":"22385:68:26","statements":[{"expression":{"id":7308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7306,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22403:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":7307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22410:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22403:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7309,"nodeType":"ExpressionStatement","src":"22403:9:26"},{"expression":{"id":7312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7310,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"22430:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":7311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22437:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22430:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7313,"nodeType":"ExpressionStatement","src":"22430:8:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7316,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22470:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":7319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22477:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":7318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22482:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22477:6:26","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":7320,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22476:8:26","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22470:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7331,"nodeType":"IfStatement","src":"22466:87:26","trueBody":{"id":7330,"nodeType":"Block","src":"22486:67:26","statements":[{"expression":{"id":7324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7322,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22504:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":7323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22511:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22504:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7325,"nodeType":"ExpressionStatement","src":"22504:8:26"},{"expression":{"id":7328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7326,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"22530:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":7327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22537:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22530:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7329,"nodeType":"ExpressionStatement","src":"22530:8:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7332,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22570:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":7335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22577:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":7334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22582:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22577:6:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":7336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22576:8:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22570:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7347,"nodeType":"IfStatement","src":"22566:87:26","trueBody":{"id":7346,"nodeType":"Block","src":"22586:67:26","statements":[{"expression":{"id":7340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7338,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22604:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":7339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22611:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22604:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7341,"nodeType":"ExpressionStatement","src":"22604:8:26"},{"expression":{"id":7344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7342,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"22630:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":7343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22637:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22630:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7345,"nodeType":"ExpressionStatement","src":"22630:8:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7348,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"22670:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":7351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22677:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":7350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22682:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22677:6:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":7352,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22676:8:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22670:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7359,"nodeType":"IfStatement","src":"22666:61:26","trueBody":{"id":7358,"nodeType":"Block","src":"22686:41:26","statements":[{"expression":{"id":7356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7354,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"22704:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":7355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22711:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22704:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7357,"nodeType":"ExpressionStatement","src":"22704:8:26"}]}},{"expression":{"id":7367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7360,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"23147:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":7361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23153:1:26","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7362,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"23157:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23153:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7364,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23152:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23164:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23152:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23147:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7368,"nodeType":"ExpressionStatement","src":"23147:18:26"},{"expression":{"id":7378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7369,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25052:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7370,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25058:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7371,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"25063:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7372,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25067:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25063:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25058:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7375,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25057:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25074:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25057:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25052:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7379,"nodeType":"ExpressionStatement","src":"25052:23:26"},{"expression":{"id":7389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7380,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25161:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7381,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25167:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7382,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"25172:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7383,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25176:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25172:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25167:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7386,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25166:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25183:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25166:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25161:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7390,"nodeType":"ExpressionStatement","src":"25161:23:26"},{"expression":{"id":7400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7391,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25272:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7392,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25278:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7393,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"25283:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7394,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25287:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25283:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25278:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25277:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25294:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25277:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25272:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7401,"nodeType":"ExpressionStatement","src":"25272:23:26"},{"expression":{"id":7411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7402,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25381:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7403,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25387:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7404,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"25392:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7405,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25396:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25392:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25387:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7408,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25386:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25403:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25386:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25381:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7412,"nodeType":"ExpressionStatement","src":"25381:23:26"},{"expression":{"id":7422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7413,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25491:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7414,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25497:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7415,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"25502:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7416,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25506:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25502:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25497:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7419,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25496:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25513:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25496:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25491:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7423,"nodeType":"ExpressionStatement","src":"25491:23:26"},{"expression":{"id":7433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7424,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25601:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7425,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25607:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7426,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"25612:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7427,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25616:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25612:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25607:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7430,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25606:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25623:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25606:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25601:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7434,"nodeType":"ExpressionStatement","src":"25601:23:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7435,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"25990:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7438,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"26011:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"26016:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7440,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"26020:2:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26016:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26011:11:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7436,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"25995:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26004:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"25995:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25995:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25990:33:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7236,"id":7445,"nodeType":"Return","src":"25983:40:26"}]}]},"documentation":{"id":7230,"nodeType":"StructuredDocumentation","src":"20562:292:26","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."},"id":7448,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20868:4:26","nodeType":"FunctionDefinition","parameters":{"id":7233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7232,"mutability":"mutable","name":"a","nameLocation":"20881:1:26","nodeType":"VariableDeclaration","scope":7448,"src":"20873:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7231,"name":"uint256","nodeType":"ElementaryTypeName","src":"20873:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20872:11:26"},"returnParameters":{"id":7236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7235,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7448,"src":"20907:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7234,"name":"uint256","nodeType":"ElementaryTypeName","src":"20907:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20906:9:26"},"scope":7925,"src":"20859:5181:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7481,"nodeType":"Block","src":"26213:171:26","statements":[{"id":7480,"nodeType":"UncheckedBlock","src":"26223:155:26","statements":[{"assignments":[7460],"declarations":[{"constant":false,"id":7460,"mutability":"mutable","name":"result","nameLocation":"26255:6:26","nodeType":"VariableDeclaration","scope":7480,"src":"26247:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7459,"name":"uint256","nodeType":"ElementaryTypeName","src":"26247:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7464,"initialValue":{"arguments":[{"id":7462,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7451,"src":"26269:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7461,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[7448,7482],"referencedDeclaration":7448,"src":"26264:4:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26264:7:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26247:24:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7465,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7460,"src":"26292:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7469,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7454,"src":"26334:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}],"id":7468,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"26317:16:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$6280_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":7470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26317:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7471,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7460,"src":"26347:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7472,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7460,"src":"26356:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26347:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7474,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7451,"src":"26365:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26347:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26317:49:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7466,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"26301:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26310:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"26301:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26301:66:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26292:75:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7458,"id":7479,"nodeType":"Return","src":"26285:82:26"}]}]},"documentation":{"id":7449,"nodeType":"StructuredDocumentation","src":"26046:86:26","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":7482,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"26146:4:26","nodeType":"FunctionDefinition","parameters":{"id":7455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7451,"mutability":"mutable","name":"a","nameLocation":"26159:1:26","nodeType":"VariableDeclaration","scope":7482,"src":"26151:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7450,"name":"uint256","nodeType":"ElementaryTypeName","src":"26151:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7454,"mutability":"mutable","name":"rounding","nameLocation":"26171:8:26","nodeType":"VariableDeclaration","scope":7482,"src":"26162:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"},"typeName":{"id":7453,"nodeType":"UserDefinedTypeName","pathNode":{"id":7452,"name":"Rounding","nameLocations":["26162:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6280,"src":"26162:8:26"},"referencedDeclaration":6280,"src":"26162:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"26150:30:26"},"returnParameters":{"id":7458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7482,"src":"26204:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7456,"name":"uint256","nodeType":"ElementaryTypeName","src":"26204:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26203:9:26"},"scope":7925,"src":"26137:247:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7572,"nodeType":"Block","src":"26573:2359:26","statements":[{"expression":{"id":7499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7490,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"26655:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7493,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"26675:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":7494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26679:34:26","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26675:38:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7491,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"26659:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26668:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"26659:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26659:55:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":7497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26718:1:26","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26659:60:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26655:64:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7500,"nodeType":"ExpressionStatement","src":"26655:64:26"},{"expression":{"id":7513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7501,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"26795:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7504,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"26817:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7505,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"26822:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26817:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7507,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26816:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":7508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26827:18:26","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26816:29:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7502,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"26800:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26809:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"26800:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26800:46:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":7511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26850:1:26","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26800:51:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26795:56:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7514,"nodeType":"ExpressionStatement","src":"26795:56:26"},{"expression":{"id":7527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7515,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"26926:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7518,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"26948:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7519,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"26953:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26948:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7521,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26947:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":7522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26958:10:26","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26947:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7516,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"26931:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26940:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"26931:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26931:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":7525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26973:1:26","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26931:43:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26926:48:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7528,"nodeType":"ExpressionStatement","src":"26926:48:26"},{"expression":{"id":7541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7529,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"27049:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7532,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"27071:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7533,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"27076:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27071:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7535,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27070:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":7536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27081:6:26","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"27070:17:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7530,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"27054:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27063:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"27054:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27054:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":7539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27092:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"27054:39:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27049:44:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7542,"nodeType":"ExpressionStatement","src":"27049:44:26"},{"expression":{"id":7555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7543,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"27166:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7546,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"27188:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7547,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"27193:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27188:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7549,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27187:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":7550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27198:4:26","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"27187:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7544,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"27171:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27180:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"27171:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27171:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":7553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27207:1:26","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"27171:37:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27166:42:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7556,"nodeType":"ExpressionStatement","src":"27166:42:26"},{"expression":{"id":7569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7557,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"27280:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7560,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"27302:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7561,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7488,"src":"27307:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27302:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7563,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27301:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":7564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27312:3:26","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27301:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7558,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"27285:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27294:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"27285:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27285:31:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":7567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27320:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"27285:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27280:41:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7570,"nodeType":"ExpressionStatement","src":"27280:41:26"},{"AST":{"nativeSrc":"28807:119:26","nodeType":"YulBlock","src":"28807:119:26","statements":[{"nativeSrc":"28821:95:26","nodeType":"YulAssignment","src":"28821:95:26","value":{"arguments":[{"name":"r","nativeSrc":"28829:1:26","nodeType":"YulIdentifier","src":"28829:1:26"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28841:1:26","nodeType":"YulIdentifier","src":"28841:1:26"},{"name":"x","nativeSrc":"28844:1:26","nodeType":"YulIdentifier","src":"28844:1:26"}],"functionName":{"name":"shr","nativeSrc":"28837:3:26","nodeType":"YulIdentifier","src":"28837:3:26"},"nativeSrc":"28837:9:26","nodeType":"YulFunctionCall","src":"28837:9:26"},{"kind":"number","nativeSrc":"28848:66:26","nodeType":"YulLiteral","src":"28848:66:26","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28832:4:26","nodeType":"YulIdentifier","src":"28832:4:26"},"nativeSrc":"28832:83:26","nodeType":"YulFunctionCall","src":"28832:83:26"}],"functionName":{"name":"or","nativeSrc":"28826:2:26","nodeType":"YulIdentifier","src":"28826:2:26"},"nativeSrc":"28826:90:26","nodeType":"YulFunctionCall","src":"28826:90:26"},"variableNames":[{"name":"r","nativeSrc":"28821:1:26","nodeType":"YulIdentifier","src":"28821:1:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7488,"isOffset":false,"isSlot":false,"src":"28821:1:26","valueSize":1},{"declaration":7488,"isOffset":false,"isSlot":false,"src":"28829:1:26","valueSize":1},{"declaration":7488,"isOffset":false,"isSlot":false,"src":"28841:1:26","valueSize":1},{"declaration":7485,"isOffset":false,"isSlot":false,"src":"28844:1:26","valueSize":1}],"flags":["memory-safe"],"id":7571,"nodeType":"InlineAssembly","src":"28782:144:26"}]},"documentation":{"id":7483,"nodeType":"StructuredDocumentation","src":"26390:119:26","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":7573,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26523:4:26","nodeType":"FunctionDefinition","parameters":{"id":7486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7485,"mutability":"mutable","name":"x","nameLocation":"26536:1:26","nodeType":"VariableDeclaration","scope":7573,"src":"26528:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7484,"name":"uint256","nodeType":"ElementaryTypeName","src":"26528:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26527:11:26"},"returnParameters":{"id":7489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7488,"mutability":"mutable","name":"r","nameLocation":"26570:1:26","nodeType":"VariableDeclaration","scope":7573,"src":"26562:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7487,"name":"uint256","nodeType":"ElementaryTypeName","src":"26562:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26561:11:26"},"scope":7925,"src":"26514:2418:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7606,"nodeType":"Block","src":"29165:175:26","statements":[{"id":7605,"nodeType":"UncheckedBlock","src":"29175:159:26","statements":[{"assignments":[7585],"declarations":[{"constant":false,"id":7585,"mutability":"mutable","name":"result","nameLocation":"29207:6:26","nodeType":"VariableDeclaration","scope":7605,"src":"29199:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7584,"name":"uint256","nodeType":"ElementaryTypeName","src":"29199:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7589,"initialValue":{"arguments":[{"id":7587,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7576,"src":"29221:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7586,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[7573,7607],"referencedDeclaration":7573,"src":"29216:4:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29216:11:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29199:28:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7590,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7585,"src":"29248:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7594,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7579,"src":"29290:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}],"id":7593,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"29273:16:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$6280_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":7595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29273:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29303:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":7597,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7585,"src":"29308:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29303:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7599,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7576,"src":"29317:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29303:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"29273:49:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7591,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"29257:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29266:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"29257:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29257:66:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29248:75:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7583,"id":7604,"nodeType":"Return","src":"29241:82:26"}]}]},"documentation":{"id":7574,"nodeType":"StructuredDocumentation","src":"28938:142:26","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":7607,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"29094:4:26","nodeType":"FunctionDefinition","parameters":{"id":7580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7576,"mutability":"mutable","name":"value","nameLocation":"29107:5:26","nodeType":"VariableDeclaration","scope":7607,"src":"29099:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7575,"name":"uint256","nodeType":"ElementaryTypeName","src":"29099:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7579,"mutability":"mutable","name":"rounding","nameLocation":"29123:8:26","nodeType":"VariableDeclaration","scope":7607,"src":"29114:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"},"typeName":{"id":7578,"nodeType":"UserDefinedTypeName","pathNode":{"id":7577,"name":"Rounding","nameLocations":["29114:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6280,"src":"29114:8:26"},"referencedDeclaration":6280,"src":"29114:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"29098:34:26"},"returnParameters":{"id":7583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7607,"src":"29156:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7581,"name":"uint256","nodeType":"ElementaryTypeName","src":"29156:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29155:9:26"},"scope":7925,"src":"29085:255:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7735,"nodeType":"Block","src":"29533:854:26","statements":[{"assignments":[7616],"declarations":[{"constant":false,"id":7616,"mutability":"mutable","name":"result","nameLocation":"29551:6:26","nodeType":"VariableDeclaration","scope":7735,"src":"29543:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7615,"name":"uint256","nodeType":"ElementaryTypeName","src":"29543:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7618,"initialValue":{"hexValue":"30","id":7617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29560:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29543:18:26"},{"id":7732,"nodeType":"UncheckedBlock","src":"29571:787:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7619,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"29599:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":7622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29608:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":7621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29614:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29608:8:26","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29599:17:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7635,"nodeType":"IfStatement","src":"29595:103:26","trueBody":{"id":7634,"nodeType":"Block","src":"29618:80:26","statements":[{"expression":{"id":7628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7624,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"29636:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":7627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29645:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":7626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29651:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29645:8:26","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29636:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7629,"nodeType":"ExpressionStatement","src":"29636:17:26"},{"expression":{"id":7632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7630,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"29671:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":7631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29681:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29671:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7633,"nodeType":"ExpressionStatement","src":"29671:12:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7636,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"29715:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":7639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29724:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":7638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29730:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29724:8:26","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29715:17:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7652,"nodeType":"IfStatement","src":"29711:103:26","trueBody":{"id":7651,"nodeType":"Block","src":"29734:80:26","statements":[{"expression":{"id":7645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7641,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"29752:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":7644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29761:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":7643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29767:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29761:8:26","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29752:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7646,"nodeType":"ExpressionStatement","src":"29752:17:26"},{"expression":{"id":7649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7647,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"29787:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":7648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29797:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29787:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7650,"nodeType":"ExpressionStatement","src":"29787:12:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7653,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"29831:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":7656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29840:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":7655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29846:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29840:8:26","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29831:17:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7669,"nodeType":"IfStatement","src":"29827:103:26","trueBody":{"id":7668,"nodeType":"Block","src":"29850:80:26","statements":[{"expression":{"id":7662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7658,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"29868:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":7661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29877:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":7660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29883:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29877:8:26","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29868:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7663,"nodeType":"ExpressionStatement","src":"29868:17:26"},{"expression":{"id":7666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7664,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"29903:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":7665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29913:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29903:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7667,"nodeType":"ExpressionStatement","src":"29903:12:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7670,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"29947:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":7673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29956:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":7672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29962:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29956:7:26","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29947:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7686,"nodeType":"IfStatement","src":"29943:100:26","trueBody":{"id":7685,"nodeType":"Block","src":"29965:78:26","statements":[{"expression":{"id":7679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7675,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"29983:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":7678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29992:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":7677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29998:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29992:7:26","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29983:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7680,"nodeType":"ExpressionStatement","src":"29983:16:26"},{"expression":{"id":7683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7681,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"30017:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":7682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30027:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"30017:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7684,"nodeType":"ExpressionStatement","src":"30017:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7687,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"30060:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":7690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30069:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":7689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30075:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30069:7:26","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"30060:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7703,"nodeType":"IfStatement","src":"30056:100:26","trueBody":{"id":7702,"nodeType":"Block","src":"30078:78:26","statements":[{"expression":{"id":7696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7692,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"30096:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":7695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30105:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":7694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30111:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30105:7:26","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"30096:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7697,"nodeType":"ExpressionStatement","src":"30096:16:26"},{"expression":{"id":7700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7698,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"30130:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":7699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30140:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30130:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7701,"nodeType":"ExpressionStatement","src":"30130:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7704,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"30173:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":7707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30182:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":7706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30188:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"30182:7:26","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"30173:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7720,"nodeType":"IfStatement","src":"30169:100:26","trueBody":{"id":7719,"nodeType":"Block","src":"30191:78:26","statements":[{"expression":{"id":7713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7709,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"30209:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":7712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30218:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":7711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30224:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"30218:7:26","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"30209:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7714,"nodeType":"ExpressionStatement","src":"30209:16:26"},{"expression":{"id":7717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7715,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"30243:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":7716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30253:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"30243:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7718,"nodeType":"ExpressionStatement","src":"30243:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7721,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"30286:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":7724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30295:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":7723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30301:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30295:7:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"30286:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7731,"nodeType":"IfStatement","src":"30282:66:26","trueBody":{"id":7730,"nodeType":"Block","src":"30304:44:26","statements":[{"expression":{"id":7728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7726,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"30322:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":7727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30332:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30322:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7729,"nodeType":"ExpressionStatement","src":"30322:11:26"}]}}]},{"expression":{"id":7733,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"30374:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7614,"id":7734,"nodeType":"Return","src":"30367:13:26"}]},"documentation":{"id":7608,"nodeType":"StructuredDocumentation","src":"29346:120:26","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":7736,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29480:5:26","nodeType":"FunctionDefinition","parameters":{"id":7611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7610,"mutability":"mutable","name":"value","nameLocation":"29494:5:26","nodeType":"VariableDeclaration","scope":7736,"src":"29486:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7609,"name":"uint256","nodeType":"ElementaryTypeName","src":"29486:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29485:15:26"},"returnParameters":{"id":7614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7613,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7736,"src":"29524:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7612,"name":"uint256","nodeType":"ElementaryTypeName","src":"29524:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29523:9:26"},"scope":7925,"src":"29471:916:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7769,"nodeType":"Block","src":"30622:177:26","statements":[{"id":7768,"nodeType":"UncheckedBlock","src":"30632:161:26","statements":[{"assignments":[7748],"declarations":[{"constant":false,"id":7748,"mutability":"mutable","name":"result","nameLocation":"30664:6:26","nodeType":"VariableDeclaration","scope":7768,"src":"30656:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7747,"name":"uint256","nodeType":"ElementaryTypeName","src":"30656:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7752,"initialValue":{"arguments":[{"id":7750,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7739,"src":"30679:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7749,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[7736,7770],"referencedDeclaration":7736,"src":"30673:5:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30673:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30656:29:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7753,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7748,"src":"30706:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7757,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7742,"src":"30748:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}],"id":7756,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"30731:16:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$6280_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":7758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30731:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30761:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":7760,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7748,"src":"30767:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30761:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7739,"src":"30776:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30761:20:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30731:50:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7754,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"30715:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30724:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"30715:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30715:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30706:76:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7746,"id":7767,"nodeType":"Return","src":"30699:83:26"}]}]},"documentation":{"id":7737,"nodeType":"StructuredDocumentation","src":"30393:143:26","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":7770,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30550:5:26","nodeType":"FunctionDefinition","parameters":{"id":7743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7739,"mutability":"mutable","name":"value","nameLocation":"30564:5:26","nodeType":"VariableDeclaration","scope":7770,"src":"30556:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7738,"name":"uint256","nodeType":"ElementaryTypeName","src":"30556:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7742,"mutability":"mutable","name":"rounding","nameLocation":"30580:8:26","nodeType":"VariableDeclaration","scope":7770,"src":"30571:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"},"typeName":{"id":7741,"nodeType":"UserDefinedTypeName","pathNode":{"id":7740,"name":"Rounding","nameLocations":["30571:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6280,"src":"30571:8:26"},"referencedDeclaration":6280,"src":"30571:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30555:34:26"},"returnParameters":{"id":7746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7745,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7770,"src":"30613:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7744,"name":"uint256","nodeType":"ElementaryTypeName","src":"30613:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30612:9:26"},"scope":7925,"src":"30541:258:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7846,"nodeType":"Block","src":"31117:675:26","statements":[{"expression":{"id":7787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7778,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"31199:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7781,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7773,"src":"31219:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":7782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31223:34:26","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"31219:38:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7779,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"31203:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31212:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"31203:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31203:55:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":7785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31262:1:26","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"31203:60:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31199:64:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7788,"nodeType":"ExpressionStatement","src":"31199:64:26"},{"expression":{"id":7801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7789,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"31339:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7792,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7773,"src":"31361:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7793,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"31366:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31361:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7795,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31360:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":7796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31371:18:26","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31360:29:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7790,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"31344:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31353:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"31344:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31344:46:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":7799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31394:1:26","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31344:51:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31339:56:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7802,"nodeType":"ExpressionStatement","src":"31339:56:26"},{"expression":{"id":7815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7803,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"31470:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7806,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7773,"src":"31492:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7807,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"31497:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31492:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7809,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31491:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":7810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31502:10:26","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31491:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7804,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"31475:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31484:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"31475:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31475:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":7813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31517:1:26","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31475:43:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31470:48:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7816,"nodeType":"ExpressionStatement","src":"31470:48:26"},{"expression":{"id":7829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7817,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"31593:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7820,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7773,"src":"31615:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7821,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"31620:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31615:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7823,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31614:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":7824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31625:6:26","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31614:17:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7818,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"31598:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31607:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"31598:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31598:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":7827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31636:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31598:39:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31593:44:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7830,"nodeType":"ExpressionStatement","src":"31593:44:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7831,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"31743:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":7832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31748:1:26","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31743:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7834,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31742:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7837,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7773,"src":"31770:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7838,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"31775:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31770:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7840,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31769:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":7841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31780:4:26","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31769:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7835,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"31753:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31762:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"31753:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31753:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31742:43:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7777,"id":7845,"nodeType":"Return","src":"31735:50:26"}]},"documentation":{"id":7771,"nodeType":"StructuredDocumentation","src":"30805:246:26","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":7847,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31065:6:26","nodeType":"FunctionDefinition","parameters":{"id":7774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7773,"mutability":"mutable","name":"x","nameLocation":"31080:1:26","nodeType":"VariableDeclaration","scope":7847,"src":"31072:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7772,"name":"uint256","nodeType":"ElementaryTypeName","src":"31072:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31071:11:26"},"returnParameters":{"id":7777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7776,"mutability":"mutable","name":"r","nameLocation":"31114:1:26","nodeType":"VariableDeclaration","scope":7847,"src":"31106:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7775,"name":"uint256","nodeType":"ElementaryTypeName","src":"31106:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31105:11:26"},"scope":7925,"src":"31056:736:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7883,"nodeType":"Block","src":"32029:184:26","statements":[{"id":7882,"nodeType":"UncheckedBlock","src":"32039:168:26","statements":[{"assignments":[7859],"declarations":[{"constant":false,"id":7859,"mutability":"mutable","name":"result","nameLocation":"32071:6:26","nodeType":"VariableDeclaration","scope":7882,"src":"32063:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7858,"name":"uint256","nodeType":"ElementaryTypeName","src":"32063:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7863,"initialValue":{"arguments":[{"id":7861,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7850,"src":"32087:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7860,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[7847,7884],"referencedDeclaration":7847,"src":"32080:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32080:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32063:30:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7864,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7859,"src":"32114:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7868,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7853,"src":"32156:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}],"id":7867,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"32139:16:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$6280_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":7869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32139:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32169:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7871,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7859,"src":"32175:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":7872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32185:1:26","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"32175:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7874,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"32174:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32169:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7876,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7850,"src":"32190:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32169:26:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"32139:56:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":7865,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"32123:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":7866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32132:6:26","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"32123:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":7879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32123:73:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32114:82:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7857,"id":7881,"nodeType":"Return","src":"32107:89:26"}]}]},"documentation":{"id":7848,"nodeType":"StructuredDocumentation","src":"31798:144:26","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":7884,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31956:6:26","nodeType":"FunctionDefinition","parameters":{"id":7854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7850,"mutability":"mutable","name":"value","nameLocation":"31971:5:26","nodeType":"VariableDeclaration","scope":7884,"src":"31963:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7849,"name":"uint256","nodeType":"ElementaryTypeName","src":"31963:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7853,"mutability":"mutable","name":"rounding","nameLocation":"31987:8:26","nodeType":"VariableDeclaration","scope":7884,"src":"31978:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"},"typeName":{"id":7852,"nodeType":"UserDefinedTypeName","pathNode":{"id":7851,"name":"Rounding","nameLocations":["31978:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6280,"src":"31978:8:26"},"referencedDeclaration":6280,"src":"31978:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31962:34:26"},"returnParameters":{"id":7857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7884,"src":"32020:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7855,"name":"uint256","nodeType":"ElementaryTypeName","src":"32020:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32019:9:26"},"scope":7925,"src":"31947:266:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7902,"nodeType":"Block","src":"32411:48:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7895,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7888,"src":"32434:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}],"id":7894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32428:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":7893,"name":"uint8","nodeType":"ElementaryTypeName","src":"32428:5:26","typeDescriptions":{}}},"id":7896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32428:15:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":7897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32446:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32428:19:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":7899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32451:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32428:24:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7892,"id":7901,"nodeType":"Return","src":"32421:31:26"}]},"documentation":{"id":7885,"nodeType":"StructuredDocumentation","src":"32219:113:26","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":7903,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32346:16:26","nodeType":"FunctionDefinition","parameters":{"id":7889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7888,"mutability":"mutable","name":"rounding","nameLocation":"32372:8:26","nodeType":"VariableDeclaration","scope":7903,"src":"32363:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"},"typeName":{"id":7887,"nodeType":"UserDefinedTypeName","pathNode":{"id":7886,"name":"Rounding","nameLocations":["32363:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6280,"src":"32363:8:26"},"referencedDeclaration":6280,"src":"32363:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$6280","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32362:19:26"},"returnParameters":{"id":7892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7891,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7903,"src":"32405:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7890,"name":"bool","nodeType":"ElementaryTypeName","src":"32405:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32404:6:26"},"scope":7925,"src":"32337:122:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7923,"nodeType":"Block","src":"32602:59:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7912,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7906,"src":"32627:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32632:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"32627:6:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"323536","id":7915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32635:3:26","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323535","id":7916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32640:3:26","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":7918,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7906,"src":"32651:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7917,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[7573,7607],"referencedDeclaration":7573,"src":"32646:4:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32646:7:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32640:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7911,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6557,"src":"32619:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":7921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32619:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7910,"id":7922,"nodeType":"Return","src":"32612:42:26"}]},"documentation":{"id":7904,"nodeType":"StructuredDocumentation","src":"32465:76:26","text":" @dev Counts the number of leading zero bits in a uint256."},"id":7924,"implemented":true,"kind":"function","modifiers":[],"name":"clz","nameLocation":"32555:3:26","nodeType":"FunctionDefinition","parameters":{"id":7907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7906,"mutability":"mutable","name":"x","nameLocation":"32567:1:26","nodeType":"VariableDeclaration","scope":7924,"src":"32559:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7905,"name":"uint256","nodeType":"ElementaryTypeName","src":"32559:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32558:11:26"},"returnParameters":{"id":7910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7924,"src":"32593:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7908,"name":"uint256","nodeType":"ElementaryTypeName","src":"32593:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32592:9:26"},"scope":7925,"src":"32546:115:26","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7926,"src":"281:32382:26","usedErrors":[],"usedEvents":[]}],"src":"103:32561:26"},"id":26},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[9690]},"id":9691,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7927,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:27"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":7928,"nodeType":"StructuredDocumentation","src":"218:550:27","text":" @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":9690,"linearizedBaseContracts":[9690],"name":"SafeCast","nameLocation":"777:8:27","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7929,"nodeType":"StructuredDocumentation","src":"792:67:27","text":" @dev Value doesn't fit in a uint of `bits` size."},"errorSelector":"6dfcc650","id":7935,"name":"SafeCastOverflowedUintDowncast","nameLocation":"870:30:27","nodeType":"ErrorDefinition","parameters":{"id":7934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7931,"mutability":"mutable","name":"bits","nameLocation":"907:4:27","nodeType":"VariableDeclaration","scope":7935,"src":"901:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7930,"name":"uint8","nodeType":"ElementaryTypeName","src":"901:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7933,"mutability":"mutable","name":"value","nameLocation":"921:5:27","nodeType":"VariableDeclaration","scope":7935,"src":"913:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7932,"name":"uint256","nodeType":"ElementaryTypeName","src":"913:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"900:27:27"},"src":"864:64:27"},{"documentation":{"id":7936,"nodeType":"StructuredDocumentation","src":"934:74:27","text":" @dev An int value doesn't fit in a uint of `bits` size."},"errorSelector":"a8ce4432","id":7940,"name":"SafeCastOverflowedIntToUint","nameLocation":"1019:27:27","nodeType":"ErrorDefinition","parameters":{"id":7939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7938,"mutability":"mutable","name":"value","nameLocation":"1054:5:27","nodeType":"VariableDeclaration","scope":7940,"src":"1047:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7937,"name":"int256","nodeType":"ElementaryTypeName","src":"1047:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1046:14:27"},"src":"1013:48:27"},{"documentation":{"id":7941,"nodeType":"StructuredDocumentation","src":"1067:67:27","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":7947,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1145:29:27","nodeType":"ErrorDefinition","parameters":{"id":7946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7943,"mutability":"mutable","name":"bits","nameLocation":"1181:4:27","nodeType":"VariableDeclaration","scope":7947,"src":"1175:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7942,"name":"uint8","nodeType":"ElementaryTypeName","src":"1175:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7945,"mutability":"mutable","name":"value","nameLocation":"1194:5:27","nodeType":"VariableDeclaration","scope":7947,"src":"1187:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7944,"name":"int256","nodeType":"ElementaryTypeName","src":"1187:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1174:26:27"},"src":"1139:62:27"},{"documentation":{"id":7948,"nodeType":"StructuredDocumentation","src":"1207:74:27","text":" @dev A uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":7952,"name":"SafeCastOverflowedUintToInt","nameLocation":"1292:27:27","nodeType":"ErrorDefinition","parameters":{"id":7951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7950,"mutability":"mutable","name":"value","nameLocation":"1328:5:27","nodeType":"VariableDeclaration","scope":7952,"src":"1320:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7949,"name":"uint256","nodeType":"ElementaryTypeName","src":"1320:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1319:15:27"},"src":"1286:49:27"},{"body":{"id":7979,"nodeType":"Block","src":"1692:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7960,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"1706:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1719:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":7962,"name":"uint248","nodeType":"ElementaryTypeName","src":"1719:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":7961,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1714:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1714:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":7965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1728:3:27","memberName":"max","nodeType":"MemberAccess","src":"1714:17:27","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1706:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7973,"nodeType":"IfStatement","src":"1702:105:27","trueBody":{"id":7972,"nodeType":"Block","src":"1733:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":7968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1785:3:27","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":7969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"1790:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7967,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"1754:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1754:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7971,"nodeType":"RevertStatement","src":"1747:49:27"}]}},{"expression":{"arguments":[{"id":7976,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"1831:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1823:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":7974,"name":"uint248","nodeType":"ElementaryTypeName","src":"1823:7:27","typeDescriptions":{}}},"id":7977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1823:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":7959,"id":7978,"nodeType":"Return","src":"1816:21:27"}]},"documentation":{"id":7953,"nodeType":"StructuredDocumentation","src":"1341:280:27","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":7980,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1635:9:27","nodeType":"FunctionDefinition","parameters":{"id":7956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7955,"mutability":"mutable","name":"value","nameLocation":"1653:5:27","nodeType":"VariableDeclaration","scope":7980,"src":"1645:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7954,"name":"uint256","nodeType":"ElementaryTypeName","src":"1645:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1644:15:27"},"returnParameters":{"id":7959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7980,"src":"1683:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":7957,"name":"uint248","nodeType":"ElementaryTypeName","src":"1683:7:27","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1682:9:27"},"scope":9690,"src":"1626:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8007,"nodeType":"Block","src":"2201:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7988,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7983,"src":"2215:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2228:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":7990,"name":"uint240","nodeType":"ElementaryTypeName","src":"2228:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":7989,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2223:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2223:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":7993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2237:3:27","memberName":"max","nodeType":"MemberAccess","src":"2223:17:27","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2215:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8001,"nodeType":"IfStatement","src":"2211:105:27","trueBody":{"id":8000,"nodeType":"Block","src":"2242:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":7996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2294:3:27","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":7997,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7983,"src":"2299:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7995,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"2263:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":7998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7999,"nodeType":"RevertStatement","src":"2256:49:27"}]}},{"expression":{"arguments":[{"id":8004,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7983,"src":"2340:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2332:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":8002,"name":"uint240","nodeType":"ElementaryTypeName","src":"2332:7:27","typeDescriptions":{}}},"id":8005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2332:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":7987,"id":8006,"nodeType":"Return","src":"2325:21:27"}]},"documentation":{"id":7981,"nodeType":"StructuredDocumentation","src":"1850:280:27","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":8008,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2144:9:27","nodeType":"FunctionDefinition","parameters":{"id":7984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7983,"mutability":"mutable","name":"value","nameLocation":"2162:5:27","nodeType":"VariableDeclaration","scope":8008,"src":"2154:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7982,"name":"uint256","nodeType":"ElementaryTypeName","src":"2154:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2153:15:27"},"returnParameters":{"id":7987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8008,"src":"2192:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":7985,"name":"uint240","nodeType":"ElementaryTypeName","src":"2192:7:27","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2191:9:27"},"scope":9690,"src":"2135:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8035,"nodeType":"Block","src":"2710:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8016,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"2724:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2737:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":8018,"name":"uint232","nodeType":"ElementaryTypeName","src":"2737:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":8017,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2732:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2732:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":8021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2746:3:27","memberName":"max","nodeType":"MemberAccess","src":"2732:17:27","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2724:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8029,"nodeType":"IfStatement","src":"2720:105:27","trueBody":{"id":8028,"nodeType":"Block","src":"2751:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":8024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2803:3:27","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":8025,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"2808:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8023,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"2772:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8027,"nodeType":"RevertStatement","src":"2765:49:27"}]}},{"expression":{"arguments":[{"id":8032,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"2849:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2841:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":8030,"name":"uint232","nodeType":"ElementaryTypeName","src":"2841:7:27","typeDescriptions":{}}},"id":8033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2841:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":8015,"id":8034,"nodeType":"Return","src":"2834:21:27"}]},"documentation":{"id":8009,"nodeType":"StructuredDocumentation","src":"2359:280:27","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":8036,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2653:9:27","nodeType":"FunctionDefinition","parameters":{"id":8012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8011,"mutability":"mutable","name":"value","nameLocation":"2671:5:27","nodeType":"VariableDeclaration","scope":8036,"src":"2663:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8010,"name":"uint256","nodeType":"ElementaryTypeName","src":"2663:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2662:15:27"},"returnParameters":{"id":8015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8014,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8036,"src":"2701:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":8013,"name":"uint232","nodeType":"ElementaryTypeName","src":"2701:7:27","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2700:9:27"},"scope":9690,"src":"2644:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8063,"nodeType":"Block","src":"3219:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8044,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8039,"src":"3233:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3246:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":8046,"name":"uint224","nodeType":"ElementaryTypeName","src":"3246:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":8045,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3241:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3241:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":8049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3255:3:27","memberName":"max","nodeType":"MemberAccess","src":"3241:17:27","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3233:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8057,"nodeType":"IfStatement","src":"3229:105:27","trueBody":{"id":8056,"nodeType":"Block","src":"3260:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":8052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3312:3:27","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":8053,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8039,"src":"3317:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8051,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"3281:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3281:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8055,"nodeType":"RevertStatement","src":"3274:49:27"}]}},{"expression":{"arguments":[{"id":8060,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8039,"src":"3358:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3350:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":8058,"name":"uint224","nodeType":"ElementaryTypeName","src":"3350:7:27","typeDescriptions":{}}},"id":8061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3350:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":8043,"id":8062,"nodeType":"Return","src":"3343:21:27"}]},"documentation":{"id":8037,"nodeType":"StructuredDocumentation","src":"2868:280:27","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":8064,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3162:9:27","nodeType":"FunctionDefinition","parameters":{"id":8040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8039,"mutability":"mutable","name":"value","nameLocation":"3180:5:27","nodeType":"VariableDeclaration","scope":8064,"src":"3172:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8038,"name":"uint256","nodeType":"ElementaryTypeName","src":"3172:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3171:15:27"},"returnParameters":{"id":8043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8042,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8064,"src":"3210:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":8041,"name":"uint224","nodeType":"ElementaryTypeName","src":"3210:7:27","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3209:9:27"},"scope":9690,"src":"3153:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8091,"nodeType":"Block","src":"3728:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8072,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8067,"src":"3742:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3755:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":8074,"name":"uint216","nodeType":"ElementaryTypeName","src":"3755:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":8073,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3750:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3750:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":8077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3764:3:27","memberName":"max","nodeType":"MemberAccess","src":"3750:17:27","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3742:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8085,"nodeType":"IfStatement","src":"3738:105:27","trueBody":{"id":8084,"nodeType":"Block","src":"3769:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":8080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3821:3:27","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":8081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8067,"src":"3826:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8079,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"3790:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3790:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8083,"nodeType":"RevertStatement","src":"3783:49:27"}]}},{"expression":{"arguments":[{"id":8088,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8067,"src":"3867:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3859:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":8086,"name":"uint216","nodeType":"ElementaryTypeName","src":"3859:7:27","typeDescriptions":{}}},"id":8089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":8071,"id":8090,"nodeType":"Return","src":"3852:21:27"}]},"documentation":{"id":8065,"nodeType":"StructuredDocumentation","src":"3377:280:27","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":8092,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3671:9:27","nodeType":"FunctionDefinition","parameters":{"id":8068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8067,"mutability":"mutable","name":"value","nameLocation":"3689:5:27","nodeType":"VariableDeclaration","scope":8092,"src":"3681:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8066,"name":"uint256","nodeType":"ElementaryTypeName","src":"3681:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3680:15:27"},"returnParameters":{"id":8071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8070,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8092,"src":"3719:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":8069,"name":"uint216","nodeType":"ElementaryTypeName","src":"3719:7:27","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3718:9:27"},"scope":9690,"src":"3662:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8119,"nodeType":"Block","src":"4237:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8100,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"4251:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4264:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":8102,"name":"uint208","nodeType":"ElementaryTypeName","src":"4264:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":8101,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"4259:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4259:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":8105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4273:3:27","memberName":"max","nodeType":"MemberAccess","src":"4259:17:27","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4251:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8113,"nodeType":"IfStatement","src":"4247:105:27","trueBody":{"id":8112,"nodeType":"Block","src":"4278:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":8108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4330:3:27","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":8109,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"4335:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8107,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"4299:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4299:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8111,"nodeType":"RevertStatement","src":"4292:49:27"}]}},{"expression":{"arguments":[{"id":8116,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"4376:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4368:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":8114,"name":"uint208","nodeType":"ElementaryTypeName","src":"4368:7:27","typeDescriptions":{}}},"id":8117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4368:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":8099,"id":8118,"nodeType":"Return","src":"4361:21:27"}]},"documentation":{"id":8093,"nodeType":"StructuredDocumentation","src":"3886:280:27","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":8120,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4180:9:27","nodeType":"FunctionDefinition","parameters":{"id":8096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8095,"mutability":"mutable","name":"value","nameLocation":"4198:5:27","nodeType":"VariableDeclaration","scope":8120,"src":"4190:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8094,"name":"uint256","nodeType":"ElementaryTypeName","src":"4190:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4189:15:27"},"returnParameters":{"id":8099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8120,"src":"4228:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":8097,"name":"uint208","nodeType":"ElementaryTypeName","src":"4228:7:27","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4227:9:27"},"scope":9690,"src":"4171:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8147,"nodeType":"Block","src":"4746:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8128,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8123,"src":"4760:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4773:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":8130,"name":"uint200","nodeType":"ElementaryTypeName","src":"4773:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":8129,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"4768:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4768:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":8133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4782:3:27","memberName":"max","nodeType":"MemberAccess","src":"4768:17:27","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4760:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8141,"nodeType":"IfStatement","src":"4756:105:27","trueBody":{"id":8140,"nodeType":"Block","src":"4787:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":8136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4839:3:27","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":8137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8123,"src":"4844:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8135,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"4808:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4808:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8139,"nodeType":"RevertStatement","src":"4801:49:27"}]}},{"expression":{"arguments":[{"id":8144,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8123,"src":"4885:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4877:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":8142,"name":"uint200","nodeType":"ElementaryTypeName","src":"4877:7:27","typeDescriptions":{}}},"id":8145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4877:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":8127,"id":8146,"nodeType":"Return","src":"4870:21:27"}]},"documentation":{"id":8121,"nodeType":"StructuredDocumentation","src":"4395:280:27","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":8148,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4689:9:27","nodeType":"FunctionDefinition","parameters":{"id":8124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8123,"mutability":"mutable","name":"value","nameLocation":"4707:5:27","nodeType":"VariableDeclaration","scope":8148,"src":"4699:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8122,"name":"uint256","nodeType":"ElementaryTypeName","src":"4699:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4698:15:27"},"returnParameters":{"id":8127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8148,"src":"4737:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":8125,"name":"uint200","nodeType":"ElementaryTypeName","src":"4737:7:27","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4736:9:27"},"scope":9690,"src":"4680:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8175,"nodeType":"Block","src":"5255:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8156,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8151,"src":"5269:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5282:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":8158,"name":"uint192","nodeType":"ElementaryTypeName","src":"5282:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":8157,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"5277:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5277:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":8161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5291:3:27","memberName":"max","nodeType":"MemberAccess","src":"5277:17:27","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5269:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8169,"nodeType":"IfStatement","src":"5265:105:27","trueBody":{"id":8168,"nodeType":"Block","src":"5296:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":8164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5348:3:27","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":8165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8151,"src":"5353:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8163,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"5317:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5317:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8167,"nodeType":"RevertStatement","src":"5310:49:27"}]}},{"expression":{"arguments":[{"id":8172,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8151,"src":"5394:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5386:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":8170,"name":"uint192","nodeType":"ElementaryTypeName","src":"5386:7:27","typeDescriptions":{}}},"id":8173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5386:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":8155,"id":8174,"nodeType":"Return","src":"5379:21:27"}]},"documentation":{"id":8149,"nodeType":"StructuredDocumentation","src":"4904:280:27","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":8176,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5198:9:27","nodeType":"FunctionDefinition","parameters":{"id":8152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8151,"mutability":"mutable","name":"value","nameLocation":"5216:5:27","nodeType":"VariableDeclaration","scope":8176,"src":"5208:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8150,"name":"uint256","nodeType":"ElementaryTypeName","src":"5208:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5207:15:27"},"returnParameters":{"id":8155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8176,"src":"5246:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":8153,"name":"uint192","nodeType":"ElementaryTypeName","src":"5246:7:27","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5245:9:27"},"scope":9690,"src":"5189:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8203,"nodeType":"Block","src":"5764:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8184,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8179,"src":"5778:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5791:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":8186,"name":"uint184","nodeType":"ElementaryTypeName","src":"5791:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":8185,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"5786:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5786:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":8189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5800:3:27","memberName":"max","nodeType":"MemberAccess","src":"5786:17:27","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5778:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8197,"nodeType":"IfStatement","src":"5774:105:27","trueBody":{"id":8196,"nodeType":"Block","src":"5805:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":8192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5857:3:27","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":8193,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8179,"src":"5862:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8191,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"5826:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5826:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8195,"nodeType":"RevertStatement","src":"5819:49:27"}]}},{"expression":{"arguments":[{"id":8200,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8179,"src":"5903:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5895:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":8198,"name":"uint184","nodeType":"ElementaryTypeName","src":"5895:7:27","typeDescriptions":{}}},"id":8201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5895:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":8183,"id":8202,"nodeType":"Return","src":"5888:21:27"}]},"documentation":{"id":8177,"nodeType":"StructuredDocumentation","src":"5413:280:27","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":8204,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5707:9:27","nodeType":"FunctionDefinition","parameters":{"id":8180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8179,"mutability":"mutable","name":"value","nameLocation":"5725:5:27","nodeType":"VariableDeclaration","scope":8204,"src":"5717:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8178,"name":"uint256","nodeType":"ElementaryTypeName","src":"5717:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5716:15:27"},"returnParameters":{"id":8183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8204,"src":"5755:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":8181,"name":"uint184","nodeType":"ElementaryTypeName","src":"5755:7:27","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5754:9:27"},"scope":9690,"src":"5698:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8231,"nodeType":"Block","src":"6273:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8212,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8207,"src":"6287:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6300:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":8214,"name":"uint176","nodeType":"ElementaryTypeName","src":"6300:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":8213,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6295:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6295:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":8217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6309:3:27","memberName":"max","nodeType":"MemberAccess","src":"6295:17:27","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6287:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8225,"nodeType":"IfStatement","src":"6283:105:27","trueBody":{"id":8224,"nodeType":"Block","src":"6314:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":8220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6366:3:27","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":8221,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8207,"src":"6371:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8219,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"6335:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6335:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8223,"nodeType":"RevertStatement","src":"6328:49:27"}]}},{"expression":{"arguments":[{"id":8228,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8207,"src":"6412:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6404:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":8226,"name":"uint176","nodeType":"ElementaryTypeName","src":"6404:7:27","typeDescriptions":{}}},"id":8229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6404:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":8211,"id":8230,"nodeType":"Return","src":"6397:21:27"}]},"documentation":{"id":8205,"nodeType":"StructuredDocumentation","src":"5922:280:27","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":8232,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6216:9:27","nodeType":"FunctionDefinition","parameters":{"id":8208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8207,"mutability":"mutable","name":"value","nameLocation":"6234:5:27","nodeType":"VariableDeclaration","scope":8232,"src":"6226:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8206,"name":"uint256","nodeType":"ElementaryTypeName","src":"6226:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6225:15:27"},"returnParameters":{"id":8211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8232,"src":"6264:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":8209,"name":"uint176","nodeType":"ElementaryTypeName","src":"6264:7:27","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6263:9:27"},"scope":9690,"src":"6207:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8259,"nodeType":"Block","src":"6782:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8240,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8235,"src":"6796:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6809:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":8242,"name":"uint168","nodeType":"ElementaryTypeName","src":"6809:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":8241,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6804:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6804:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":8245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6818:3:27","memberName":"max","nodeType":"MemberAccess","src":"6804:17:27","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6796:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8253,"nodeType":"IfStatement","src":"6792:105:27","trueBody":{"id":8252,"nodeType":"Block","src":"6823:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":8248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6875:3:27","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":8249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8235,"src":"6880:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8247,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"6844:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6844:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8251,"nodeType":"RevertStatement","src":"6837:49:27"}]}},{"expression":{"arguments":[{"id":8256,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8235,"src":"6921:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6913:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":8254,"name":"uint168","nodeType":"ElementaryTypeName","src":"6913:7:27","typeDescriptions":{}}},"id":8257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6913:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":8239,"id":8258,"nodeType":"Return","src":"6906:21:27"}]},"documentation":{"id":8233,"nodeType":"StructuredDocumentation","src":"6431:280:27","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":8260,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6725:9:27","nodeType":"FunctionDefinition","parameters":{"id":8236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8235,"mutability":"mutable","name":"value","nameLocation":"6743:5:27","nodeType":"VariableDeclaration","scope":8260,"src":"6735:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8234,"name":"uint256","nodeType":"ElementaryTypeName","src":"6735:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6734:15:27"},"returnParameters":{"id":8239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8238,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8260,"src":"6773:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":8237,"name":"uint168","nodeType":"ElementaryTypeName","src":"6773:7:27","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6772:9:27"},"scope":9690,"src":"6716:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8287,"nodeType":"Block","src":"7291:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8268,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8263,"src":"7305:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7318:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":8270,"name":"uint160","nodeType":"ElementaryTypeName","src":"7318:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":8269,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"7313:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7313:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":8273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7327:3:27","memberName":"max","nodeType":"MemberAccess","src":"7313:17:27","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7305:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8281,"nodeType":"IfStatement","src":"7301:105:27","trueBody":{"id":8280,"nodeType":"Block","src":"7332:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":8276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7384:3:27","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":8277,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8263,"src":"7389:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8275,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"7353:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7353:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8279,"nodeType":"RevertStatement","src":"7346:49:27"}]}},{"expression":{"arguments":[{"id":8284,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8263,"src":"7430:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7422:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":8282,"name":"uint160","nodeType":"ElementaryTypeName","src":"7422:7:27","typeDescriptions":{}}},"id":8285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7422:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":8267,"id":8286,"nodeType":"Return","src":"7415:21:27"}]},"documentation":{"id":8261,"nodeType":"StructuredDocumentation","src":"6940:280:27","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":8288,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7234:9:27","nodeType":"FunctionDefinition","parameters":{"id":8264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8263,"mutability":"mutable","name":"value","nameLocation":"7252:5:27","nodeType":"VariableDeclaration","scope":8288,"src":"7244:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8262,"name":"uint256","nodeType":"ElementaryTypeName","src":"7244:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7243:15:27"},"returnParameters":{"id":8267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8288,"src":"7282:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8265,"name":"uint160","nodeType":"ElementaryTypeName","src":"7282:7:27","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7281:9:27"},"scope":9690,"src":"7225:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8315,"nodeType":"Block","src":"7800:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8296,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8291,"src":"7814:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7827:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":8298,"name":"uint152","nodeType":"ElementaryTypeName","src":"7827:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":8297,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"7822:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7822:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":8301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7836:3:27","memberName":"max","nodeType":"MemberAccess","src":"7822:17:27","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7814:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8309,"nodeType":"IfStatement","src":"7810:105:27","trueBody":{"id":8308,"nodeType":"Block","src":"7841:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":8304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7893:3:27","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":8305,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8291,"src":"7898:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8303,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"7862:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7862:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8307,"nodeType":"RevertStatement","src":"7855:49:27"}]}},{"expression":{"arguments":[{"id":8312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8291,"src":"7939:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7931:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":8310,"name":"uint152","nodeType":"ElementaryTypeName","src":"7931:7:27","typeDescriptions":{}}},"id":8313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7931:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":8295,"id":8314,"nodeType":"Return","src":"7924:21:27"}]},"documentation":{"id":8289,"nodeType":"StructuredDocumentation","src":"7449:280:27","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":8316,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7743:9:27","nodeType":"FunctionDefinition","parameters":{"id":8292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8291,"mutability":"mutable","name":"value","nameLocation":"7761:5:27","nodeType":"VariableDeclaration","scope":8316,"src":"7753:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8290,"name":"uint256","nodeType":"ElementaryTypeName","src":"7753:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7752:15:27"},"returnParameters":{"id":8295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8316,"src":"7791:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":8293,"name":"uint152","nodeType":"ElementaryTypeName","src":"7791:7:27","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7790:9:27"},"scope":9690,"src":"7734:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8343,"nodeType":"Block","src":"8309:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8319,"src":"8323:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8336:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":8326,"name":"uint144","nodeType":"ElementaryTypeName","src":"8336:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":8325,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"8331:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8331:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":8329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8345:3:27","memberName":"max","nodeType":"MemberAccess","src":"8331:17:27","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8323:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8337,"nodeType":"IfStatement","src":"8319:105:27","trueBody":{"id":8336,"nodeType":"Block","src":"8350:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":8332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8402:3:27","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":8333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8319,"src":"8407:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8331,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"8371:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8371:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8335,"nodeType":"RevertStatement","src":"8364:49:27"}]}},{"expression":{"arguments":[{"id":8340,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8319,"src":"8448:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8440:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":8338,"name":"uint144","nodeType":"ElementaryTypeName","src":"8440:7:27","typeDescriptions":{}}},"id":8341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8440:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":8323,"id":8342,"nodeType":"Return","src":"8433:21:27"}]},"documentation":{"id":8317,"nodeType":"StructuredDocumentation","src":"7958:280:27","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":8344,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8252:9:27","nodeType":"FunctionDefinition","parameters":{"id":8320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8319,"mutability":"mutable","name":"value","nameLocation":"8270:5:27","nodeType":"VariableDeclaration","scope":8344,"src":"8262:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8318,"name":"uint256","nodeType":"ElementaryTypeName","src":"8262:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8261:15:27"},"returnParameters":{"id":8323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8322,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8344,"src":"8300:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":8321,"name":"uint144","nodeType":"ElementaryTypeName","src":"8300:7:27","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8299:9:27"},"scope":9690,"src":"8243:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8371,"nodeType":"Block","src":"8818:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8352,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8347,"src":"8832:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8845:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":8354,"name":"uint136","nodeType":"ElementaryTypeName","src":"8845:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":8353,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"8840:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8840:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":8357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8854:3:27","memberName":"max","nodeType":"MemberAccess","src":"8840:17:27","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8832:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8365,"nodeType":"IfStatement","src":"8828:105:27","trueBody":{"id":8364,"nodeType":"Block","src":"8859:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":8360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8911:3:27","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":8361,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8347,"src":"8916:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8359,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"8880:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8880:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8363,"nodeType":"RevertStatement","src":"8873:49:27"}]}},{"expression":{"arguments":[{"id":8368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8347,"src":"8957:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8949:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":8366,"name":"uint136","nodeType":"ElementaryTypeName","src":"8949:7:27","typeDescriptions":{}}},"id":8369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8949:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":8351,"id":8370,"nodeType":"Return","src":"8942:21:27"}]},"documentation":{"id":8345,"nodeType":"StructuredDocumentation","src":"8467:280:27","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":8372,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8761:9:27","nodeType":"FunctionDefinition","parameters":{"id":8348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8347,"mutability":"mutable","name":"value","nameLocation":"8779:5:27","nodeType":"VariableDeclaration","scope":8372,"src":"8771:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8346,"name":"uint256","nodeType":"ElementaryTypeName","src":"8771:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8770:15:27"},"returnParameters":{"id":8351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8350,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8372,"src":"8809:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":8349,"name":"uint136","nodeType":"ElementaryTypeName","src":"8809:7:27","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8808:9:27"},"scope":9690,"src":"8752:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8399,"nodeType":"Block","src":"9327:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8380,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9341:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9354:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":8382,"name":"uint128","nodeType":"ElementaryTypeName","src":"9354:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":8381,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"9349:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9349:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":8385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9363:3:27","memberName":"max","nodeType":"MemberAccess","src":"9349:17:27","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9341:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8393,"nodeType":"IfStatement","src":"9337:105:27","trueBody":{"id":8392,"nodeType":"Block","src":"9368:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":8388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9420:3:27","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":8389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9425:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8387,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"9389:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9389:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8391,"nodeType":"RevertStatement","src":"9382:49:27"}]}},{"expression":{"arguments":[{"id":8396,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9466:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9458:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":8394,"name":"uint128","nodeType":"ElementaryTypeName","src":"9458:7:27","typeDescriptions":{}}},"id":8397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9458:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":8379,"id":8398,"nodeType":"Return","src":"9451:21:27"}]},"documentation":{"id":8373,"nodeType":"StructuredDocumentation","src":"8976:280:27","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":8400,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9270:9:27","nodeType":"FunctionDefinition","parameters":{"id":8376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8375,"mutability":"mutable","name":"value","nameLocation":"9288:5:27","nodeType":"VariableDeclaration","scope":8400,"src":"9280:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8374,"name":"uint256","nodeType":"ElementaryTypeName","src":"9280:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9279:15:27"},"returnParameters":{"id":8379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8400,"src":"9318:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8377,"name":"uint128","nodeType":"ElementaryTypeName","src":"9318:7:27","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9317:9:27"},"scope":9690,"src":"9261:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8427,"nodeType":"Block","src":"9836:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8408,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8403,"src":"9850:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9863:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":8410,"name":"uint120","nodeType":"ElementaryTypeName","src":"9863:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":8409,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"9858:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9858:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":8413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9872:3:27","memberName":"max","nodeType":"MemberAccess","src":"9858:17:27","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9850:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8421,"nodeType":"IfStatement","src":"9846:105:27","trueBody":{"id":8420,"nodeType":"Block","src":"9877:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":8416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9929:3:27","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":8417,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8403,"src":"9934:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8415,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"9898:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9898:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8419,"nodeType":"RevertStatement","src":"9891:49:27"}]}},{"expression":{"arguments":[{"id":8424,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8403,"src":"9975:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9967:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":8422,"name":"uint120","nodeType":"ElementaryTypeName","src":"9967:7:27","typeDescriptions":{}}},"id":8425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9967:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":8407,"id":8426,"nodeType":"Return","src":"9960:21:27"}]},"documentation":{"id":8401,"nodeType":"StructuredDocumentation","src":"9485:280:27","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":8428,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9779:9:27","nodeType":"FunctionDefinition","parameters":{"id":8404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8403,"mutability":"mutable","name":"value","nameLocation":"9797:5:27","nodeType":"VariableDeclaration","scope":8428,"src":"9789:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8402,"name":"uint256","nodeType":"ElementaryTypeName","src":"9789:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9788:15:27"},"returnParameters":{"id":8407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8406,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8428,"src":"9827:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":8405,"name":"uint120","nodeType":"ElementaryTypeName","src":"9827:7:27","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9826:9:27"},"scope":9690,"src":"9770:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8455,"nodeType":"Block","src":"10345:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8436,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8431,"src":"10359:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10372:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":8438,"name":"uint112","nodeType":"ElementaryTypeName","src":"10372:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":8437,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"10367:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10367:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":8441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10381:3:27","memberName":"max","nodeType":"MemberAccess","src":"10367:17:27","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10359:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8449,"nodeType":"IfStatement","src":"10355:105:27","trueBody":{"id":8448,"nodeType":"Block","src":"10386:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":8444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10438:3:27","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":8445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8431,"src":"10443:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8443,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"10407:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10407:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8447,"nodeType":"RevertStatement","src":"10400:49:27"}]}},{"expression":{"arguments":[{"id":8452,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8431,"src":"10484:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10476:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":8450,"name":"uint112","nodeType":"ElementaryTypeName","src":"10476:7:27","typeDescriptions":{}}},"id":8453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10476:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":8435,"id":8454,"nodeType":"Return","src":"10469:21:27"}]},"documentation":{"id":8429,"nodeType":"StructuredDocumentation","src":"9994:280:27","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":8456,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10288:9:27","nodeType":"FunctionDefinition","parameters":{"id":8432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8431,"mutability":"mutable","name":"value","nameLocation":"10306:5:27","nodeType":"VariableDeclaration","scope":8456,"src":"10298:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10298:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10297:15:27"},"returnParameters":{"id":8435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8456,"src":"10336:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":8433,"name":"uint112","nodeType":"ElementaryTypeName","src":"10336:7:27","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10335:9:27"},"scope":9690,"src":"10279:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8483,"nodeType":"Block","src":"10854:152:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8459,"src":"10868:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10881:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":8466,"name":"uint104","nodeType":"ElementaryTypeName","src":"10881:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":8465,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"10876:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10876:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":8469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10890:3:27","memberName":"max","nodeType":"MemberAccess","src":"10876:17:27","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10868:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8477,"nodeType":"IfStatement","src":"10864:105:27","trueBody":{"id":8476,"nodeType":"Block","src":"10895:74:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":8472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:3:27","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":8473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8459,"src":"10952:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8471,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"10916:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10916:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8475,"nodeType":"RevertStatement","src":"10909:49:27"}]}},{"expression":{"arguments":[{"id":8480,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8459,"src":"10993:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10985:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":8478,"name":"uint104","nodeType":"ElementaryTypeName","src":"10985:7:27","typeDescriptions":{}}},"id":8481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10985:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":8463,"id":8482,"nodeType":"Return","src":"10978:21:27"}]},"documentation":{"id":8457,"nodeType":"StructuredDocumentation","src":"10503:280:27","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":8484,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10797:9:27","nodeType":"FunctionDefinition","parameters":{"id":8460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8459,"mutability":"mutable","name":"value","nameLocation":"10815:5:27","nodeType":"VariableDeclaration","scope":8484,"src":"10807:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8458,"name":"uint256","nodeType":"ElementaryTypeName","src":"10807:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10806:15:27"},"returnParameters":{"id":8463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8462,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8484,"src":"10845:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":8461,"name":"uint104","nodeType":"ElementaryTypeName","src":"10845:7:27","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10844:9:27"},"scope":9690,"src":"10788:218:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8511,"nodeType":"Block","src":"11357:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8492,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8487,"src":"11371:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11384:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":8494,"name":"uint96","nodeType":"ElementaryTypeName","src":"11384:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":8493,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"11379:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11379:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":8497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11392:3:27","memberName":"max","nodeType":"MemberAccess","src":"11379:16:27","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11371:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8505,"nodeType":"IfStatement","src":"11367:103:27","trueBody":{"id":8504,"nodeType":"Block","src":"11397:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":8500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11449:2:27","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":8501,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8487,"src":"11453:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8499,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"11418:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11418:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8503,"nodeType":"RevertStatement","src":"11411:48:27"}]}},{"expression":{"arguments":[{"id":8508,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8487,"src":"11493:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11486:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":8506,"name":"uint96","nodeType":"ElementaryTypeName","src":"11486:6:27","typeDescriptions":{}}},"id":8509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11486:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":8491,"id":8510,"nodeType":"Return","src":"11479:20:27"}]},"documentation":{"id":8485,"nodeType":"StructuredDocumentation","src":"11012:276:27","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":8512,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11302:8:27","nodeType":"FunctionDefinition","parameters":{"id":8488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8487,"mutability":"mutable","name":"value","nameLocation":"11319:5:27","nodeType":"VariableDeclaration","scope":8512,"src":"11311:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8486,"name":"uint256","nodeType":"ElementaryTypeName","src":"11311:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11310:15:27"},"returnParameters":{"id":8491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8490,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8512,"src":"11349:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":8489,"name":"uint96","nodeType":"ElementaryTypeName","src":"11349:6:27","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11348:8:27"},"scope":9690,"src":"11293:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8539,"nodeType":"Block","src":"11857:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8520,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8515,"src":"11871:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11884:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":8522,"name":"uint88","nodeType":"ElementaryTypeName","src":"11884:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":8521,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"11879:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11879:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":8525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11892:3:27","memberName":"max","nodeType":"MemberAccess","src":"11879:16:27","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11871:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8533,"nodeType":"IfStatement","src":"11867:103:27","trueBody":{"id":8532,"nodeType":"Block","src":"11897:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":8528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11949:2:27","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":8529,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8515,"src":"11953:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8527,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"11918:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11918:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8531,"nodeType":"RevertStatement","src":"11911:48:27"}]}},{"expression":{"arguments":[{"id":8536,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8515,"src":"11993:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11986:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":8534,"name":"uint88","nodeType":"ElementaryTypeName","src":"11986:6:27","typeDescriptions":{}}},"id":8537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11986:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":8519,"id":8538,"nodeType":"Return","src":"11979:20:27"}]},"documentation":{"id":8513,"nodeType":"StructuredDocumentation","src":"11512:276:27","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":8540,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11802:8:27","nodeType":"FunctionDefinition","parameters":{"id":8516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8515,"mutability":"mutable","name":"value","nameLocation":"11819:5:27","nodeType":"VariableDeclaration","scope":8540,"src":"11811:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8514,"name":"uint256","nodeType":"ElementaryTypeName","src":"11811:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11810:15:27"},"returnParameters":{"id":8519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8518,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8540,"src":"11849:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":8517,"name":"uint88","nodeType":"ElementaryTypeName","src":"11849:6:27","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11848:8:27"},"scope":9690,"src":"11793:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8567,"nodeType":"Block","src":"12357:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8548,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8543,"src":"12371:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12384:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":8550,"name":"uint80","nodeType":"ElementaryTypeName","src":"12384:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":8549,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"12379:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12379:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":8553,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12392:3:27","memberName":"max","nodeType":"MemberAccess","src":"12379:16:27","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12371:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8561,"nodeType":"IfStatement","src":"12367:103:27","trueBody":{"id":8560,"nodeType":"Block","src":"12397:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":8556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12449:2:27","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":8557,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8543,"src":"12453:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8555,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"12418:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12418:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8559,"nodeType":"RevertStatement","src":"12411:48:27"}]}},{"expression":{"arguments":[{"id":8564,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8543,"src":"12493:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12486:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":8562,"name":"uint80","nodeType":"ElementaryTypeName","src":"12486:6:27","typeDescriptions":{}}},"id":8565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12486:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":8547,"id":8566,"nodeType":"Return","src":"12479:20:27"}]},"documentation":{"id":8541,"nodeType":"StructuredDocumentation","src":"12012:276:27","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":8568,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12302:8:27","nodeType":"FunctionDefinition","parameters":{"id":8544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8543,"mutability":"mutable","name":"value","nameLocation":"12319:5:27","nodeType":"VariableDeclaration","scope":8568,"src":"12311:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8542,"name":"uint256","nodeType":"ElementaryTypeName","src":"12311:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12310:15:27"},"returnParameters":{"id":8547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8568,"src":"12349:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":8545,"name":"uint80","nodeType":"ElementaryTypeName","src":"12349:6:27","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12348:8:27"},"scope":9690,"src":"12293:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8595,"nodeType":"Block","src":"12857:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8576,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"12871:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12884:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":8578,"name":"uint72","nodeType":"ElementaryTypeName","src":"12884:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":8577,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"12879:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12879:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":8581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12892:3:27","memberName":"max","nodeType":"MemberAccess","src":"12879:16:27","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12871:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8589,"nodeType":"IfStatement","src":"12867:103:27","trueBody":{"id":8588,"nodeType":"Block","src":"12897:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":8584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12949:2:27","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":8585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"12953:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8583,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"12918:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12918:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8587,"nodeType":"RevertStatement","src":"12911:48:27"}]}},{"expression":{"arguments":[{"id":8592,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"12993:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12986:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":8590,"name":"uint72","nodeType":"ElementaryTypeName","src":"12986:6:27","typeDescriptions":{}}},"id":8593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12986:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":8575,"id":8594,"nodeType":"Return","src":"12979:20:27"}]},"documentation":{"id":8569,"nodeType":"StructuredDocumentation","src":"12512:276:27","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":8596,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12802:8:27","nodeType":"FunctionDefinition","parameters":{"id":8572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8571,"mutability":"mutable","name":"value","nameLocation":"12819:5:27","nodeType":"VariableDeclaration","scope":8596,"src":"12811:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8570,"name":"uint256","nodeType":"ElementaryTypeName","src":"12811:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12810:15:27"},"returnParameters":{"id":8575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8574,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8596,"src":"12849:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":8573,"name":"uint72","nodeType":"ElementaryTypeName","src":"12849:6:27","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12848:8:27"},"scope":9690,"src":"12793:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8623,"nodeType":"Block","src":"13357:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8604,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8599,"src":"13371:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13384:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8606,"name":"uint64","nodeType":"ElementaryTypeName","src":"13384:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":8605,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"13379:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13379:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":8609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13392:3:27","memberName":"max","nodeType":"MemberAccess","src":"13379:16:27","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13371:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8617,"nodeType":"IfStatement","src":"13367:103:27","trueBody":{"id":8616,"nodeType":"Block","src":"13397:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":8612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13449:2:27","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":8613,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8599,"src":"13453:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8611,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"13418:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13418:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8615,"nodeType":"RevertStatement","src":"13411:48:27"}]}},{"expression":{"arguments":[{"id":8620,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8599,"src":"13493:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13486:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8618,"name":"uint64","nodeType":"ElementaryTypeName","src":"13486:6:27","typeDescriptions":{}}},"id":8621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13486:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":8603,"id":8622,"nodeType":"Return","src":"13479:20:27"}]},"documentation":{"id":8597,"nodeType":"StructuredDocumentation","src":"13012:276:27","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":8624,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13302:8:27","nodeType":"FunctionDefinition","parameters":{"id":8600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8599,"mutability":"mutable","name":"value","nameLocation":"13319:5:27","nodeType":"VariableDeclaration","scope":8624,"src":"13311:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8598,"name":"uint256","nodeType":"ElementaryTypeName","src":"13311:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13310:15:27"},"returnParameters":{"id":8603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8602,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8624,"src":"13349:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":8601,"name":"uint64","nodeType":"ElementaryTypeName","src":"13349:6:27","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13348:8:27"},"scope":9690,"src":"13293:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8651,"nodeType":"Block","src":"13857:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8632,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8627,"src":"13871:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13884:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":8634,"name":"uint56","nodeType":"ElementaryTypeName","src":"13884:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":8633,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"13879:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13879:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":8637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13892:3:27","memberName":"max","nodeType":"MemberAccess","src":"13879:16:27","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13871:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8645,"nodeType":"IfStatement","src":"13867:103:27","trueBody":{"id":8644,"nodeType":"Block","src":"13897:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":8640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13949:2:27","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":8641,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8627,"src":"13953:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8639,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"13918:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13918:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8643,"nodeType":"RevertStatement","src":"13911:48:27"}]}},{"expression":{"arguments":[{"id":8648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8627,"src":"13993:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13986:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":8646,"name":"uint56","nodeType":"ElementaryTypeName","src":"13986:6:27","typeDescriptions":{}}},"id":8649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13986:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":8631,"id":8650,"nodeType":"Return","src":"13979:20:27"}]},"documentation":{"id":8625,"nodeType":"StructuredDocumentation","src":"13512:276:27","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":8652,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13802:8:27","nodeType":"FunctionDefinition","parameters":{"id":8628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8627,"mutability":"mutable","name":"value","nameLocation":"13819:5:27","nodeType":"VariableDeclaration","scope":8652,"src":"13811:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8626,"name":"uint256","nodeType":"ElementaryTypeName","src":"13811:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13810:15:27"},"returnParameters":{"id":8631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8630,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8652,"src":"13849:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":8629,"name":"uint56","nodeType":"ElementaryTypeName","src":"13849:6:27","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13848:8:27"},"scope":9690,"src":"13793:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8679,"nodeType":"Block","src":"14357:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8660,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"14371:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14384:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":8662,"name":"uint48","nodeType":"ElementaryTypeName","src":"14384:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":8661,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"14379:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14379:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":8665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14392:3:27","memberName":"max","nodeType":"MemberAccess","src":"14379:16:27","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14371:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8673,"nodeType":"IfStatement","src":"14367:103:27","trueBody":{"id":8672,"nodeType":"Block","src":"14397:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":8668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14449:2:27","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":8669,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"14453:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8667,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"14418:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14418:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8671,"nodeType":"RevertStatement","src":"14411:48:27"}]}},{"expression":{"arguments":[{"id":8676,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"14493:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14486:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":8674,"name":"uint48","nodeType":"ElementaryTypeName","src":"14486:6:27","typeDescriptions":{}}},"id":8677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14486:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":8659,"id":8678,"nodeType":"Return","src":"14479:20:27"}]},"documentation":{"id":8653,"nodeType":"StructuredDocumentation","src":"14012:276:27","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":8680,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14302:8:27","nodeType":"FunctionDefinition","parameters":{"id":8656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8655,"mutability":"mutable","name":"value","nameLocation":"14319:5:27","nodeType":"VariableDeclaration","scope":8680,"src":"14311:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8654,"name":"uint256","nodeType":"ElementaryTypeName","src":"14311:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14310:15:27"},"returnParameters":{"id":8659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8658,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8680,"src":"14349:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":8657,"name":"uint48","nodeType":"ElementaryTypeName","src":"14349:6:27","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14348:8:27"},"scope":9690,"src":"14293:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8707,"nodeType":"Block","src":"14857:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8688,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8683,"src":"14871:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14884:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":8690,"name":"uint40","nodeType":"ElementaryTypeName","src":"14884:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":8689,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"14879:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14879:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":8693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14892:3:27","memberName":"max","nodeType":"MemberAccess","src":"14879:16:27","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14871:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8701,"nodeType":"IfStatement","src":"14867:103:27","trueBody":{"id":8700,"nodeType":"Block","src":"14897:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":8696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14949:2:27","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":8697,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8683,"src":"14953:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8695,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"14918:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14918:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8699,"nodeType":"RevertStatement","src":"14911:48:27"}]}},{"expression":{"arguments":[{"id":8704,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8683,"src":"14993:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14986:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":8702,"name":"uint40","nodeType":"ElementaryTypeName","src":"14986:6:27","typeDescriptions":{}}},"id":8705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14986:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":8687,"id":8706,"nodeType":"Return","src":"14979:20:27"}]},"documentation":{"id":8681,"nodeType":"StructuredDocumentation","src":"14512:276:27","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":8708,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14802:8:27","nodeType":"FunctionDefinition","parameters":{"id":8684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8683,"mutability":"mutable","name":"value","nameLocation":"14819:5:27","nodeType":"VariableDeclaration","scope":8708,"src":"14811:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8682,"name":"uint256","nodeType":"ElementaryTypeName","src":"14811:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14810:15:27"},"returnParameters":{"id":8687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8686,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8708,"src":"14849:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":8685,"name":"uint40","nodeType":"ElementaryTypeName","src":"14849:6:27","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14848:8:27"},"scope":9690,"src":"14793:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8735,"nodeType":"Block","src":"15357:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8716,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8711,"src":"15371:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15384:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":8718,"name":"uint32","nodeType":"ElementaryTypeName","src":"15384:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":8717,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"15379:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15379:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":8721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15392:3:27","memberName":"max","nodeType":"MemberAccess","src":"15379:16:27","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15371:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8729,"nodeType":"IfStatement","src":"15367:103:27","trueBody":{"id":8728,"nodeType":"Block","src":"15397:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":8724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15449:2:27","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":8725,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8711,"src":"15453:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8723,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"15418:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15418:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8727,"nodeType":"RevertStatement","src":"15411:48:27"}]}},{"expression":{"arguments":[{"id":8732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8711,"src":"15493:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15486:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":8730,"name":"uint32","nodeType":"ElementaryTypeName","src":"15486:6:27","typeDescriptions":{}}},"id":8733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15486:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":8715,"id":8734,"nodeType":"Return","src":"15479:20:27"}]},"documentation":{"id":8709,"nodeType":"StructuredDocumentation","src":"15012:276:27","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":8736,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15302:8:27","nodeType":"FunctionDefinition","parameters":{"id":8712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8711,"mutability":"mutable","name":"value","nameLocation":"15319:5:27","nodeType":"VariableDeclaration","scope":8736,"src":"15311:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8710,"name":"uint256","nodeType":"ElementaryTypeName","src":"15311:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15310:15:27"},"returnParameters":{"id":8715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8714,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8736,"src":"15349:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8713,"name":"uint32","nodeType":"ElementaryTypeName","src":"15349:6:27","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15348:8:27"},"scope":9690,"src":"15293:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8763,"nodeType":"Block","src":"15857:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8744,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8739,"src":"15871:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15884:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":8746,"name":"uint24","nodeType":"ElementaryTypeName","src":"15884:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":8745,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"15879:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15879:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":8749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15892:3:27","memberName":"max","nodeType":"MemberAccess","src":"15879:16:27","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15871:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8757,"nodeType":"IfStatement","src":"15867:103:27","trueBody":{"id":8756,"nodeType":"Block","src":"15897:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":8752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15949:2:27","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":8753,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8739,"src":"15953:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8751,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"15918:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15918:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8755,"nodeType":"RevertStatement","src":"15911:48:27"}]}},{"expression":{"arguments":[{"id":8760,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8739,"src":"15993:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15986:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":8758,"name":"uint24","nodeType":"ElementaryTypeName","src":"15986:6:27","typeDescriptions":{}}},"id":8761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15986:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":8743,"id":8762,"nodeType":"Return","src":"15979:20:27"}]},"documentation":{"id":8737,"nodeType":"StructuredDocumentation","src":"15512:276:27","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":8764,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15802:8:27","nodeType":"FunctionDefinition","parameters":{"id":8740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8739,"mutability":"mutable","name":"value","nameLocation":"15819:5:27","nodeType":"VariableDeclaration","scope":8764,"src":"15811:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8738,"name":"uint256","nodeType":"ElementaryTypeName","src":"15811:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15810:15:27"},"returnParameters":{"id":8743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8742,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8764,"src":"15849:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8741,"name":"uint24","nodeType":"ElementaryTypeName","src":"15849:6:27","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15848:8:27"},"scope":9690,"src":"15793:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8791,"nodeType":"Block","src":"16357:149:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8772,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8767,"src":"16371:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16384:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":8774,"name":"uint16","nodeType":"ElementaryTypeName","src":"16384:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":8773,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"16379:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16379:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":8777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16392:3:27","memberName":"max","nodeType":"MemberAccess","src":"16379:16:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16371:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8785,"nodeType":"IfStatement","src":"16367:103:27","trueBody":{"id":8784,"nodeType":"Block","src":"16397:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":8780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16449:2:27","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":8781,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8767,"src":"16453:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8779,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"16418:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16418:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8783,"nodeType":"RevertStatement","src":"16411:48:27"}]}},{"expression":{"arguments":[{"id":8788,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8767,"src":"16493:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16486:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":8786,"name":"uint16","nodeType":"ElementaryTypeName","src":"16486:6:27","typeDescriptions":{}}},"id":8789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16486:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":8771,"id":8790,"nodeType":"Return","src":"16479:20:27"}]},"documentation":{"id":8765,"nodeType":"StructuredDocumentation","src":"16012:276:27","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":8792,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16302:8:27","nodeType":"FunctionDefinition","parameters":{"id":8768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8767,"mutability":"mutable","name":"value","nameLocation":"16319:5:27","nodeType":"VariableDeclaration","scope":8792,"src":"16311:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8766,"name":"uint256","nodeType":"ElementaryTypeName","src":"16311:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16310:15:27"},"returnParameters":{"id":8771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8792,"src":"16349:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":8769,"name":"uint16","nodeType":"ElementaryTypeName","src":"16349:6:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16348:8:27"},"scope":9690,"src":"16293:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8819,"nodeType":"Block","src":"16851:146:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8800,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"16865:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":8803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16878:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8802,"name":"uint8","nodeType":"ElementaryTypeName","src":"16878:5:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":8801,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"16873:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16873:11:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":8805,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16885:3:27","memberName":"max","nodeType":"MemberAccess","src":"16873:15:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16865:23:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8813,"nodeType":"IfStatement","src":"16861:101:27","trueBody":{"id":8812,"nodeType":"Block","src":"16890:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":8808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16942:1:27","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":8809,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"16945:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8807,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7935,"src":"16911:30:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":8810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16911:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8811,"nodeType":"RevertStatement","src":"16904:47:27"}]}},{"expression":{"arguments":[{"id":8816,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"16984:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16978:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8814,"name":"uint8","nodeType":"ElementaryTypeName","src":"16978:5:27","typeDescriptions":{}}},"id":8817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16978:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":8799,"id":8818,"nodeType":"Return","src":"16971:19:27"}]},"documentation":{"id":8793,"nodeType":"StructuredDocumentation","src":"16512:272:27","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":8820,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16798:7:27","nodeType":"FunctionDefinition","parameters":{"id":8796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8795,"mutability":"mutable","name":"value","nameLocation":"16814:5:27","nodeType":"VariableDeclaration","scope":8820,"src":"16806:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8794,"name":"uint256","nodeType":"ElementaryTypeName","src":"16806:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16805:15:27"},"returnParameters":{"id":8799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8798,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8820,"src":"16844:5:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8797,"name":"uint8","nodeType":"ElementaryTypeName","src":"16844:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16843:7:27"},"scope":9690,"src":"16789:208:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8842,"nodeType":"Block","src":"17233:128:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8823,"src":"17247:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17255:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17247:9:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8836,"nodeType":"IfStatement","src":"17243:81:27","trueBody":{"id":8835,"nodeType":"Block","src":"17258:66:27","statements":[{"errorCall":{"arguments":[{"id":8832,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8823,"src":"17307:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8831,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7940,"src":"17279:27:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":8833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17279:34:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8834,"nodeType":"RevertStatement","src":"17272:41:27"}]}},{"expression":{"arguments":[{"id":8839,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8823,"src":"17348:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17340:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8837,"name":"uint256","nodeType":"ElementaryTypeName","src":"17340:7:27","typeDescriptions":{}}},"id":8840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17340:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8827,"id":8841,"nodeType":"Return","src":"17333:21:27"}]},"documentation":{"id":8821,"nodeType":"StructuredDocumentation","src":"17003:160:27","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":8843,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17177:9:27","nodeType":"FunctionDefinition","parameters":{"id":8824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8823,"mutability":"mutable","name":"value","nameLocation":"17194:5:27","nodeType":"VariableDeclaration","scope":8843,"src":"17187:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8822,"name":"int256","nodeType":"ElementaryTypeName","src":"17187:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17186:14:27"},"returnParameters":{"id":8827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8826,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8843,"src":"17224:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8825,"name":"uint256","nodeType":"ElementaryTypeName","src":"17224:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17223:9:27"},"scope":9690,"src":"17168:193:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8868,"nodeType":"Block","src":"17758:150:27","statements":[{"expression":{"id":8856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8851,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8849,"src":"17768:10:27","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8854,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8846,"src":"17788:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17781:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":8852,"name":"int248","nodeType":"ElementaryTypeName","src":"17781:6:27","typeDescriptions":{}}},"id":8855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17781:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17768:26:27","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":8857,"nodeType":"ExpressionStatement","src":"17768:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8858,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8849,"src":"17808:10:27","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8846,"src":"17822:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17808:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8867,"nodeType":"IfStatement","src":"17804:98:27","trueBody":{"id":8866,"nodeType":"Block","src":"17829:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":8862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17880:3:27","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":8863,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8846,"src":"17885:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8861,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"17850:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17850:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8865,"nodeType":"RevertStatement","src":"17843:48:27"}]}}]},"documentation":{"id":8844,"nodeType":"StructuredDocumentation","src":"17367:312:27","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":8869,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17693:8:27","nodeType":"FunctionDefinition","parameters":{"id":8847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8846,"mutability":"mutable","name":"value","nameLocation":"17709:5:27","nodeType":"VariableDeclaration","scope":8869,"src":"17702:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8845,"name":"int256","nodeType":"ElementaryTypeName","src":"17702:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17701:14:27"},"returnParameters":{"id":8850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8849,"mutability":"mutable","name":"downcasted","nameLocation":"17746:10:27","nodeType":"VariableDeclaration","scope":8869,"src":"17739:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":8848,"name":"int248","nodeType":"ElementaryTypeName","src":"17739:6:27","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17738:19:27"},"scope":9690,"src":"17684:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8894,"nodeType":"Block","src":"18305:150:27","statements":[{"expression":{"id":8882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8877,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8875,"src":"18315:10:27","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8880,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8872,"src":"18335:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18328:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":8878,"name":"int240","nodeType":"ElementaryTypeName","src":"18328:6:27","typeDescriptions":{}}},"id":8881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18328:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18315:26:27","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":8883,"nodeType":"ExpressionStatement","src":"18315:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8884,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8875,"src":"18355:10:27","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8885,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8872,"src":"18369:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18355:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8893,"nodeType":"IfStatement","src":"18351:98:27","trueBody":{"id":8892,"nodeType":"Block","src":"18376:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":8888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18427:3:27","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":8889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8872,"src":"18432:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8887,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"18397:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18397:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8891,"nodeType":"RevertStatement","src":"18390:48:27"}]}}]},"documentation":{"id":8870,"nodeType":"StructuredDocumentation","src":"17914:312:27","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":8895,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18240:8:27","nodeType":"FunctionDefinition","parameters":{"id":8873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8872,"mutability":"mutable","name":"value","nameLocation":"18256:5:27","nodeType":"VariableDeclaration","scope":8895,"src":"18249:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8871,"name":"int256","nodeType":"ElementaryTypeName","src":"18249:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18248:14:27"},"returnParameters":{"id":8876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8875,"mutability":"mutable","name":"downcasted","nameLocation":"18293:10:27","nodeType":"VariableDeclaration","scope":8895,"src":"18286:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":8874,"name":"int240","nodeType":"ElementaryTypeName","src":"18286:6:27","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18285:19:27"},"scope":9690,"src":"18231:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8920,"nodeType":"Block","src":"18852:150:27","statements":[{"expression":{"id":8908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8903,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8901,"src":"18862:10:27","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8906,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8898,"src":"18882:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18875:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":8904,"name":"int232","nodeType":"ElementaryTypeName","src":"18875:6:27","typeDescriptions":{}}},"id":8907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18875:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18862:26:27","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":8909,"nodeType":"ExpressionStatement","src":"18862:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8910,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8901,"src":"18902:10:27","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8911,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8898,"src":"18916:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18902:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8919,"nodeType":"IfStatement","src":"18898:98:27","trueBody":{"id":8918,"nodeType":"Block","src":"18923:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":8914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18974:3:27","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":8915,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8898,"src":"18979:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8913,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"18944:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18944:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8917,"nodeType":"RevertStatement","src":"18937:48:27"}]}}]},"documentation":{"id":8896,"nodeType":"StructuredDocumentation","src":"18461:312:27","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":8921,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18787:8:27","nodeType":"FunctionDefinition","parameters":{"id":8899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8898,"mutability":"mutable","name":"value","nameLocation":"18803:5:27","nodeType":"VariableDeclaration","scope":8921,"src":"18796:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8897,"name":"int256","nodeType":"ElementaryTypeName","src":"18796:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18795:14:27"},"returnParameters":{"id":8902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8901,"mutability":"mutable","name":"downcasted","nameLocation":"18840:10:27","nodeType":"VariableDeclaration","scope":8921,"src":"18833:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":8900,"name":"int232","nodeType":"ElementaryTypeName","src":"18833:6:27","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18832:19:27"},"scope":9690,"src":"18778:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8946,"nodeType":"Block","src":"19399:150:27","statements":[{"expression":{"id":8934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8929,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8927,"src":"19409:10:27","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8932,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"19429:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19422:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":8930,"name":"int224","nodeType":"ElementaryTypeName","src":"19422:6:27","typeDescriptions":{}}},"id":8933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19422:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19409:26:27","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":8935,"nodeType":"ExpressionStatement","src":"19409:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8936,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8927,"src":"19449:10:27","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8937,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"19463:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19449:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8945,"nodeType":"IfStatement","src":"19445:98:27","trueBody":{"id":8944,"nodeType":"Block","src":"19470:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":8940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19521:3:27","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":8941,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"19526:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8939,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"19491:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19491:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8943,"nodeType":"RevertStatement","src":"19484:48:27"}]}}]},"documentation":{"id":8922,"nodeType":"StructuredDocumentation","src":"19008:312:27","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":8947,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19334:8:27","nodeType":"FunctionDefinition","parameters":{"id":8925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8924,"mutability":"mutable","name":"value","nameLocation":"19350:5:27","nodeType":"VariableDeclaration","scope":8947,"src":"19343:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8923,"name":"int256","nodeType":"ElementaryTypeName","src":"19343:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19342:14:27"},"returnParameters":{"id":8928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8927,"mutability":"mutable","name":"downcasted","nameLocation":"19387:10:27","nodeType":"VariableDeclaration","scope":8947,"src":"19380:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":8926,"name":"int224","nodeType":"ElementaryTypeName","src":"19380:6:27","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19379:19:27"},"scope":9690,"src":"19325:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8972,"nodeType":"Block","src":"19946:150:27","statements":[{"expression":{"id":8960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8955,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8953,"src":"19956:10:27","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8958,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8950,"src":"19976:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19969:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":8956,"name":"int216","nodeType":"ElementaryTypeName","src":"19969:6:27","typeDescriptions":{}}},"id":8959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19969:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19956:26:27","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":8961,"nodeType":"ExpressionStatement","src":"19956:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8962,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8953,"src":"19996:10:27","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8950,"src":"20010:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19996:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8971,"nodeType":"IfStatement","src":"19992:98:27","trueBody":{"id":8970,"nodeType":"Block","src":"20017:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":8966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20068:3:27","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":8967,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8950,"src":"20073:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8965,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"20038:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20038:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8969,"nodeType":"RevertStatement","src":"20031:48:27"}]}}]},"documentation":{"id":8948,"nodeType":"StructuredDocumentation","src":"19555:312:27","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":8973,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19881:8:27","nodeType":"FunctionDefinition","parameters":{"id":8951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8950,"mutability":"mutable","name":"value","nameLocation":"19897:5:27","nodeType":"VariableDeclaration","scope":8973,"src":"19890:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8949,"name":"int256","nodeType":"ElementaryTypeName","src":"19890:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19889:14:27"},"returnParameters":{"id":8954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8953,"mutability":"mutable","name":"downcasted","nameLocation":"19934:10:27","nodeType":"VariableDeclaration","scope":8973,"src":"19927:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":8952,"name":"int216","nodeType":"ElementaryTypeName","src":"19927:6:27","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19926:19:27"},"scope":9690,"src":"19872:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8998,"nodeType":"Block","src":"20493:150:27","statements":[{"expression":{"id":8986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8981,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8979,"src":"20503:10:27","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8984,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8976,"src":"20523:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20516:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":8982,"name":"int208","nodeType":"ElementaryTypeName","src":"20516:6:27","typeDescriptions":{}}},"id":8985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20516:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20503:26:27","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":8987,"nodeType":"ExpressionStatement","src":"20503:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8988,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8979,"src":"20543:10:27","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8989,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8976,"src":"20557:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20543:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8997,"nodeType":"IfStatement","src":"20539:98:27","trueBody":{"id":8996,"nodeType":"Block","src":"20564:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":8992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20615:3:27","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":8993,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8976,"src":"20620:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8991,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"20585:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":8994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20585:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8995,"nodeType":"RevertStatement","src":"20578:48:27"}]}}]},"documentation":{"id":8974,"nodeType":"StructuredDocumentation","src":"20102:312:27","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":8999,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20428:8:27","nodeType":"FunctionDefinition","parameters":{"id":8977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8976,"mutability":"mutable","name":"value","nameLocation":"20444:5:27","nodeType":"VariableDeclaration","scope":8999,"src":"20437:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8975,"name":"int256","nodeType":"ElementaryTypeName","src":"20437:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20436:14:27"},"returnParameters":{"id":8980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8979,"mutability":"mutable","name":"downcasted","nameLocation":"20481:10:27","nodeType":"VariableDeclaration","scope":8999,"src":"20474:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":8978,"name":"int208","nodeType":"ElementaryTypeName","src":"20474:6:27","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20473:19:27"},"scope":9690,"src":"20419:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9024,"nodeType":"Block","src":"21040:150:27","statements":[{"expression":{"id":9012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9007,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9005,"src":"21050:10:27","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9010,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"21070:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21063:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":9008,"name":"int200","nodeType":"ElementaryTypeName","src":"21063:6:27","typeDescriptions":{}}},"id":9011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21063:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21050:26:27","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":9013,"nodeType":"ExpressionStatement","src":"21050:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9014,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9005,"src":"21090:10:27","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9015,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"21104:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21090:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9023,"nodeType":"IfStatement","src":"21086:98:27","trueBody":{"id":9022,"nodeType":"Block","src":"21111:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":9018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21162:3:27","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":9019,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"21167:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9017,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"21132:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21132:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9021,"nodeType":"RevertStatement","src":"21125:48:27"}]}}]},"documentation":{"id":9000,"nodeType":"StructuredDocumentation","src":"20649:312:27","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":9025,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20975:8:27","nodeType":"FunctionDefinition","parameters":{"id":9003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9002,"mutability":"mutable","name":"value","nameLocation":"20991:5:27","nodeType":"VariableDeclaration","scope":9025,"src":"20984:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9001,"name":"int256","nodeType":"ElementaryTypeName","src":"20984:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20983:14:27"},"returnParameters":{"id":9006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9005,"mutability":"mutable","name":"downcasted","nameLocation":"21028:10:27","nodeType":"VariableDeclaration","scope":9025,"src":"21021:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":9004,"name":"int200","nodeType":"ElementaryTypeName","src":"21021:6:27","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21020:19:27"},"scope":9690,"src":"20966:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9050,"nodeType":"Block","src":"21587:150:27","statements":[{"expression":{"id":9038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9033,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"21597:10:27","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9036,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9028,"src":"21617:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21610:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":9034,"name":"int192","nodeType":"ElementaryTypeName","src":"21610:6:27","typeDescriptions":{}}},"id":9037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21610:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21597:26:27","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":9039,"nodeType":"ExpressionStatement","src":"21597:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9040,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"21637:10:27","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9041,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9028,"src":"21651:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21637:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9049,"nodeType":"IfStatement","src":"21633:98:27","trueBody":{"id":9048,"nodeType":"Block","src":"21658:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":9044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21709:3:27","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":9045,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9028,"src":"21714:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9043,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"21679:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21679:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9047,"nodeType":"RevertStatement","src":"21672:48:27"}]}}]},"documentation":{"id":9026,"nodeType":"StructuredDocumentation","src":"21196:312:27","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":9051,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21522:8:27","nodeType":"FunctionDefinition","parameters":{"id":9029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9028,"mutability":"mutable","name":"value","nameLocation":"21538:5:27","nodeType":"VariableDeclaration","scope":9051,"src":"21531:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9027,"name":"int256","nodeType":"ElementaryTypeName","src":"21531:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21530:14:27"},"returnParameters":{"id":9032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9031,"mutability":"mutable","name":"downcasted","nameLocation":"21575:10:27","nodeType":"VariableDeclaration","scope":9051,"src":"21568:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":9030,"name":"int192","nodeType":"ElementaryTypeName","src":"21568:6:27","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21567:19:27"},"scope":9690,"src":"21513:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9076,"nodeType":"Block","src":"22134:150:27","statements":[{"expression":{"id":9064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9059,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9057,"src":"22144:10:27","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9062,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9054,"src":"22164:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22157:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":9060,"name":"int184","nodeType":"ElementaryTypeName","src":"22157:6:27","typeDescriptions":{}}},"id":9063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22157:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22144:26:27","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":9065,"nodeType":"ExpressionStatement","src":"22144:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9066,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9057,"src":"22184:10:27","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9067,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9054,"src":"22198:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22184:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9075,"nodeType":"IfStatement","src":"22180:98:27","trueBody":{"id":9074,"nodeType":"Block","src":"22205:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":9070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22256:3:27","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":9071,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9054,"src":"22261:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9069,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"22226:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22226:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9073,"nodeType":"RevertStatement","src":"22219:48:27"}]}}]},"documentation":{"id":9052,"nodeType":"StructuredDocumentation","src":"21743:312:27","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":9077,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22069:8:27","nodeType":"FunctionDefinition","parameters":{"id":9055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9054,"mutability":"mutable","name":"value","nameLocation":"22085:5:27","nodeType":"VariableDeclaration","scope":9077,"src":"22078:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9053,"name":"int256","nodeType":"ElementaryTypeName","src":"22078:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22077:14:27"},"returnParameters":{"id":9058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9057,"mutability":"mutable","name":"downcasted","nameLocation":"22122:10:27","nodeType":"VariableDeclaration","scope":9077,"src":"22115:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":9056,"name":"int184","nodeType":"ElementaryTypeName","src":"22115:6:27","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22114:19:27"},"scope":9690,"src":"22060:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9102,"nodeType":"Block","src":"22681:150:27","statements":[{"expression":{"id":9090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9085,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9083,"src":"22691:10:27","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9088,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9080,"src":"22711:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22704:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":9086,"name":"int176","nodeType":"ElementaryTypeName","src":"22704:6:27","typeDescriptions":{}}},"id":9089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22704:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22691:26:27","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":9091,"nodeType":"ExpressionStatement","src":"22691:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9092,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9083,"src":"22731:10:27","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9093,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9080,"src":"22745:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22731:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9101,"nodeType":"IfStatement","src":"22727:98:27","trueBody":{"id":9100,"nodeType":"Block","src":"22752:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":9096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22803:3:27","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":9097,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9080,"src":"22808:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9095,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"22773:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22773:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9099,"nodeType":"RevertStatement","src":"22766:48:27"}]}}]},"documentation":{"id":9078,"nodeType":"StructuredDocumentation","src":"22290:312:27","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":9103,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22616:8:27","nodeType":"FunctionDefinition","parameters":{"id":9081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9080,"mutability":"mutable","name":"value","nameLocation":"22632:5:27","nodeType":"VariableDeclaration","scope":9103,"src":"22625:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9079,"name":"int256","nodeType":"ElementaryTypeName","src":"22625:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22624:14:27"},"returnParameters":{"id":9084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9083,"mutability":"mutable","name":"downcasted","nameLocation":"22669:10:27","nodeType":"VariableDeclaration","scope":9103,"src":"22662:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":9082,"name":"int176","nodeType":"ElementaryTypeName","src":"22662:6:27","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22661:19:27"},"scope":9690,"src":"22607:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9128,"nodeType":"Block","src":"23228:150:27","statements":[{"expression":{"id":9116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9111,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9109,"src":"23238:10:27","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9114,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"23258:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23251:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":9112,"name":"int168","nodeType":"ElementaryTypeName","src":"23251:6:27","typeDescriptions":{}}},"id":9115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23251:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23238:26:27","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":9117,"nodeType":"ExpressionStatement","src":"23238:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9118,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9109,"src":"23278:10:27","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9119,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"23292:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23278:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9127,"nodeType":"IfStatement","src":"23274:98:27","trueBody":{"id":9126,"nodeType":"Block","src":"23299:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":9122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23350:3:27","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":9123,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"23355:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9121,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"23320:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23320:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9125,"nodeType":"RevertStatement","src":"23313:48:27"}]}}]},"documentation":{"id":9104,"nodeType":"StructuredDocumentation","src":"22837:312:27","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":9129,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23163:8:27","nodeType":"FunctionDefinition","parameters":{"id":9107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9106,"mutability":"mutable","name":"value","nameLocation":"23179:5:27","nodeType":"VariableDeclaration","scope":9129,"src":"23172:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9105,"name":"int256","nodeType":"ElementaryTypeName","src":"23172:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23171:14:27"},"returnParameters":{"id":9110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9109,"mutability":"mutable","name":"downcasted","nameLocation":"23216:10:27","nodeType":"VariableDeclaration","scope":9129,"src":"23209:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":9108,"name":"int168","nodeType":"ElementaryTypeName","src":"23209:6:27","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23208:19:27"},"scope":9690,"src":"23154:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9154,"nodeType":"Block","src":"23775:150:27","statements":[{"expression":{"id":9142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9137,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9135,"src":"23785:10:27","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9140,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9132,"src":"23805:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23798:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":9138,"name":"int160","nodeType":"ElementaryTypeName","src":"23798:6:27","typeDescriptions":{}}},"id":9141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23798:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23785:26:27","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":9143,"nodeType":"ExpressionStatement","src":"23785:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9144,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9135,"src":"23825:10:27","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9145,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9132,"src":"23839:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23825:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9153,"nodeType":"IfStatement","src":"23821:98:27","trueBody":{"id":9152,"nodeType":"Block","src":"23846:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":9148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23897:3:27","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":9149,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9132,"src":"23902:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9147,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"23867:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23867:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9151,"nodeType":"RevertStatement","src":"23860:48:27"}]}}]},"documentation":{"id":9130,"nodeType":"StructuredDocumentation","src":"23384:312:27","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":9155,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23710:8:27","nodeType":"FunctionDefinition","parameters":{"id":9133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9132,"mutability":"mutable","name":"value","nameLocation":"23726:5:27","nodeType":"VariableDeclaration","scope":9155,"src":"23719:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9131,"name":"int256","nodeType":"ElementaryTypeName","src":"23719:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23718:14:27"},"returnParameters":{"id":9136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9135,"mutability":"mutable","name":"downcasted","nameLocation":"23763:10:27","nodeType":"VariableDeclaration","scope":9155,"src":"23756:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":9134,"name":"int160","nodeType":"ElementaryTypeName","src":"23756:6:27","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23755:19:27"},"scope":9690,"src":"23701:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9180,"nodeType":"Block","src":"24322:150:27","statements":[{"expression":{"id":9168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9163,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9161,"src":"24332:10:27","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9166,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9158,"src":"24352:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24345:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":9164,"name":"int152","nodeType":"ElementaryTypeName","src":"24345:6:27","typeDescriptions":{}}},"id":9167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24345:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24332:26:27","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":9169,"nodeType":"ExpressionStatement","src":"24332:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9170,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9161,"src":"24372:10:27","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9171,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9158,"src":"24386:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24372:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9179,"nodeType":"IfStatement","src":"24368:98:27","trueBody":{"id":9178,"nodeType":"Block","src":"24393:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":9174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24444:3:27","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":9175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9158,"src":"24449:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9173,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"24414:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24414:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9177,"nodeType":"RevertStatement","src":"24407:48:27"}]}}]},"documentation":{"id":9156,"nodeType":"StructuredDocumentation","src":"23931:312:27","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":9181,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24257:8:27","nodeType":"FunctionDefinition","parameters":{"id":9159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9158,"mutability":"mutable","name":"value","nameLocation":"24273:5:27","nodeType":"VariableDeclaration","scope":9181,"src":"24266:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9157,"name":"int256","nodeType":"ElementaryTypeName","src":"24266:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24265:14:27"},"returnParameters":{"id":9162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9161,"mutability":"mutable","name":"downcasted","nameLocation":"24310:10:27","nodeType":"VariableDeclaration","scope":9181,"src":"24303:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":9160,"name":"int152","nodeType":"ElementaryTypeName","src":"24303:6:27","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24302:19:27"},"scope":9690,"src":"24248:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9206,"nodeType":"Block","src":"24869:150:27","statements":[{"expression":{"id":9194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9189,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9187,"src":"24879:10:27","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9192,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9184,"src":"24899:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24892:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":9190,"name":"int144","nodeType":"ElementaryTypeName","src":"24892:6:27","typeDescriptions":{}}},"id":9193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24892:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24879:26:27","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":9195,"nodeType":"ExpressionStatement","src":"24879:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9196,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9187,"src":"24919:10:27","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9197,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9184,"src":"24933:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24919:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9205,"nodeType":"IfStatement","src":"24915:98:27","trueBody":{"id":9204,"nodeType":"Block","src":"24940:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":9200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24991:3:27","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":9201,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9184,"src":"24996:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9199,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"24961:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24961:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9203,"nodeType":"RevertStatement","src":"24954:48:27"}]}}]},"documentation":{"id":9182,"nodeType":"StructuredDocumentation","src":"24478:312:27","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":9207,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24804:8:27","nodeType":"FunctionDefinition","parameters":{"id":9185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9184,"mutability":"mutable","name":"value","nameLocation":"24820:5:27","nodeType":"VariableDeclaration","scope":9207,"src":"24813:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9183,"name":"int256","nodeType":"ElementaryTypeName","src":"24813:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24812:14:27"},"returnParameters":{"id":9188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9187,"mutability":"mutable","name":"downcasted","nameLocation":"24857:10:27","nodeType":"VariableDeclaration","scope":9207,"src":"24850:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":9186,"name":"int144","nodeType":"ElementaryTypeName","src":"24850:6:27","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24849:19:27"},"scope":9690,"src":"24795:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9232,"nodeType":"Block","src":"25416:150:27","statements":[{"expression":{"id":9220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9215,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"25426:10:27","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9218,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9210,"src":"25446:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25439:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":9216,"name":"int136","nodeType":"ElementaryTypeName","src":"25439:6:27","typeDescriptions":{}}},"id":9219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25439:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25426:26:27","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":9221,"nodeType":"ExpressionStatement","src":"25426:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9222,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"25466:10:27","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9223,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9210,"src":"25480:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25466:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9231,"nodeType":"IfStatement","src":"25462:98:27","trueBody":{"id":9230,"nodeType":"Block","src":"25487:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":9226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25538:3:27","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":9227,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9210,"src":"25543:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9225,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"25508:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25508:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9229,"nodeType":"RevertStatement","src":"25501:48:27"}]}}]},"documentation":{"id":9208,"nodeType":"StructuredDocumentation","src":"25025:312:27","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":9233,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25351:8:27","nodeType":"FunctionDefinition","parameters":{"id":9211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9210,"mutability":"mutable","name":"value","nameLocation":"25367:5:27","nodeType":"VariableDeclaration","scope":9233,"src":"25360:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9209,"name":"int256","nodeType":"ElementaryTypeName","src":"25360:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25359:14:27"},"returnParameters":{"id":9214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9213,"mutability":"mutable","name":"downcasted","nameLocation":"25404:10:27","nodeType":"VariableDeclaration","scope":9233,"src":"25397:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":9212,"name":"int136","nodeType":"ElementaryTypeName","src":"25397:6:27","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25396:19:27"},"scope":9690,"src":"25342:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9258,"nodeType":"Block","src":"25963:150:27","statements":[{"expression":{"id":9246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9241,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9239,"src":"25973:10:27","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9244,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9236,"src":"25993:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25986:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":9242,"name":"int128","nodeType":"ElementaryTypeName","src":"25986:6:27","typeDescriptions":{}}},"id":9245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25986:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25973:26:27","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":9247,"nodeType":"ExpressionStatement","src":"25973:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9248,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9239,"src":"26013:10:27","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9236,"src":"26027:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26013:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9257,"nodeType":"IfStatement","src":"26009:98:27","trueBody":{"id":9256,"nodeType":"Block","src":"26034:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":9252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26085:3:27","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":9253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9236,"src":"26090:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9251,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"26055:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26055:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9255,"nodeType":"RevertStatement","src":"26048:48:27"}]}}]},"documentation":{"id":9234,"nodeType":"StructuredDocumentation","src":"25572:312:27","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":9259,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25898:8:27","nodeType":"FunctionDefinition","parameters":{"id":9237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9236,"mutability":"mutable","name":"value","nameLocation":"25914:5:27","nodeType":"VariableDeclaration","scope":9259,"src":"25907:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9235,"name":"int256","nodeType":"ElementaryTypeName","src":"25907:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25906:14:27"},"returnParameters":{"id":9240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9239,"mutability":"mutable","name":"downcasted","nameLocation":"25951:10:27","nodeType":"VariableDeclaration","scope":9259,"src":"25944:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":9238,"name":"int128","nodeType":"ElementaryTypeName","src":"25944:6:27","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25943:19:27"},"scope":9690,"src":"25889:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9284,"nodeType":"Block","src":"26510:150:27","statements":[{"expression":{"id":9272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9267,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"26520:10:27","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9262,"src":"26540:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26533:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":9268,"name":"int120","nodeType":"ElementaryTypeName","src":"26533:6:27","typeDescriptions":{}}},"id":9271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26533:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26520:26:27","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":9273,"nodeType":"ExpressionStatement","src":"26520:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9274,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"26560:10:27","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9275,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9262,"src":"26574:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26560:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9283,"nodeType":"IfStatement","src":"26556:98:27","trueBody":{"id":9282,"nodeType":"Block","src":"26581:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":9278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26632:3:27","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":9279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9262,"src":"26637:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9277,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"26602:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26602:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9281,"nodeType":"RevertStatement","src":"26595:48:27"}]}}]},"documentation":{"id":9260,"nodeType":"StructuredDocumentation","src":"26119:312:27","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":9285,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26445:8:27","nodeType":"FunctionDefinition","parameters":{"id":9263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9262,"mutability":"mutable","name":"value","nameLocation":"26461:5:27","nodeType":"VariableDeclaration","scope":9285,"src":"26454:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9261,"name":"int256","nodeType":"ElementaryTypeName","src":"26454:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26453:14:27"},"returnParameters":{"id":9266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9265,"mutability":"mutable","name":"downcasted","nameLocation":"26498:10:27","nodeType":"VariableDeclaration","scope":9285,"src":"26491:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":9264,"name":"int120","nodeType":"ElementaryTypeName","src":"26491:6:27","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26490:19:27"},"scope":9690,"src":"26436:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9310,"nodeType":"Block","src":"27057:150:27","statements":[{"expression":{"id":9298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9293,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9291,"src":"27067:10:27","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9296,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"27087:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27080:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":9294,"name":"int112","nodeType":"ElementaryTypeName","src":"27080:6:27","typeDescriptions":{}}},"id":9297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27080:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27067:26:27","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":9299,"nodeType":"ExpressionStatement","src":"27067:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9300,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9291,"src":"27107:10:27","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9301,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"27121:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27107:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9309,"nodeType":"IfStatement","src":"27103:98:27","trueBody":{"id":9308,"nodeType":"Block","src":"27128:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":9304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27179:3:27","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":9305,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"27184:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9303,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"27149:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27149:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9307,"nodeType":"RevertStatement","src":"27142:48:27"}]}}]},"documentation":{"id":9286,"nodeType":"StructuredDocumentation","src":"26666:312:27","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":9311,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26992:8:27","nodeType":"FunctionDefinition","parameters":{"id":9289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9288,"mutability":"mutable","name":"value","nameLocation":"27008:5:27","nodeType":"VariableDeclaration","scope":9311,"src":"27001:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9287,"name":"int256","nodeType":"ElementaryTypeName","src":"27001:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27000:14:27"},"returnParameters":{"id":9292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9291,"mutability":"mutable","name":"downcasted","nameLocation":"27045:10:27","nodeType":"VariableDeclaration","scope":9311,"src":"27038:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":9290,"name":"int112","nodeType":"ElementaryTypeName","src":"27038:6:27","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27037:19:27"},"scope":9690,"src":"26983:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9336,"nodeType":"Block","src":"27604:150:27","statements":[{"expression":{"id":9324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9319,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"27614:10:27","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9322,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9314,"src":"27634:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27627:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":9320,"name":"int104","nodeType":"ElementaryTypeName","src":"27627:6:27","typeDescriptions":{}}},"id":9323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27627:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27614:26:27","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":9325,"nodeType":"ExpressionStatement","src":"27614:26:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9326,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"27654:10:27","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9327,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9314,"src":"27668:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27654:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9335,"nodeType":"IfStatement","src":"27650:98:27","trueBody":{"id":9334,"nodeType":"Block","src":"27675:73:27","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":9330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27726:3:27","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":9331,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9314,"src":"27731:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9329,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"27696:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27696:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9333,"nodeType":"RevertStatement","src":"27689:48:27"}]}}]},"documentation":{"id":9312,"nodeType":"StructuredDocumentation","src":"27213:312:27","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":9337,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27539:8:27","nodeType":"FunctionDefinition","parameters":{"id":9315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9314,"mutability":"mutable","name":"value","nameLocation":"27555:5:27","nodeType":"VariableDeclaration","scope":9337,"src":"27548:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9313,"name":"int256","nodeType":"ElementaryTypeName","src":"27548:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27547:14:27"},"returnParameters":{"id":9318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9317,"mutability":"mutable","name":"downcasted","nameLocation":"27592:10:27","nodeType":"VariableDeclaration","scope":9337,"src":"27585:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":9316,"name":"int104","nodeType":"ElementaryTypeName","src":"27585:6:27","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27584:19:27"},"scope":9690,"src":"27530:224:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9362,"nodeType":"Block","src":"28144:148:27","statements":[{"expression":{"id":9350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9345,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9343,"src":"28154:10:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9340,"src":"28173:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28167:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":9346,"name":"int96","nodeType":"ElementaryTypeName","src":"28167:5:27","typeDescriptions":{}}},"id":9349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28167:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28154:25:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":9351,"nodeType":"ExpressionStatement","src":"28154:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9352,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9343,"src":"28193:10:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9353,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9340,"src":"28207:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28193:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9361,"nodeType":"IfStatement","src":"28189:97:27","trueBody":{"id":9360,"nodeType":"Block","src":"28214:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":9356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28265:2:27","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":9357,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9340,"src":"28269:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9355,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"28235:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28235:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9359,"nodeType":"RevertStatement","src":"28228:47:27"}]}}]},"documentation":{"id":9338,"nodeType":"StructuredDocumentation","src":"27760:307:27","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":9363,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28081:7:27","nodeType":"FunctionDefinition","parameters":{"id":9341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9340,"mutability":"mutable","name":"value","nameLocation":"28096:5:27","nodeType":"VariableDeclaration","scope":9363,"src":"28089:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9339,"name":"int256","nodeType":"ElementaryTypeName","src":"28089:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28088:14:27"},"returnParameters":{"id":9344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9343,"mutability":"mutable","name":"downcasted","nameLocation":"28132:10:27","nodeType":"VariableDeclaration","scope":9363,"src":"28126:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9342,"name":"int96","nodeType":"ElementaryTypeName","src":"28126:5:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28125:18:27"},"scope":9690,"src":"28072:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9388,"nodeType":"Block","src":"28682:148:27","statements":[{"expression":{"id":9376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9371,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9369,"src":"28692:10:27","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9374,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9366,"src":"28711:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28705:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":9372,"name":"int88","nodeType":"ElementaryTypeName","src":"28705:5:27","typeDescriptions":{}}},"id":9375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28705:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28692:25:27","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":9377,"nodeType":"ExpressionStatement","src":"28692:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9378,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9369,"src":"28731:10:27","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9379,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9366,"src":"28745:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28731:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9387,"nodeType":"IfStatement","src":"28727:97:27","trueBody":{"id":9386,"nodeType":"Block","src":"28752:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":9382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28803:2:27","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":9383,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9366,"src":"28807:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9381,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"28773:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28773:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9385,"nodeType":"RevertStatement","src":"28766:47:27"}]}}]},"documentation":{"id":9364,"nodeType":"StructuredDocumentation","src":"28298:307:27","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":9389,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28619:7:27","nodeType":"FunctionDefinition","parameters":{"id":9367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9366,"mutability":"mutable","name":"value","nameLocation":"28634:5:27","nodeType":"VariableDeclaration","scope":9389,"src":"28627:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9365,"name":"int256","nodeType":"ElementaryTypeName","src":"28627:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28626:14:27"},"returnParameters":{"id":9370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9369,"mutability":"mutable","name":"downcasted","nameLocation":"28670:10:27","nodeType":"VariableDeclaration","scope":9389,"src":"28664:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":9368,"name":"int88","nodeType":"ElementaryTypeName","src":"28664:5:27","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28663:18:27"},"scope":9690,"src":"28610:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9414,"nodeType":"Block","src":"29220:148:27","statements":[{"expression":{"id":9402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9397,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9395,"src":"29230:10:27","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9400,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9392,"src":"29249:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9399,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29243:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":9398,"name":"int80","nodeType":"ElementaryTypeName","src":"29243:5:27","typeDescriptions":{}}},"id":9401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29243:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29230:25:27","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":9403,"nodeType":"ExpressionStatement","src":"29230:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9404,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9395,"src":"29269:10:27","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9405,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9392,"src":"29283:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29269:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9413,"nodeType":"IfStatement","src":"29265:97:27","trueBody":{"id":9412,"nodeType":"Block","src":"29290:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":9408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29341:2:27","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":9409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9392,"src":"29345:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9407,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"29311:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29311:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9411,"nodeType":"RevertStatement","src":"29304:47:27"}]}}]},"documentation":{"id":9390,"nodeType":"StructuredDocumentation","src":"28836:307:27","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":9415,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29157:7:27","nodeType":"FunctionDefinition","parameters":{"id":9393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9392,"mutability":"mutable","name":"value","nameLocation":"29172:5:27","nodeType":"VariableDeclaration","scope":9415,"src":"29165:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9391,"name":"int256","nodeType":"ElementaryTypeName","src":"29165:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29164:14:27"},"returnParameters":{"id":9396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9395,"mutability":"mutable","name":"downcasted","nameLocation":"29208:10:27","nodeType":"VariableDeclaration","scope":9415,"src":"29202:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":9394,"name":"int80","nodeType":"ElementaryTypeName","src":"29202:5:27","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29201:18:27"},"scope":9690,"src":"29148:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9440,"nodeType":"Block","src":"29758:148:27","statements":[{"expression":{"id":9428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9423,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9421,"src":"29768:10:27","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9426,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9418,"src":"29787:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29781:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":9424,"name":"int72","nodeType":"ElementaryTypeName","src":"29781:5:27","typeDescriptions":{}}},"id":9427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29781:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29768:25:27","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":9429,"nodeType":"ExpressionStatement","src":"29768:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9430,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9421,"src":"29807:10:27","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9431,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9418,"src":"29821:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29807:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9439,"nodeType":"IfStatement","src":"29803:97:27","trueBody":{"id":9438,"nodeType":"Block","src":"29828:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":9434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29879:2:27","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":9435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9418,"src":"29883:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9433,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"29849:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29849:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9437,"nodeType":"RevertStatement","src":"29842:47:27"}]}}]},"documentation":{"id":9416,"nodeType":"StructuredDocumentation","src":"29374:307:27","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":9441,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29695:7:27","nodeType":"FunctionDefinition","parameters":{"id":9419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9418,"mutability":"mutable","name":"value","nameLocation":"29710:5:27","nodeType":"VariableDeclaration","scope":9441,"src":"29703:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9417,"name":"int256","nodeType":"ElementaryTypeName","src":"29703:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29702:14:27"},"returnParameters":{"id":9422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9421,"mutability":"mutable","name":"downcasted","nameLocation":"29746:10:27","nodeType":"VariableDeclaration","scope":9441,"src":"29740:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":9420,"name":"int72","nodeType":"ElementaryTypeName","src":"29740:5:27","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29739:18:27"},"scope":9690,"src":"29686:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9466,"nodeType":"Block","src":"30296:148:27","statements":[{"expression":{"id":9454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9449,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9447,"src":"30306:10:27","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9452,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"30325:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30319:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":9450,"name":"int64","nodeType":"ElementaryTypeName","src":"30319:5:27","typeDescriptions":{}}},"id":9453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30319:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30306:25:27","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":9455,"nodeType":"ExpressionStatement","src":"30306:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9456,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9447,"src":"30345:10:27","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9457,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"30359:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30345:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9465,"nodeType":"IfStatement","src":"30341:97:27","trueBody":{"id":9464,"nodeType":"Block","src":"30366:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":9460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30417:2:27","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":9461,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"30421:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9459,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"30387:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30387:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9463,"nodeType":"RevertStatement","src":"30380:47:27"}]}}]},"documentation":{"id":9442,"nodeType":"StructuredDocumentation","src":"29912:307:27","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":9467,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30233:7:27","nodeType":"FunctionDefinition","parameters":{"id":9445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9444,"mutability":"mutable","name":"value","nameLocation":"30248:5:27","nodeType":"VariableDeclaration","scope":9467,"src":"30241:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9443,"name":"int256","nodeType":"ElementaryTypeName","src":"30241:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30240:14:27"},"returnParameters":{"id":9448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9447,"mutability":"mutable","name":"downcasted","nameLocation":"30284:10:27","nodeType":"VariableDeclaration","scope":9467,"src":"30278:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":9446,"name":"int64","nodeType":"ElementaryTypeName","src":"30278:5:27","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30277:18:27"},"scope":9690,"src":"30224:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9492,"nodeType":"Block","src":"30834:148:27","statements":[{"expression":{"id":9480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9475,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9473,"src":"30844:10:27","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9478,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9470,"src":"30863:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30857:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":9476,"name":"int56","nodeType":"ElementaryTypeName","src":"30857:5:27","typeDescriptions":{}}},"id":9479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30857:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30844:25:27","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":9481,"nodeType":"ExpressionStatement","src":"30844:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9482,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9473,"src":"30883:10:27","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9483,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9470,"src":"30897:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30883:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9491,"nodeType":"IfStatement","src":"30879:97:27","trueBody":{"id":9490,"nodeType":"Block","src":"30904:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":9486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30955:2:27","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":9487,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9470,"src":"30959:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9485,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"30925:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30925:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9489,"nodeType":"RevertStatement","src":"30918:47:27"}]}}]},"documentation":{"id":9468,"nodeType":"StructuredDocumentation","src":"30450:307:27","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":9493,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30771:7:27","nodeType":"FunctionDefinition","parameters":{"id":9471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9470,"mutability":"mutable","name":"value","nameLocation":"30786:5:27","nodeType":"VariableDeclaration","scope":9493,"src":"30779:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9469,"name":"int256","nodeType":"ElementaryTypeName","src":"30779:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30778:14:27"},"returnParameters":{"id":9474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9473,"mutability":"mutable","name":"downcasted","nameLocation":"30822:10:27","nodeType":"VariableDeclaration","scope":9493,"src":"30816:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":9472,"name":"int56","nodeType":"ElementaryTypeName","src":"30816:5:27","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30815:18:27"},"scope":9690,"src":"30762:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9518,"nodeType":"Block","src":"31372:148:27","statements":[{"expression":{"id":9506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9501,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"31382:10:27","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9504,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9496,"src":"31401:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31395:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":9502,"name":"int48","nodeType":"ElementaryTypeName","src":"31395:5:27","typeDescriptions":{}}},"id":9505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31395:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31382:25:27","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":9507,"nodeType":"ExpressionStatement","src":"31382:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9508,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"31421:10:27","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9509,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9496,"src":"31435:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31421:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9517,"nodeType":"IfStatement","src":"31417:97:27","trueBody":{"id":9516,"nodeType":"Block","src":"31442:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":9512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31493:2:27","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":9513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9496,"src":"31497:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9511,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"31463:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31463:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9515,"nodeType":"RevertStatement","src":"31456:47:27"}]}}]},"documentation":{"id":9494,"nodeType":"StructuredDocumentation","src":"30988:307:27","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":9519,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31309:7:27","nodeType":"FunctionDefinition","parameters":{"id":9497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9496,"mutability":"mutable","name":"value","nameLocation":"31324:5:27","nodeType":"VariableDeclaration","scope":9519,"src":"31317:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9495,"name":"int256","nodeType":"ElementaryTypeName","src":"31317:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31316:14:27"},"returnParameters":{"id":9500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9499,"mutability":"mutable","name":"downcasted","nameLocation":"31360:10:27","nodeType":"VariableDeclaration","scope":9519,"src":"31354:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":9498,"name":"int48","nodeType":"ElementaryTypeName","src":"31354:5:27","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31353:18:27"},"scope":9690,"src":"31300:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9544,"nodeType":"Block","src":"31910:148:27","statements":[{"expression":{"id":9532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9527,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9525,"src":"31920:10:27","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9530,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9522,"src":"31939:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31933:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":9528,"name":"int40","nodeType":"ElementaryTypeName","src":"31933:5:27","typeDescriptions":{}}},"id":9531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31933:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31920:25:27","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":9533,"nodeType":"ExpressionStatement","src":"31920:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9534,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9525,"src":"31959:10:27","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9535,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9522,"src":"31973:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31959:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9543,"nodeType":"IfStatement","src":"31955:97:27","trueBody":{"id":9542,"nodeType":"Block","src":"31980:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":9538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32031:2:27","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":9539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9522,"src":"32035:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9537,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"32001:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32001:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9541,"nodeType":"RevertStatement","src":"31994:47:27"}]}}]},"documentation":{"id":9520,"nodeType":"StructuredDocumentation","src":"31526:307:27","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":9545,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31847:7:27","nodeType":"FunctionDefinition","parameters":{"id":9523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9522,"mutability":"mutable","name":"value","nameLocation":"31862:5:27","nodeType":"VariableDeclaration","scope":9545,"src":"31855:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9521,"name":"int256","nodeType":"ElementaryTypeName","src":"31855:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31854:14:27"},"returnParameters":{"id":9526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9525,"mutability":"mutable","name":"downcasted","nameLocation":"31898:10:27","nodeType":"VariableDeclaration","scope":9545,"src":"31892:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":9524,"name":"int40","nodeType":"ElementaryTypeName","src":"31892:5:27","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31891:18:27"},"scope":9690,"src":"31838:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9570,"nodeType":"Block","src":"32448:148:27","statements":[{"expression":{"id":9558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9553,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9551,"src":"32458:10:27","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9556,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9548,"src":"32477:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32471:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":9554,"name":"int32","nodeType":"ElementaryTypeName","src":"32471:5:27","typeDescriptions":{}}},"id":9557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32471:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32458:25:27","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":9559,"nodeType":"ExpressionStatement","src":"32458:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9560,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9551,"src":"32497:10:27","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9561,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9548,"src":"32511:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32497:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9569,"nodeType":"IfStatement","src":"32493:97:27","trueBody":{"id":9568,"nodeType":"Block","src":"32518:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":9564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32569:2:27","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":9565,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9548,"src":"32573:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9563,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"32539:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32539:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9567,"nodeType":"RevertStatement","src":"32532:47:27"}]}}]},"documentation":{"id":9546,"nodeType":"StructuredDocumentation","src":"32064:307:27","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":9571,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32385:7:27","nodeType":"FunctionDefinition","parameters":{"id":9549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9548,"mutability":"mutable","name":"value","nameLocation":"32400:5:27","nodeType":"VariableDeclaration","scope":9571,"src":"32393:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9547,"name":"int256","nodeType":"ElementaryTypeName","src":"32393:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32392:14:27"},"returnParameters":{"id":9552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9551,"mutability":"mutable","name":"downcasted","nameLocation":"32436:10:27","nodeType":"VariableDeclaration","scope":9571,"src":"32430:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":9550,"name":"int32","nodeType":"ElementaryTypeName","src":"32430:5:27","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32429:18:27"},"scope":9690,"src":"32376:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9596,"nodeType":"Block","src":"32986:148:27","statements":[{"expression":{"id":9584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9579,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9577,"src":"32996:10:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9582,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9574,"src":"33015:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33009:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":9580,"name":"int24","nodeType":"ElementaryTypeName","src":"33009:5:27","typeDescriptions":{}}},"id":9583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33009:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32996:25:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":9585,"nodeType":"ExpressionStatement","src":"32996:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9586,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9577,"src":"33035:10:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9587,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9574,"src":"33049:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33035:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9595,"nodeType":"IfStatement","src":"33031:97:27","trueBody":{"id":9594,"nodeType":"Block","src":"33056:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":9590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33107:2:27","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":9591,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9574,"src":"33111:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9589,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"33077:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33077:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9593,"nodeType":"RevertStatement","src":"33070:47:27"}]}}]},"documentation":{"id":9572,"nodeType":"StructuredDocumentation","src":"32602:307:27","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":9597,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32923:7:27","nodeType":"FunctionDefinition","parameters":{"id":9575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9574,"mutability":"mutable","name":"value","nameLocation":"32938:5:27","nodeType":"VariableDeclaration","scope":9597,"src":"32931:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9573,"name":"int256","nodeType":"ElementaryTypeName","src":"32931:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32930:14:27"},"returnParameters":{"id":9578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9577,"mutability":"mutable","name":"downcasted","nameLocation":"32974:10:27","nodeType":"VariableDeclaration","scope":9597,"src":"32968:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9576,"name":"int24","nodeType":"ElementaryTypeName","src":"32968:5:27","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32967:18:27"},"scope":9690,"src":"32914:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9622,"nodeType":"Block","src":"33524:148:27","statements":[{"expression":{"id":9610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9605,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"33534:10:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9608,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9600,"src":"33553:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33547:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":9606,"name":"int16","nodeType":"ElementaryTypeName","src":"33547:5:27","typeDescriptions":{}}},"id":9609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33547:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33534:25:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":9611,"nodeType":"ExpressionStatement","src":"33534:25:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9612,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"33573:10:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9613,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9600,"src":"33587:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33573:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9621,"nodeType":"IfStatement","src":"33569:97:27","trueBody":{"id":9620,"nodeType":"Block","src":"33594:72:27","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":9616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33645:2:27","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":9617,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9600,"src":"33649:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9615,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"33615:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33615:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9619,"nodeType":"RevertStatement","src":"33608:47:27"}]}}]},"documentation":{"id":9598,"nodeType":"StructuredDocumentation","src":"33140:307:27","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":9623,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33461:7:27","nodeType":"FunctionDefinition","parameters":{"id":9601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9600,"mutability":"mutable","name":"value","nameLocation":"33476:5:27","nodeType":"VariableDeclaration","scope":9623,"src":"33469:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9599,"name":"int256","nodeType":"ElementaryTypeName","src":"33469:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33468:14:27"},"returnParameters":{"id":9604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9603,"mutability":"mutable","name":"downcasted","nameLocation":"33512:10:27","nodeType":"VariableDeclaration","scope":9623,"src":"33506:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":9602,"name":"int16","nodeType":"ElementaryTypeName","src":"33506:5:27","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33505:18:27"},"scope":9690,"src":"33452:220:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9648,"nodeType":"Block","src":"34055:146:27","statements":[{"expression":{"id":9636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9631,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9629,"src":"34065:10:27","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9634,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9626,"src":"34083:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34078:4:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":9632,"name":"int8","nodeType":"ElementaryTypeName","src":"34078:4:27","typeDescriptions":{}}},"id":9635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34078:11:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34065:24:27","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":9637,"nodeType":"ExpressionStatement","src":"34065:24:27"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9638,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9629,"src":"34103:10:27","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9626,"src":"34117:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34103:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9647,"nodeType":"IfStatement","src":"34099:96:27","trueBody":{"id":9646,"nodeType":"Block","src":"34124:71:27","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":9642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34175:1:27","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":9643,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9626,"src":"34178:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9641,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7947,"src":"34145:29:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":9644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34145:39:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9645,"nodeType":"RevertStatement","src":"34138:46:27"}]}}]},"documentation":{"id":9624,"nodeType":"StructuredDocumentation","src":"33678:302:27","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":9649,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33994:6:27","nodeType":"FunctionDefinition","parameters":{"id":9627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9626,"mutability":"mutable","name":"value","nameLocation":"34008:5:27","nodeType":"VariableDeclaration","scope":9649,"src":"34001:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9625,"name":"int256","nodeType":"ElementaryTypeName","src":"34001:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34000:14:27"},"returnParameters":{"id":9630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9629,"mutability":"mutable","name":"downcasted","nameLocation":"34043:10:27","nodeType":"VariableDeclaration","scope":9649,"src":"34038:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":9628,"name":"int8","nodeType":"ElementaryTypeName","src":"34038:4:27","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34037:17:27"},"scope":9690,"src":"33985:216:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9678,"nodeType":"Block","src":"34441:250:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9657,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9652,"src":"34554:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":9662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34575:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9661,"name":"int256","nodeType":"ElementaryTypeName","src":"34575:6:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":9660,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"34570:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34570:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":9664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34583:3:27","memberName":"max","nodeType":"MemberAccess","src":"34570:16:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34562:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9658,"name":"uint256","nodeType":"ElementaryTypeName","src":"34562:7:27","typeDescriptions":{}}},"id":9665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34562:25:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34554:33:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9672,"nodeType":"IfStatement","src":"34550:105:27","trueBody":{"id":9671,"nodeType":"Block","src":"34589:66:27","statements":[{"errorCall":{"arguments":[{"id":9668,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9652,"src":"34638:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9667,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7952,"src":"34610:27:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":9669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34610:34:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9670,"nodeType":"RevertStatement","src":"34603:41:27"}]}},{"expression":{"arguments":[{"id":9675,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9652,"src":"34678:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34671:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9673,"name":"int256","nodeType":"ElementaryTypeName","src":"34671:6:27","typeDescriptions":{}}},"id":9676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34671:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9656,"id":9677,"nodeType":"Return","src":"34664:20:27"}]},"documentation":{"id":9650,"nodeType":"StructuredDocumentation","src":"34207:165:27","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":9679,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34386:8:27","nodeType":"FunctionDefinition","parameters":{"id":9653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9652,"mutability":"mutable","name":"value","nameLocation":"34403:5:27","nodeType":"VariableDeclaration","scope":9679,"src":"34395:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9651,"name":"uint256","nodeType":"ElementaryTypeName","src":"34395:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34394:15:27"},"returnParameters":{"id":9656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9655,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9679,"src":"34433:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9654,"name":"int256","nodeType":"ElementaryTypeName","src":"34433:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34432:8:27"},"scope":9690,"src":"34377:314:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9688,"nodeType":"Block","src":"34850:87:27","statements":[{"AST":{"nativeSrc":"34885:46:27","nodeType":"YulBlock","src":"34885:46:27","statements":[{"nativeSrc":"34899:22:27","nodeType":"YulAssignment","src":"34899:22:27","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34918:1:27","nodeType":"YulIdentifier","src":"34918:1:27"}],"functionName":{"name":"iszero","nativeSrc":"34911:6:27","nodeType":"YulIdentifier","src":"34911:6:27"},"nativeSrc":"34911:9:27","nodeType":"YulFunctionCall","src":"34911:9:27"}],"functionName":{"name":"iszero","nativeSrc":"34904:6:27","nodeType":"YulIdentifier","src":"34904:6:27"},"nativeSrc":"34904:17:27","nodeType":"YulFunctionCall","src":"34904:17:27"},"variableNames":[{"name":"u","nativeSrc":"34899:1:27","nodeType":"YulIdentifier","src":"34899:1:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9682,"isOffset":false,"isSlot":false,"src":"34918:1:27","valueSize":1},{"declaration":9685,"isOffset":false,"isSlot":false,"src":"34899:1:27","valueSize":1}],"flags":["memory-safe"],"id":9687,"nodeType":"InlineAssembly","src":"34860:71:27"}]},"documentation":{"id":9680,"nodeType":"StructuredDocumentation","src":"34697:90:27","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":9689,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34801:6:27","nodeType":"FunctionDefinition","parameters":{"id":9683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9682,"mutability":"mutable","name":"b","nameLocation":"34813:1:27","nodeType":"VariableDeclaration","scope":9689,"src":"34808:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9681,"name":"bool","nodeType":"ElementaryTypeName","src":"34808:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34807:8:27"},"returnParameters":{"id":9686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9685,"mutability":"mutable","name":"u","nameLocation":"34847:1:27","nodeType":"VariableDeclaration","scope":9689,"src":"34839:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9684,"name":"uint256","nodeType":"ElementaryTypeName","src":"34839:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34838:11:27"},"scope":9690,"src":"34792:145:27","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9691,"src":"769:34170:27","usedErrors":[7935,7940,7947,7952],"usedEvents":[]}],"src":"192:34748:27"},"id":27},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SafeCast":[9690],"SignedMath":[9834]},"id":9835,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9692,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:28"},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":9694,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9835,"sourceUnit":9691,"src":"135:40:28","symbolAliases":[{"foreign":{"id":9693,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"143:8:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":9695,"nodeType":"StructuredDocumentation","src":"177:80:28","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":9834,"linearizedBaseContracts":[9834],"name":"SignedMath","nameLocation":"266:10:28","nodeType":"ContractDefinition","nodes":[{"body":{"id":9724,"nodeType":"Block","src":"746:215:28","statements":[{"id":9723,"nodeType":"UncheckedBlock","src":"756:199:28","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9707,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9702,"src":"894:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9708,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9700,"src":"900:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9709,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9702,"src":"904:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"900:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9711,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"899:7:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"arguments":[{"id":9716,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9698,"src":"932:9:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9714,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"916:8:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$9690_$","typeString":"type(library SafeCast)"}},"id":9715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"925:6:28","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"916:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:26:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"909:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9712,"name":"int256","nodeType":"ElementaryTypeName","src":"909:6:28","typeDescriptions":{}}},"id":9718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"909:34:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"899:44:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9720,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"898:46:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"894:50:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9706,"id":9722,"nodeType":"Return","src":"887:57:28"}]}]},"documentation":{"id":9696,"nodeType":"StructuredDocumentation","src":"283:374:28","text":" @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."},"id":9725,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"671:7:28","nodeType":"FunctionDefinition","parameters":{"id":9703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9698,"mutability":"mutable","name":"condition","nameLocation":"684:9:28","nodeType":"VariableDeclaration","scope":9725,"src":"679:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9697,"name":"bool","nodeType":"ElementaryTypeName","src":"679:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9700,"mutability":"mutable","name":"a","nameLocation":"702:1:28","nodeType":"VariableDeclaration","scope":9725,"src":"695:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9699,"name":"int256","nodeType":"ElementaryTypeName","src":"695:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9702,"mutability":"mutable","name":"b","nameLocation":"712:1:28","nodeType":"VariableDeclaration","scope":9725,"src":"705:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9701,"name":"int256","nodeType":"ElementaryTypeName","src":"705:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"678:36:28"},"returnParameters":{"id":9706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9705,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9725,"src":"738:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9704,"name":"int256","nodeType":"ElementaryTypeName","src":"738:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"737:8:28"},"scope":9834,"src":"662:299:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9743,"nodeType":"Block","src":"1102:44:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9736,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"1127:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9737,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9730,"src":"1131:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1127:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9739,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"1134:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":9740,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9730,"src":"1137:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9735,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9725,"src":"1119:7:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":9741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1119:20:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9734,"id":9742,"nodeType":"Return","src":"1112:27:28"}]},"documentation":{"id":9726,"nodeType":"StructuredDocumentation","src":"967:66:28","text":" @dev Returns the largest of two signed numbers."},"id":9744,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"1047:3:28","nodeType":"FunctionDefinition","parameters":{"id":9731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9728,"mutability":"mutable","name":"a","nameLocation":"1058:1:28","nodeType":"VariableDeclaration","scope":9744,"src":"1051:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9727,"name":"int256","nodeType":"ElementaryTypeName","src":"1051:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9730,"mutability":"mutable","name":"b","nameLocation":"1068:1:28","nodeType":"VariableDeclaration","scope":9744,"src":"1061:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9729,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1050:20:28"},"returnParameters":{"id":9734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9733,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9744,"src":"1094:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9732,"name":"int256","nodeType":"ElementaryTypeName","src":"1094:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1093:8:28"},"scope":9834,"src":"1038:108:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9762,"nodeType":"Block","src":"1288:44:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9755,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9747,"src":"1313:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9756,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9749,"src":"1317:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1313:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9758,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9747,"src":"1320:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":9759,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9749,"src":"1323:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9754,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9725,"src":"1305:7:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":9760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1305:20:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9753,"id":9761,"nodeType":"Return","src":"1298:27:28"}]},"documentation":{"id":9745,"nodeType":"StructuredDocumentation","src":"1152:67:28","text":" @dev Returns the smallest of two signed numbers."},"id":9763,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"1233:3:28","nodeType":"FunctionDefinition","parameters":{"id":9750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9747,"mutability":"mutable","name":"a","nameLocation":"1244:1:28","nodeType":"VariableDeclaration","scope":9763,"src":"1237:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9746,"name":"int256","nodeType":"ElementaryTypeName","src":"1237:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9749,"mutability":"mutable","name":"b","nameLocation":"1254:1:28","nodeType":"VariableDeclaration","scope":9763,"src":"1247:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9748,"name":"int256","nodeType":"ElementaryTypeName","src":"1247:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1236:20:28"},"returnParameters":{"id":9753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9763,"src":"1280:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9751,"name":"int256","nodeType":"ElementaryTypeName","src":"1280:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1279:8:28"},"scope":9834,"src":"1224:108:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9806,"nodeType":"Block","src":"1537:162:28","statements":[{"assignments":[9774],"declarations":[{"constant":false,"id":9774,"mutability":"mutable","name":"x","nameLocation":"1606:1:28","nodeType":"VariableDeclaration","scope":9806,"src":"1599:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9773,"name":"int256","nodeType":"ElementaryTypeName","src":"1599:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9787,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9766,"src":"1611:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":9776,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"1615:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1611:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1610:7:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9779,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9766,"src":"1622:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9780,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"1626:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1622:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9782,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1621:7:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":9783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1621:12:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9785,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1620:14:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1610:24:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1599:35:28"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9788,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9774,"src":"1651:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9793,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9774,"src":"1671:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1663:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9791,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:28","typeDescriptions":{}}},"id":9794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1663:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":9795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:3:28","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1663:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1656:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9789,"name":"int256","nodeType":"ElementaryTypeName","src":"1656:6:28","typeDescriptions":{}}},"id":9797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9798,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9766,"src":"1685:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9799,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"1689:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1685:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9801,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1684:7:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1656:35:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9803,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1655:37:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1651:41:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9772,"id":9805,"nodeType":"Return","src":"1644:48:28"}]},"documentation":{"id":9764,"nodeType":"StructuredDocumentation","src":"1338:126:28","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":9807,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"1478:7:28","nodeType":"FunctionDefinition","parameters":{"id":9769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9766,"mutability":"mutable","name":"a","nameLocation":"1493:1:28","nodeType":"VariableDeclaration","scope":9807,"src":"1486:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9765,"name":"int256","nodeType":"ElementaryTypeName","src":"1486:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":9768,"mutability":"mutable","name":"b","nameLocation":"1503:1:28","nodeType":"VariableDeclaration","scope":9807,"src":"1496:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9767,"name":"int256","nodeType":"ElementaryTypeName","src":"1496:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1485:20:28"},"returnParameters":{"id":9772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9807,"src":"1529:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9770,"name":"int256","nodeType":"ElementaryTypeName","src":"1529:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1528:8:28"},"scope":9834,"src":"1469:230:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9832,"nodeType":"Block","src":"1843:767:28","statements":[{"id":9831,"nodeType":"UncheckedBlock","src":"1853:751:28","statements":[{"assignments":[9816],"declarations":[{"constant":false,"id":9816,"mutability":"mutable","name":"mask","nameLocation":"2424:4:28","nodeType":"VariableDeclaration","scope":9831,"src":"2417:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9815,"name":"int256","nodeType":"ElementaryTypeName","src":"2417:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9820,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9817,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"2431:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":9818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2436:3:28","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"2431:8:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2417:22:28"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9823,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"2576:1:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9824,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"2580:4:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2576:8:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2575:10:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9827,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"2588:4:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2575:17:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2567:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9821,"name":"uint256","nodeType":"ElementaryTypeName","src":"2567:7:28","typeDescriptions":{}}},"id":9829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2567:26:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9814,"id":9830,"nodeType":"Return","src":"2560:33:28"}]}]},"documentation":{"id":9808,"nodeType":"StructuredDocumentation","src":"1705:78:28","text":" @dev Returns the absolute unsigned value of a signed value."},"id":9833,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1797:3:28","nodeType":"FunctionDefinition","parameters":{"id":9811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9810,"mutability":"mutable","name":"n","nameLocation":"1808:1:28","nodeType":"VariableDeclaration","scope":9833,"src":"1801:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9809,"name":"int256","nodeType":"ElementaryTypeName","src":"1801:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1800:10:28"},"returnParameters":{"id":9814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9813,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9833,"src":"1834:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9812,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1833:9:28"},"scope":9834,"src":"1788:822:28","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9835,"src":"258:2354:28","usedErrors":[],"usedEvents":[]}],"src":"109:2504:28"},"id":28},"contracts/TricksforBoosterNFT.sol":{"ast":{"absolutePath":"contracts/TricksforBoosterNFT.sol","exportedSymbols":{"AccessControl":[295],"AccessControlDefaultAdminRules":[1331],"Context":[4325],"ERC165":[6256],"ERC2981":[3494],"ERC721":[2569],"ERC721Enumerable":[3090],"ERC721Utils":[3227],"IAccessControl":[378],"IAccessControlDefaultAdminRules":[1430],"IERC165":[6268],"IERC2981":[1450],"IERC5313":[1460],"IERC721":[2686],"IERC721Enumerable":[3122],"IERC721Errors":[1550],"IERC721Metadata":[3150],"Math":[7925],"Pausable":[4485],"SafeCast":[9690],"Strings":[6232],"TricksforBoosterNFT":[10166]},"id":10167,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9836,"literals":["solidity","^","0.8",".26"],"nodeType":"PragmaDirective","src":"32:24:29"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"@openzeppelin/contracts/token/ERC721/ERC721.sol","id":9837,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10167,"sourceUnit":2570,"src":"58:57:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol","id":9838,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10167,"sourceUnit":3091,"src":"116:78:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/common/ERC2981.sol","file":"@openzeppelin/contracts/token/common/ERC2981.sol","id":9839,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10167,"sourceUnit":3495,"src":"195:58:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol","file":"@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol","id":9840,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10167,"sourceUnit":1332,"src":"254:86:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Pausable.sol","file":"@openzeppelin/contracts/utils/Pausable.sol","id":9841,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10167,"sourceUnit":4486,"src":"341:52:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9843,"name":"ERC721","nameLocations":["804:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"804:6:29"},"id":9844,"nodeType":"InheritanceSpecifier","src":"804:6:29"},{"baseName":{"id":9845,"name":"ERC721Enumerable","nameLocations":["816:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":3090,"src":"816:16:29"},"id":9846,"nodeType":"InheritanceSpecifier","src":"816:16:29"},{"baseName":{"id":9847,"name":"ERC2981","nameLocations":["838:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":3494,"src":"838:7:29"},"id":9848,"nodeType":"InheritanceSpecifier","src":"838:7:29"},{"baseName":{"id":9849,"name":"AccessControlDefaultAdminRules","nameLocations":["851:30:29"],"nodeType":"IdentifierPath","referencedDeclaration":1331,"src":"851:30:29"},"id":9850,"nodeType":"InheritanceSpecifier","src":"851:30:29"},{"baseName":{"id":9851,"name":"Pausable","nameLocations":["887:8:29"],"nodeType":"IdentifierPath","referencedDeclaration":4485,"src":"887:8:29"},"id":9852,"nodeType":"InheritanceSpecifier","src":"887:8:29"}],"canonicalName":"TricksforBoosterNFT","contractDependencies":[],"contractKind":"contract","documentation":{"id":9842,"nodeType":"StructuredDocumentation","src":"395:373:29","text":"@title TricksforBoosterNFT\n @notice ERC-721 Enumerable NFT collection for Tricksfor Booster items.\n OpenSea-compatible: supports tokenURI, contractURI, and ERC-2981 royalties.\n Minting is role-gated (MINTER_ROLE) and can be paused by the default admin.\n @dev Does not include staking logic — staking is handled by TricksforBoosterStaking."},"fullyImplemented":true,"id":10166,"linearizedBaseContracts":[10166,4485,1331,295,3494,3090,3122,2569,1550,3150,2686,6256,1450,6268,1460,1430,378,4325],"name":"TricksforBoosterNFT","nameLocation":"777:19:29","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":9853,"nodeType":"StructuredDocumentation","src":"1078:61:29","text":"@notice Role that authorizes an account to call safeMint."},"functionSelector":"d5391393","id":9858,"mutability":"constant","name":"MINTER_ROLE","nameLocation":"1168:11:29","nodeType":"VariableDeclaration","scope":10166,"src":"1144:62:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9854,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1144:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4d494e5445525f524f4c45","id":9856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1192:13:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","typeString":"literal_string \"MINTER_ROLE\""},"value":"MINTER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","typeString":"literal_string \"MINTER_ROLE\""}],"id":9855,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"1182:9:29","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1182:24:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"documentation":{"id":9859,"nodeType":"StructuredDocumentation","src":"1390:71:29","text":"@notice Zero address supplied where a non-zero address is required."},"errorSelector":"d92e233d","id":9861,"name":"ZeroAddress","nameLocation":"1472:11:29","nodeType":"ErrorDefinition","parameters":{"id":9860,"nodeType":"ParameterList","parameters":[],"src":"1483:2:29"},"src":"1466:20:29"},{"anonymous":false,"eventSelector":"309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1","id":9867,"name":"BaseURIUpdated","nameLocation":"1675:14:29","nodeType":"EventDefinition","parameters":{"id":9866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9863,"indexed":false,"mutability":"mutable","name":"previousURI","nameLocation":"1697:11:29","nodeType":"VariableDeclaration","scope":9867,"src":"1690:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9862,"name":"string","nodeType":"ElementaryTypeName","src":"1690:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9865,"indexed":false,"mutability":"mutable","name":"newURI","nameLocation":"1717:6:29","nodeType":"VariableDeclaration","scope":9867,"src":"1710:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9864,"name":"string","nodeType":"ElementaryTypeName","src":"1710:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1689:35:29"},"src":"1669:56:29"},{"anonymous":false,"eventSelector":"c9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16","id":9873,"name":"ContractURIUpdated","nameLocation":"1736:18:29","nodeType":"EventDefinition","parameters":{"id":9872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9869,"indexed":false,"mutability":"mutable","name":"previousURI","nameLocation":"1762:11:29","nodeType":"VariableDeclaration","scope":9873,"src":"1755:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9868,"name":"string","nodeType":"ElementaryTypeName","src":"1755:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9871,"indexed":false,"mutability":"mutable","name":"newURI","nameLocation":"1782:6:29","nodeType":"VariableDeclaration","scope":9873,"src":"1775:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9870,"name":"string","nodeType":"ElementaryTypeName","src":"1775:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1754:35:29"},"src":"1730:60:29"},{"anonymous":false,"eventSelector":"e12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf4","id":9879,"name":"DefaultRoyaltyUpdated","nameLocation":"1801:21:29","nodeType":"EventDefinition","parameters":{"id":9878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9875,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"1839:8:29","nodeType":"VariableDeclaration","scope":9879,"src":"1823:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9874,"name":"address","nodeType":"ElementaryTypeName","src":"1823:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9877,"indexed":false,"mutability":"mutable","name":"feeBasisPoints","nameLocation":"1856:14:29","nodeType":"VariableDeclaration","scope":9879,"src":"1849:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":9876,"name":"uint96","nodeType":"ElementaryTypeName","src":"1849:6:29","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"1822:49:29"},"src":"1795:77:29"},{"constant":false,"id":9881,"mutability":"mutable","name":"_baseTokenURI","nameLocation":"2069:13:29","nodeType":"VariableDeclaration","scope":10166,"src":"2054:28:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":9880,"name":"string","nodeType":"ElementaryTypeName","src":"2054:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":9883,"mutability":"mutable","name":"_contractMetadataURI","nameLocation":"2103:20:29","nodeType":"VariableDeclaration","scope":10166,"src":"2088:35:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":9882,"name":"string","nodeType":"ElementaryTypeName","src":"2088:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":9956,"nodeType":"Block","src":"3405:366:29","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9913,"name":"royaltyReceiver_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9894,"src":"3419:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3447:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3439:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9914,"name":"address","nodeType":"ElementaryTypeName","src":"3439:7:29","typeDescriptions":{}}},"id":9917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3439:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3419:30:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9919,"name":"initialAdmin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9898,"src":"3453:13:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3478:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3470:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9920,"name":"address","nodeType":"ElementaryTypeName","src":"3470:7:29","typeDescriptions":{}}},"id":9923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3470:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3453:27:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3419:61:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9926,"name":"initialMinter_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9900,"src":"3484:14:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3510:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3502:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9927,"name":"address","nodeType":"ElementaryTypeName","src":"3502:7:29","typeDescriptions":{}}},"id":9930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3502:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3484:28:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3419:93:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9937,"nodeType":"IfStatement","src":"3415:144:29","trueBody":{"id":9936,"nodeType":"Block","src":"3514:45:29","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9933,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9861,"src":"3535:11:29","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3535:13:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9935,"nodeType":"RevertStatement","src":"3528:20:29"}]}},{"expression":{"id":9940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9938,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9881,"src":"3568:13:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9939,"name":"baseURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9890,"src":"3584:8:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3568:24:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":9941,"nodeType":"ExpressionStatement","src":"3568:24:29"},{"expression":{"id":9944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9942,"name":"_contractMetadataURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"3602:20:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9943,"name":"contractMetadataURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9892,"src":"3625:20:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3602:43:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":9945,"nodeType":"ExpressionStatement","src":"3602:43:29"},{"expression":{"arguments":[{"id":9947,"name":"royaltyReceiver_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9894,"src":"3674:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9948,"name":"royaltyFeeBasisPoints_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9896,"src":"3692:22:29","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":9946,"name":"_setDefaultRoyalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3421,"src":"3655:18:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,uint96)"}},"id":9949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3655:60:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9950,"nodeType":"ExpressionStatement","src":"3655:60:29"},{"expression":{"arguments":[{"id":9952,"name":"MINTER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9858,"src":"3736:11:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9953,"name":"initialMinter_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9900,"src":"3749:14:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9951,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[865],"referencedDeclaration":865,"src":"3725:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":9954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3725:39:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9955,"nodeType":"ExpressionStatement","src":"3725:39:29"}]},"documentation":{"id":9884,"nodeType":"StructuredDocumentation","src":"2312:674:29","text":"@param name_ ERC-721 collection name\n @param symbol_ ERC-721 collection symbol\n @param baseURI_ Base URI for token metadata (appended with tokenId)\n @param contractMetadataURI_ URI for OpenSea collection-level metadata\n @param royaltyReceiver_ Address that receives royalty payments\n @param royaltyFeeBasisPoints_ Royalty fee in basis points (10 000 = 100%)\n @param initialAdmin_ Initial default administrator\n @param initialMinter_ Initial account authorized to mint\n @param defaultAdminDelay_ Delay in seconds for default-admin transfers"},"id":9957,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9905,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9886,"src":"3323:5:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9906,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9888,"src":"3330:7:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":9907,"kind":"baseConstructorSpecifier","modifierName":{"id":9904,"name":"ERC721","nameLocations":["3316:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"3316:6:29"},"nodeType":"ModifierInvocation","src":"3316:22:29"},{"arguments":[{"id":9909,"name":"defaultAdminDelay_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9902,"src":"3370:18:29","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":9910,"name":"initialAdmin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9898,"src":"3390:13:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":9911,"kind":"baseConstructorSpecifier","modifierName":{"id":9908,"name":"AccessControlDefaultAdminRules","nameLocations":["3339:30:29"],"nodeType":"IdentifierPath","referencedDeclaration":1331,"src":"3339:30:29"},"nodeType":"ModifierInvocation","src":"3339:65:29"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9886,"mutability":"mutable","name":"name_","nameLocation":"3026:5:29","nodeType":"VariableDeclaration","scope":9957,"src":"3012:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9885,"name":"string","nodeType":"ElementaryTypeName","src":"3012:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9888,"mutability":"mutable","name":"symbol_","nameLocation":"3055:7:29","nodeType":"VariableDeclaration","scope":9957,"src":"3041:21:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9887,"name":"string","nodeType":"ElementaryTypeName","src":"3041:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9890,"mutability":"mutable","name":"baseURI_","nameLocation":"3086:8:29","nodeType":"VariableDeclaration","scope":9957,"src":"3072:22:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9889,"name":"string","nodeType":"ElementaryTypeName","src":"3072:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9892,"mutability":"mutable","name":"contractMetadataURI_","nameLocation":"3118:20:29","nodeType":"VariableDeclaration","scope":9957,"src":"3104:34:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9891,"name":"string","nodeType":"ElementaryTypeName","src":"3104:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9894,"mutability":"mutable","name":"royaltyReceiver_","nameLocation":"3156:16:29","nodeType":"VariableDeclaration","scope":9957,"src":"3148:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9893,"name":"address","nodeType":"ElementaryTypeName","src":"3148:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9896,"mutability":"mutable","name":"royaltyFeeBasisPoints_","nameLocation":"3189:22:29","nodeType":"VariableDeclaration","scope":9957,"src":"3182:29:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":9895,"name":"uint96","nodeType":"ElementaryTypeName","src":"3182:6:29","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":9898,"mutability":"mutable","name":"initialAdmin_","nameLocation":"3229:13:29","nodeType":"VariableDeclaration","scope":9957,"src":"3221:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9897,"name":"address","nodeType":"ElementaryTypeName","src":"3221:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9900,"mutability":"mutable","name":"initialMinter_","nameLocation":"3260:14:29","nodeType":"VariableDeclaration","scope":9957,"src":"3252:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9899,"name":"address","nodeType":"ElementaryTypeName","src":"3252:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9902,"mutability":"mutable","name":"defaultAdminDelay_","nameLocation":"3291:18:29","nodeType":"VariableDeclaration","scope":9957,"src":"3284:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":9901,"name":"uint48","nodeType":"ElementaryTypeName","src":"3284:6:29","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3002:313:29"},"returnParameters":{"id":9912,"nodeType":"ParameterList","parameters":[],"src":"3405:0:29"},"scope":10166,"src":"2991:780:29","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9975,"nodeType":"Block","src":"4320:39:29","statements":[{"expression":{"arguments":[{"id":9971,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9960,"src":"4340:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9972,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9962,"src":"4344:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9970,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2232,2262],"referencedDeclaration":2232,"src":"4330:9:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4330:22:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9974,"nodeType":"ExpressionStatement","src":"4330:22:29"}]},"documentation":{"id":9958,"nodeType":"StructuredDocumentation","src":"3955:268:29","text":"@notice Mints a token with the given ID to the specified address.\n The caller must hold MINTER_ROLE. Reverts when paused.\n @param to Recipient address for the minted token.\n @param tokenId Token ID to mint. Must not already exist."},"functionSelector":"a1448194","id":9976,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9965,"name":"MINTER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9858,"src":"4293:11:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9966,"kind":"modifierInvocation","modifierName":{"id":9964,"name":"onlyRole","nameLocations":["4284:8:29"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4284:8:29"},"nodeType":"ModifierInvocation","src":"4284:21:29"},{"id":9968,"kind":"modifierInvocation","modifierName":{"id":9967,"name":"whenNotPaused","nameLocations":["4306:13:29"],"nodeType":"IdentifierPath","referencedDeclaration":4410,"src":"4306:13:29"},"nodeType":"ModifierInvocation","src":"4306:13:29"}],"name":"safeMint","nameLocation":"4237:8:29","nodeType":"FunctionDefinition","parameters":{"id":9963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9960,"mutability":"mutable","name":"to","nameLocation":"4254:2:29","nodeType":"VariableDeclaration","scope":9976,"src":"4246:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9959,"name":"address","nodeType":"ElementaryTypeName","src":"4246:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9962,"mutability":"mutable","name":"tokenId","nameLocation":"4266:7:29","nodeType":"VariableDeclaration","scope":9976,"src":"4258:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9961,"name":"uint256","nodeType":"ElementaryTypeName","src":"4258:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4245:29:29"},"returnParameters":{"id":9969,"nodeType":"ParameterList","parameters":[],"src":"4320:0:29"},"scope":10166,"src":"4228:131:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9998,"nodeType":"Block","src":"4764:144:29","statements":[{"assignments":[9986],"declarations":[{"constant":false,"id":9986,"mutability":"mutable","name":"previousURI","nameLocation":"4788:11:29","nodeType":"VariableDeclaration","scope":9998,"src":"4774:25:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9985,"name":"string","nodeType":"ElementaryTypeName","src":"4774:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":9988,"initialValue":{"id":9987,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9881,"src":"4802:13:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4774:41:29"},{"expression":{"id":9991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9989,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9881,"src":"4825:13:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9990,"name":"baseURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9979,"src":"4841:8:29","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"src":"4825:24:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":9992,"nodeType":"ExpressionStatement","src":"4825:24:29"},{"eventCall":{"arguments":[{"id":9994,"name":"previousURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9986,"src":"4879:11:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9995,"name":"baseURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9979,"src":"4892:8:29","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":9993,"name":"BaseURIUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9867,"src":"4864:14:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":9996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4864:37:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9997,"nodeType":"EmitStatement","src":"4859:42:29"}]},"documentation":{"id":9977,"nodeType":"StructuredDocumentation","src":"4555:120:29","text":"@notice Updates the base URI used to construct per-token metadata URIs.\n @param baseURI_ New base URI string."},"functionSelector":"55f804b3","id":9999,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9982,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"4744:18:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9983,"kind":"modifierInvocation","modifierName":{"id":9981,"name":"onlyRole","nameLocations":["4735:8:29"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4735:8:29"},"nodeType":"ModifierInvocation","src":"4735:28:29"}],"name":"setBaseURI","nameLocation":"4689:10:29","nodeType":"FunctionDefinition","parameters":{"id":9980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9979,"mutability":"mutable","name":"baseURI_","nameLocation":"4716:8:29","nodeType":"VariableDeclaration","scope":9999,"src":"4700:24:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":9978,"name":"string","nodeType":"ElementaryTypeName","src":"4700:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4699:26:29"},"returnParameters":{"id":9984,"nodeType":"ParameterList","parameters":[],"src":"4764:0:29"},"scope":10166,"src":"4680:228:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10021,"nodeType":"Block","src":"5170:186:29","statements":[{"assignments":[10009],"declarations":[{"constant":false,"id":10009,"mutability":"mutable","name":"previousURI","nameLocation":"5194:11:29","nodeType":"VariableDeclaration","scope":10021,"src":"5180:25:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10008,"name":"string","nodeType":"ElementaryTypeName","src":"5180:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":10011,"initialValue":{"id":10010,"name":"_contractMetadataURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"5208:20:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5180:48:29"},{"expression":{"id":10014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10012,"name":"_contractMetadataURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"5238:20:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10013,"name":"contractMetadataURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10002,"src":"5261:20:29","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"src":"5238:43:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":10015,"nodeType":"ExpressionStatement","src":"5238:43:29"},{"eventCall":{"arguments":[{"id":10017,"name":"previousURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"5315:11:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":10018,"name":"contractMetadataURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10002,"src":"5328:20:29","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":10016,"name":"ContractURIUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9873,"src":"5296:18:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":10019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5296:53:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10020,"nodeType":"EmitStatement","src":"5291:58:29"}]},"documentation":{"id":10000,"nodeType":"StructuredDocumentation","src":"4914:151:29","text":"@notice Updates the collection-level metadata URI (OpenSea contractURI extension).\n @param contractMetadataURI_ New collection metadata URI."},"functionSelector":"938e3d7b","id":10022,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":10005,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5150:18:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":10006,"kind":"modifierInvocation","modifierName":{"id":10004,"name":"onlyRole","nameLocations":["5141:8:29"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"5141:8:29"},"nodeType":"ModifierInvocation","src":"5141:28:29"}],"name":"setContractURI","nameLocation":"5079:14:29","nodeType":"FunctionDefinition","parameters":{"id":10003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10002,"mutability":"mutable","name":"contractMetadataURI_","nameLocation":"5110:20:29","nodeType":"VariableDeclaration","scope":10022,"src":"5094:36:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":10001,"name":"string","nodeType":"ElementaryTypeName","src":"5094:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5093:38:29"},"returnParameters":{"id":10007,"nodeType":"ParameterList","parameters":[],"src":"5170:0:29"},"scope":10166,"src":"5070:286:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10053,"nodeType":"Block","src":"5687:181:29","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10033,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"5701:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5721:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5713:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10034,"name":"address","nodeType":"ElementaryTypeName","src":"5713:7:29","typeDescriptions":{}}},"id":10037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5713:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5701:22:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10042,"nodeType":"IfStatement","src":"5697:48:29","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10039,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9861,"src":"5732:11:29","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5732:13:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10041,"nodeType":"RevertStatement","src":"5725:20:29"}},{"expression":{"arguments":[{"id":10044,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"5774:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10045,"name":"feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10027,"src":"5784:14:29","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":10043,"name":"_setDefaultRoyalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3421,"src":"5755:18:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,uint96)"}},"id":10046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5755:44:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10047,"nodeType":"ExpressionStatement","src":"5755:44:29"},{"eventCall":{"arguments":[{"id":10049,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"5836:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10050,"name":"feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10027,"src":"5846:14:29","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":10048,"name":"DefaultRoyaltyUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9879,"src":"5814:21:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,uint96)"}},"id":10051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5814:47:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10052,"nodeType":"EmitStatement","src":"5809:52:29"}]},"documentation":{"id":10023,"nodeType":"StructuredDocumentation","src":"5362:217:29","text":"@notice Updates the default royalty receiver and fee for all tokens.\n @param receiver Address that receives royalty payments.\n @param feeBasisPoints Royalty fee in basis points (10 000 = 100%)."},"functionSelector":"02fa7c47","id":10054,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":10030,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5667:18:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":10031,"kind":"modifierInvocation","modifierName":{"id":10029,"name":"onlyRole","nameLocations":["5658:8:29"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"5658:8:29"},"nodeType":"ModifierInvocation","src":"5658:28:29"}],"name":"setRoyaltyInfo","nameLocation":"5593:14:29","nodeType":"FunctionDefinition","parameters":{"id":10028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10025,"mutability":"mutable","name":"receiver","nameLocation":"5616:8:29","nodeType":"VariableDeclaration","scope":10054,"src":"5608:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10024,"name":"address","nodeType":"ElementaryTypeName","src":"5608:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10027,"mutability":"mutable","name":"feeBasisPoints","nameLocation":"5633:14:29","nodeType":"VariableDeclaration","scope":10054,"src":"5626:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10026,"name":"uint96","nodeType":"ElementaryTypeName","src":"5626:6:29","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"5607:41:29"},"returnParameters":{"id":10032,"nodeType":"ParameterList","parameters":[],"src":"5687:0:29"},"scope":10166,"src":"5584:284:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10064,"nodeType":"Block","src":"5988:25:29","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10061,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4468,"src":"5998:6:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:8:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10063,"nodeType":"ExpressionStatement","src":"5998:8:29"}]},"documentation":{"id":10055,"nodeType":"StructuredDocumentation","src":"5874:54:29","text":"@notice Pauses minting. Does not affect transfers."},"functionSelector":"8456cb59","id":10065,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":10058,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5968:18:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":10059,"kind":"modifierInvocation","modifierName":{"id":10057,"name":"onlyRole","nameLocations":["5959:8:29"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"5959:8:29"},"nodeType":"ModifierInvocation","src":"5959:28:29"}],"name":"pause","nameLocation":"5942:5:29","nodeType":"FunctionDefinition","parameters":{"id":10056,"nodeType":"ParameterList","parameters":[],"src":"5947:2:29"},"returnParameters":{"id":10060,"nodeType":"ParameterList","parameters":[],"src":"5988:0:29"},"scope":10166,"src":"5933:80:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10075,"nodeType":"Block","src":"6110:27:29","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10072,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4484,"src":"6120:8:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6120:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10074,"nodeType":"ExpressionStatement","src":"6120:10:29"}]},"documentation":{"id":10066,"nodeType":"StructuredDocumentation","src":"6019:29:29","text":"@notice Unpauses minting."},"functionSelector":"3f4ba83a","id":10076,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":10069,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"6090:18:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":10070,"kind":"modifierInvocation","modifierName":{"id":10068,"name":"onlyRole","nameLocations":["6081:8:29"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"6081:8:29"},"nodeType":"ModifierInvocation","src":"6081:28:29"}],"name":"unpause","nameLocation":"6062:7:29","nodeType":"FunctionDefinition","parameters":{"id":10067,"nodeType":"ParameterList","parameters":[],"src":"6069:2:29"},"returnParameters":{"id":10071,"nodeType":"ParameterList","parameters":[],"src":"6110:0:29"},"scope":10166,"src":"6053:84:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10084,"nodeType":"Block","src":"6462:44:29","statements":[{"expression":{"id":10082,"name":"_contractMetadataURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"6479:20:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10081,"id":10083,"nodeType":"Return","src":"6472:27:29"}]},"documentation":{"id":10077,"nodeType":"StructuredDocumentation","src":"6322:74:29","text":"@notice Returns the collection-level metadata URI (OpenSea extension)."},"functionSelector":"e8a3d485","id":10085,"implemented":true,"kind":"function","modifiers":[],"name":"contractURI","nameLocation":"6410:11:29","nodeType":"FunctionDefinition","parameters":{"id":10078,"nodeType":"ParameterList","parameters":[],"src":"6421:2:29"},"returnParameters":{"id":10081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10080,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10085,"src":"6447:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10079,"name":"string","nodeType":"ElementaryTypeName","src":"6447:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6446:15:29"},"scope":10166,"src":"6401:105:29","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10093,"nodeType":"Block","src":"6645:37:29","statements":[{"expression":{"id":10091,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9881,"src":"6662:13:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10090,"id":10092,"nodeType":"Return","src":"6655:20:29"}]},"documentation":{"id":10086,"nodeType":"StructuredDocumentation","src":"6512:71:29","text":"@notice Returns the base URI used to construct token metadata URLs."},"functionSelector":"6c0360eb","id":10094,"implemented":true,"kind":"function","modifiers":[],"name":"baseURI","nameLocation":"6597:7:29","nodeType":"FunctionDefinition","parameters":{"id":10087,"nodeType":"ParameterList","parameters":[],"src":"6604:2:29"},"returnParameters":{"id":10090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10094,"src":"6630:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10088,"name":"string","nodeType":"ElementaryTypeName","src":"6630:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6629:15:29"},"scope":10166,"src":"6588:94:29","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1802],"body":{"id":10103,"nodeType":"Block","src":"7009:37:29","statements":[{"expression":{"id":10101,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9881,"src":"7026:13:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10100,"id":10102,"nodeType":"Return","src":"7019:20:29"}]},"documentation":{"id":10095,"nodeType":"StructuredDocumentation","src":"6877:60:29","text":"@dev Returns the base URI used to build tokenURI values."},"id":10104,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"6951:8:29","nodeType":"FunctionDefinition","overrides":{"id":10097,"nodeType":"OverrideSpecifier","overrides":[],"src":"6976:8:29"},"parameters":{"id":10096,"nodeType":"ParameterList","parameters":[],"src":"6959:2:29"},"returnParameters":{"id":10100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10104,"src":"6994:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10098,"name":"string","nodeType":"ElementaryTypeName","src":"6994:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6993:15:29"},"scope":10166,"src":"6942:104:29","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[2167,2903],"body":{"id":10126,"nodeType":"Block","src":"7297:56:29","statements":[{"expression":{"arguments":[{"id":10121,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10107,"src":"7328:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10122,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10109,"src":"7332:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10123,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10111,"src":"7341:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10119,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"7314:5:29","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TricksforBoosterNFT_$10166_$","typeString":"type(contract super TricksforBoosterNFT)"}},"id":10120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7320:7:29","memberName":"_update","nodeType":"MemberAccess","referencedDeclaration":2903,"src":"7314:13:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":10124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7314:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10118,"id":10125,"nodeType":"Return","src":"7307:39:29"}]},"documentation":{"id":10105,"nodeType":"StructuredDocumentation","src":"7052:90:29","text":"@dev Keeps ERC-721 ownership and enumerable indexes synchronized on mint and transfer."},"id":10127,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"7156:7:29","nodeType":"FunctionDefinition","overrides":{"id":10115,"nodeType":"OverrideSpecifier","overrides":[{"id":10113,"name":"ERC721","nameLocations":["7241:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"7241:6:29"},{"id":10114,"name":"ERC721Enumerable","nameLocations":["7249:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":3090,"src":"7249:16:29"}],"src":"7232:34:29"},"parameters":{"id":10112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10107,"mutability":"mutable","name":"to","nameLocation":"7172:2:29","nodeType":"VariableDeclaration","scope":10127,"src":"7164:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10106,"name":"address","nodeType":"ElementaryTypeName","src":"7164:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10109,"mutability":"mutable","name":"tokenId","nameLocation":"7184:7:29","nodeType":"VariableDeclaration","scope":10127,"src":"7176:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10108,"name":"uint256","nodeType":"ElementaryTypeName","src":"7176:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10111,"mutability":"mutable","name":"auth","nameLocation":"7201:4:29","nodeType":"VariableDeclaration","scope":10127,"src":"7193:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10110,"name":"address","nodeType":"ElementaryTypeName","src":"7193:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7163:43:29"},"returnParameters":{"id":10118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10117,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10127,"src":"7284:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10116,"name":"address","nodeType":"ElementaryTypeName","src":"7284:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7283:9:29"},"scope":10166,"src":"7147:206:29","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2077,3089],"body":{"id":10145,"nodeType":"Block","src":"7559:55:29","statements":[{"expression":{"arguments":[{"id":10141,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10130,"src":"7592:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10142,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"7601:5:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":10138,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"7569:5:29","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TricksforBoosterNFT_$10166_$","typeString":"type(contract super TricksforBoosterNFT)"}},"id":10140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7575:16:29","memberName":"_increaseBalance","nodeType":"MemberAccess","referencedDeclaration":3089,"src":"7569:22:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":10143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7569:38:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10144,"nodeType":"ExpressionStatement","src":"7569:38:29"}]},"documentation":{"id":10128,"nodeType":"StructuredDocumentation","src":"7359:73:29","text":"@dev Resolves the balance hook shared by ERC721 and ERC721Enumerable."},"id":10146,"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"7446:16:29","nodeType":"FunctionDefinition","overrides":{"id":10136,"nodeType":"OverrideSpecifier","overrides":[{"id":10134,"name":"ERC721","nameLocations":["7529:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"7529:6:29"},{"id":10135,"name":"ERC721Enumerable","nameLocations":["7537:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":3090,"src":"7537:16:29"}],"src":"7520:34:29"},"parameters":{"id":10133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10130,"mutability":"mutable","name":"account","nameLocation":"7471:7:29","nodeType":"VariableDeclaration","scope":10146,"src":"7463:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10129,"name":"address","nodeType":"ElementaryTypeName","src":"7463:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10132,"mutability":"mutable","name":"value","nameLocation":"7488:5:29","nodeType":"VariableDeclaration","scope":10146,"src":"7480:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10131,"name":"uint128","nodeType":"ElementaryTypeName","src":"7480:7:29","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"7462:32:29"},"returnParameters":{"id":10137,"nodeType":"ParameterList","parameters":[],"src":"7559:0:29"},"scope":10166,"src":"7437:177:29","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[701,1698,2768,3304],"body":{"id":10164,"nodeType":"Block","src":"8021:60:29","statements":[{"expression":{"arguments":[{"id":10161,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10149,"src":"8062:11:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":10159,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"8038:5:29","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TricksforBoosterNFT_$10166_$","typeString":"type(contract super TricksforBoosterNFT)"}},"id":10160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8044:17:29","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":701,"src":"8038:23:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":10162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8038:36:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10158,"id":10163,"nodeType":"Return","src":"8031:43:29"}]},"documentation":{"id":10147,"nodeType":"StructuredDocumentation","src":"7808:22:29","text":"@inheritdoc ERC165"},"functionSelector":"01ffc9a7","id":10165,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"7844:17:29","nodeType":"FunctionDefinition","overrides":{"id":10155,"nodeType":"OverrideSpecifier","overrides":[{"id":10151,"name":"ERC721","nameLocations":["7927:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"7927:6:29"},{"id":10152,"name":"ERC721Enumerable","nameLocations":["7935:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":3090,"src":"7935:16:29"},{"id":10153,"name":"ERC2981","nameLocations":["7953:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":3494,"src":"7953:7:29"},{"id":10154,"name":"AccessControlDefaultAdminRules","nameLocations":["7962:30:29"],"nodeType":"IdentifierPath","referencedDeclaration":1331,"src":"7962:30:29"}],"src":"7918:75:29"},"parameters":{"id":10150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10149,"mutability":"mutable","name":"interfaceId","nameLocation":"7869:11:29","nodeType":"VariableDeclaration","scope":10165,"src":"7862:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10148,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7862:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7861:20:29"},"returnParameters":{"id":10158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10165,"src":"8011:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10156,"name":"bool","nodeType":"ElementaryTypeName","src":"8011:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8010:6:29"},"scope":10166,"src":"7835:246:29","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":10167,"src":"768:7315:29","usedErrors":[305,308,1343,1346,1351,1508,1513,1522,1527,1532,1539,1544,1549,2741,2744,3259,3264,3273,3280,4399,4402,7935,9861],"usedEvents":[317,326,335,1358,1361,1368,1371,2585,2594,2603,4391,4396,9867,9873,9879]}],"src":"32:8052:29"},"id":29},"contracts/TricksforBoosterStaking.sol":{"ast":{"absolutePath":"contracts/TricksforBoosterStaking.sol","exportedSymbols":{"Context":[4325],"IERC165":[6268],"IERC721":[2686],"IERC721Receiver":[2704],"Ownable":[526],"Ownable2Step":[612],"Pausable":[4485],"ReentrancyGuard":[4598],"StorageSlot":[4722],"TricksforBoosterStaking":[10836]},"id":10837,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10168,"literals":["solidity","^","0.8",".26"],"nodeType":"PragmaDirective","src":"32:24:30"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":10169,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10837,"sourceUnit":2687,"src":"58:58:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":10170,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10837,"sourceUnit":2705,"src":"117:66:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":10171,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10837,"sourceUnit":527,"src":"184:52:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable2Step.sol","file":"@openzeppelin/contracts/access/Ownable2Step.sol","id":10172,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10837,"sourceUnit":613,"src":"237:57:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","id":10173,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10837,"sourceUnit":4599,"src":"295:59:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Pausable.sol","file":"@openzeppelin/contracts/utils/Pausable.sol","id":10174,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10837,"sourceUnit":4486,"src":"355:52:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10176,"name":"Ownable2Step","nameLocations":["1498:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":612,"src":"1498:12:30"},"id":10177,"nodeType":"InheritanceSpecifier","src":"1498:12:30"},{"baseName":{"id":10178,"name":"ReentrancyGuard","nameLocations":["1512:15:30"],"nodeType":"IdentifierPath","referencedDeclaration":4598,"src":"1512:15:30"},"id":10179,"nodeType":"InheritanceSpecifier","src":"1512:15:30"},{"baseName":{"id":10180,"name":"Pausable","nameLocations":["1529:8:30"],"nodeType":"IdentifierPath","referencedDeclaration":4485,"src":"1529:8:30"},"id":10181,"nodeType":"InheritanceSpecifier","src":"1529:8:30"},{"baseName":{"id":10182,"name":"IERC721Receiver","nameLocations":["1539:15:30"],"nodeType":"IdentifierPath","referencedDeclaration":2704,"src":"1539:15:30"},"id":10183,"nodeType":"InheritanceSpecifier","src":"1539:15:30"}],"canonicalName":"TricksforBoosterStaking","contractDependencies":[],"contractKind":"contract","documentation":{"id":10175,"nodeType":"StructuredDocumentation","src":"409:1053:30","text":"@title TricksforBoosterStaking\n @notice Custodial staking contract for Tricksfor Booster NFTs.\n Players transfer their NFTs into this contract to stake them and retrieve\n them when they unstake. Staking state and timestamps are recorded on-chain\n via integration-critical events consumed by the Tricksfor backend indexer.\n Responsibilities:\n - Accepting NFT custody during staking\n - Emitting TokenStaked / TokenUnstaked events for backend log processing\n - Providing read methods (isStaked, stakedOwnerOf) consistent with event state\n Not responsible for:\n - Reward calculation or distribution\n - Booster tier or multiplier classification\n - Game logic or settlement\n @dev Pause gates new staking only. Unstaking is always available so players can\n always recover their assets. emergencyWithdraw is an explicit, named, and\n event-emitting admin path — it is not hidden."},"fullyImplemented":true,"id":10836,"linearizedBaseContracts":[10836,2704,4485,4598,612,526,4325],"name":"TricksforBoosterStaking","nameLocation":"1471:23:30","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10184,"nodeType":"StructuredDocumentation","src":"1738:67:30","text":"@notice Caller does not own the token they are trying to stake."},"errorSelector":"59dc379f","id":10186,"name":"NotTokenOwner","nameLocation":"1816:13:30","nodeType":"ErrorDefinition","parameters":{"id":10185,"nodeType":"ParameterList","parameters":[],"src":"1829:2:30"},"src":"1810:22:30"},{"documentation":{"id":10187,"nodeType":"StructuredDocumentation","src":"1838:36:30","text":"@notice Token is already staked."},"errorSelector":"16e9ad8f","id":10189,"name":"TokenAlreadyStaked","nameLocation":"1885:18:30","nodeType":"ErrorDefinition","parameters":{"id":10188,"nodeType":"ParameterList","parameters":[],"src":"1903:2:30"},"src":"1879:27:30"},{"documentation":{"id":10190,"nodeType":"StructuredDocumentation","src":"1912:42:30","text":"@notice Token is not currently staked."},"errorSelector":"2926ef0c","id":10192,"name":"TokenNotStaked","nameLocation":"1965:14:30","nodeType":"ErrorDefinition","parameters":{"id":10191,"nodeType":"ParameterList","parameters":[],"src":"1979:2:30"},"src":"1959:23:30"},{"documentation":{"id":10193,"nodeType":"StructuredDocumentation","src":"1988:60:30","text":"@notice Caller is not the original staker of this token."},"errorSelector":"32dc95cb","id":10195,"name":"NotOriginalStaker","nameLocation":"2059:17:30","nodeType":"ErrorDefinition","parameters":{"id":10194,"nodeType":"ParameterList","parameters":[],"src":"2076:2:30"},"src":"2053:26:30"},{"documentation":{"id":10196,"nodeType":"StructuredDocumentation","src":"2085:71:30","text":"@notice Zero address supplied where a non-zero address is required."},"errorSelector":"d92e233d","id":10198,"name":"ZeroAddress","nameLocation":"2167:11:30","nodeType":"ErrorDefinition","parameters":{"id":10197,"nodeType":"ParameterList","parameters":[],"src":"2178:2:30"},"src":"2161:20:30"},{"documentation":{"id":10199,"nodeType":"StructuredDocumentation","src":"2187:60:30","text":"@notice Token received from an unsupported NFT contract."},"errorSelector":"de1db395","id":10201,"name":"UnsupportedNFTContract","nameLocation":"2258:22:30","nodeType":"ErrorDefinition","parameters":{"id":10200,"nodeType":"ParameterList","parameters":[],"src":"2280:2:30"},"src":"2252:31:30"},{"documentation":{"id":10202,"nodeType":"StructuredDocumentation","src":"2289:89:30","text":"@notice Emergency withdrawals can only return a tracked token to its original staker."},"errorSelector":"c56a3905","id":10204,"name":"InvalidEmergencyRecipient","nameLocation":"2389:25:30","nodeType":"ErrorDefinition","parameters":{"id":10203,"nodeType":"ParameterList","parameters":[],"src":"2414:2:30"},"src":"2383:34:30"},{"documentation":{"id":10205,"nodeType":"StructuredDocumentation","src":"2423:76:30","text":"@notice Rescue is only available for tokens that have no staking record."},"errorSelector":"82d272e3","id":10207,"name":"TokenIsTracked","nameLocation":"2510:14:30","nodeType":"ErrorDefinition","parameters":{"id":10206,"nodeType":"ParameterList","parameters":[],"src":"2524:2:30"},"src":"2504:23:30"},{"documentation":{"id":10208,"nodeType":"StructuredDocumentation","src":"2533:77:30","text":"@notice Rescue requires the staking contract to currently hold the token."},"errorSelector":"d79a486e","id":10210,"name":"TokenNotHeld","nameLocation":"2621:12:30","nodeType":"ErrorDefinition","parameters":{"id":10209,"nodeType":"ParameterList","parameters":[],"src":"2633:2:30"},"src":"2615:21:30"},{"anonymous":false,"documentation":{"id":10211,"nodeType":"StructuredDocumentation","src":"2882:246:30","text":"@notice Emitted when a token is successfully staked.\n @param staker The wallet address that owns and staked the token.\n @param tokenId The staked NFT token ID.\n @param stakedAt Block timestamp at the moment of staking."},"eventSelector":"6173e4d2d9dd52aae0ed37afed3adcf924a490639b759ca93d32dc43366c17d2","id":10219,"name":"TokenStaked","nameLocation":"3139:11:30","nodeType":"EventDefinition","parameters":{"id":10218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10213,"indexed":true,"mutability":"mutable","name":"staker","nameLocation":"3167:6:30","nodeType":"VariableDeclaration","scope":10219,"src":"3151:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10212,"name":"address","nodeType":"ElementaryTypeName","src":"3151:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10215,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3191:7:30","nodeType":"VariableDeclaration","scope":10219,"src":"3175:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10214,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10217,"indexed":false,"mutability":"mutable","name":"stakedAt","nameLocation":"3208:8:30","nodeType":"VariableDeclaration","scope":10219,"src":"3200:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10216,"name":"uint256","nodeType":"ElementaryTypeName","src":"3200:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3150:67:30"},"src":"3133:85:30"},{"anonymous":false,"documentation":{"id":10220,"nodeType":"StructuredDocumentation","src":"3224:280:30","text":"@notice Emitted when a token is successfully unstaked.\n @param staker The wallet address that originally staked (and receives back) the token.\n @param tokenId The unstaked NFT token ID.\n @param unstakedAt Block timestamp at the moment of unstaking."},"eventSelector":"563fc70fca9d440d883299c76a721644d5aca7c45df98aeb5292c4cb823579bf","id":10228,"name":"TokenUnstaked","nameLocation":"3515:13:30","nodeType":"EventDefinition","parameters":{"id":10227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10222,"indexed":true,"mutability":"mutable","name":"staker","nameLocation":"3545:6:30","nodeType":"VariableDeclaration","scope":10228,"src":"3529:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10221,"name":"address","nodeType":"ElementaryTypeName","src":"3529:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10224,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3569:7:30","nodeType":"VariableDeclaration","scope":10228,"src":"3553:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10223,"name":"uint256","nodeType":"ElementaryTypeName","src":"3553:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10226,"indexed":false,"mutability":"mutable","name":"unstakedAt","nameLocation":"3586:10:30","nodeType":"VariableDeclaration","scope":10228,"src":"3578:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10225,"name":"uint256","nodeType":"ElementaryTypeName","src":"3578:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3528:69:30"},"src":"3509:89:30"},{"anonymous":false,"documentation":{"id":10229,"nodeType":"StructuredDocumentation","src":"3604:525:30","text":"@notice Emitted when an owner-initiated emergency withdrawal occurs.\n This is the only admin path that moves a user's staked NFT without their consent.\n It is explicitly named, event-emitting, and documented here.\n @param originalStaker The wallet that originally staked the token.\n @param tokenId The affected NFT token ID.\n @param recipient The address that received the token.\n @param withdrawnAt Block timestamp at the moment of the withdrawal."},"eventSelector":"f4408f2b7cb3bb2b43ddb3715579eae68a12af5f2e6d938537db2be5e72f5f7d","id":10239,"name":"EmergencyWithdrawn","nameLocation":"4140:18:30","nodeType":"EventDefinition","parameters":{"id":10238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10231,"indexed":true,"mutability":"mutable","name":"originalStaker","nameLocation":"4184:14:30","nodeType":"VariableDeclaration","scope":10239,"src":"4168:30:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10230,"name":"address","nodeType":"ElementaryTypeName","src":"4168:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10233,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"4224:7:30","nodeType":"VariableDeclaration","scope":10239,"src":"4208:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10232,"name":"uint256","nodeType":"ElementaryTypeName","src":"4208:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10235,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"4257:9:30","nodeType":"VariableDeclaration","scope":10239,"src":"4241:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10234,"name":"address","nodeType":"ElementaryTypeName","src":"4241:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10237,"indexed":false,"mutability":"mutable","name":"withdrawnAt","nameLocation":"4284:11:30","nodeType":"VariableDeclaration","scope":10239,"src":"4276:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10236,"name":"uint256","nodeType":"ElementaryTypeName","src":"4276:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4158:143:30"},"src":"4134:168:30"},{"anonymous":false,"documentation":{"id":10240,"nodeType":"StructuredDocumentation","src":"4308:91:30","text":"@notice Emitted when an untracked NFT sent with transferFrom is recovered by the owner."},"eventSelector":"c27a1277308b3908a0fb998812a60b1da8911b8583f20bf8f98e5246db8c47ef","id":10248,"name":"UntrackedTokenRescued","nameLocation":"4410:21:30","nodeType":"EventDefinition","parameters":{"id":10247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10242,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"4448:9:30","nodeType":"VariableDeclaration","scope":10248,"src":"4432:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10241,"name":"address","nodeType":"ElementaryTypeName","src":"4432:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10244,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"4475:7:30","nodeType":"VariableDeclaration","scope":10248,"src":"4459:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10243,"name":"uint256","nodeType":"ElementaryTypeName","src":"4459:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10246,"indexed":false,"mutability":"mutable","name":"rescuedAt","nameLocation":"4492:9:30","nodeType":"VariableDeclaration","scope":10248,"src":"4484:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10245,"name":"uint256","nodeType":"ElementaryTypeName","src":"4484:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4431:71:30"},"src":"4404:99:30"},{"constant":false,"documentation":{"id":10249,"nodeType":"StructuredDocumentation","src":"4685:80:30","text":"@notice The ERC-721 NFT contract whose tokens this staking contract manages."},"functionSelector":"d56d229d","id":10252,"mutability":"immutable","name":"nftContract","nameLocation":"4795:11:30","nodeType":"VariableDeclaration","scope":10836,"src":"4770:36:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"},"typeName":{"id":10251,"nodeType":"UserDefinedTypeName","pathNode":{"id":10250,"name":"IERC721","nameLocations":["4770:7:30"],"nodeType":"IdentifierPath","referencedDeclaration":2686,"src":"4770:7:30"},"referencedDeclaration":2686,"src":"4770:7:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"visibility":"public"},{"constant":false,"documentation":{"id":10253,"nodeType":"StructuredDocumentation","src":"4813:81:30","text":"@dev Maps tokenId → original staker address. Zero address means not staked."},"id":10257,"mutability":"mutable","name":"_stakedBy","nameLocation":"4935:9:30","nodeType":"VariableDeclaration","scope":10836,"src":"4899:45:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":10256,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10254,"name":"uint256","nodeType":"ElementaryTypeName","src":"4907:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"4899:27:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10255,"name":"address","nodeType":"ElementaryTypeName","src":"4918:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"documentation":{"id":10258,"nodeType":"StructuredDocumentation","src":"4951:72:30","text":"@dev Maps tokenId → block.timestamp at which the token was staked."},"id":10262,"mutability":"mutable","name":"_stakedAt","nameLocation":"5064:9:30","nodeType":"VariableDeclaration","scope":10836,"src":"5028:45:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":10261,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10259,"name":"uint256","nodeType":"ElementaryTypeName","src":"5036:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"5028:27:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10260,"name":"uint256","nodeType":"ElementaryTypeName","src":"5047:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"documentation":{"id":10263,"nodeType":"StructuredDocumentation","src":"5080:68:30","text":"@dev Maps staker address → list of currently staked token IDs."},"id":10268,"mutability":"mutable","name":"_walletTokenIds","nameLocation":"5191:15:30","nodeType":"VariableDeclaration","scope":10836,"src":"5153:53:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[])"},"typeName":{"id":10267,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10264,"name":"address","nodeType":"ElementaryTypeName","src":"5161:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5153:29:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":10265,"name":"uint256","nodeType":"ElementaryTypeName","src":"5172:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10266,"nodeType":"ArrayTypeName","src":"5172:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"visibility":"private"},{"constant":false,"documentation":{"id":10269,"nodeType":"StructuredDocumentation","src":"5213:76:30","text":"@dev Maps tokenId → index in _walletTokenIds[staker] for O(1) removal."},"id":10273,"mutability":"mutable","name":"_walletTokenIndex","nameLocation":"5330:17:30","nodeType":"VariableDeclaration","scope":10836,"src":"5294:53:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":10272,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10270,"name":"uint256","nodeType":"ElementaryTypeName","src":"5302:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"5294:27:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10271,"name":"uint256","nodeType":"ElementaryTypeName","src":"5313:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":10307,"nodeType":"Block","src":"5785:145:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10284,"name":"nftContract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10276,"src":"5799:12:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5823:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5815:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10285,"name":"address","nodeType":"ElementaryTypeName","src":"5815:7:30","typeDescriptions":{}}},"id":10288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5815:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5799:26:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10290,"name":"initialOwner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10278,"src":"5829:13:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5854:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5846:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10291,"name":"address","nodeType":"ElementaryTypeName","src":"5846:7:30","typeDescriptions":{}}},"id":10294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5846:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5829:27:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5799:57:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10300,"nodeType":"IfStatement","src":"5795:83:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10297,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10198,"src":"5865:11:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5865:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10299,"nodeType":"RevertStatement","src":"5858:20:30"}},{"expression":{"id":10305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10301,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"5888:11:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10303,"name":"nftContract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10276,"src":"5910:12:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10302,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"5902:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$2686_$","typeString":"type(contract IERC721)"}},"id":10304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5902:21:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"src":"5888:35:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10306,"nodeType":"ExpressionStatement","src":"5888:35:30"}]},"documentation":{"id":10274,"nodeType":"StructuredDocumentation","src":"5536:164:30","text":"@param nftContract_ Address of the TricksforBoosterNFT contract.\n @param initialOwner_ Initial contract owner. Mainnet deployments should use a multisig."},"id":10308,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10281,"name":"initialOwner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10278,"src":"5770:13:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":10282,"kind":"baseConstructorSpecifier","modifierName":{"id":10280,"name":"Ownable","nameLocations":["5762:7:30"],"nodeType":"IdentifierPath","referencedDeclaration":526,"src":"5762:7:30"},"nodeType":"ModifierInvocation","src":"5762:22:30"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10276,"mutability":"mutable","name":"nftContract_","nameLocation":"5725:12:30","nodeType":"VariableDeclaration","scope":10308,"src":"5717:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10275,"name":"address","nodeType":"ElementaryTypeName","src":"5717:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10278,"mutability":"mutable","name":"initialOwner_","nameLocation":"5747:13:30","nodeType":"VariableDeclaration","scope":10308,"src":"5739:21:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10277,"name":"address","nodeType":"ElementaryTypeName","src":"5739:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5716:45:30"},"returnParameters":{"id":10283,"nodeType":"ParameterList","parameters":[],"src":"5785:0:30"},"scope":10836,"src":"5705:225:30","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10368,"nodeType":"Block","src":"6449:362:30","statements":[{"assignments":[10319],"declarations":[{"constant":false,"id":10319,"mutability":"mutable","name":"caller","nameLocation":"6467:6:30","nodeType":"VariableDeclaration","scope":10368,"src":"6459:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10318,"name":"address","nodeType":"ElementaryTypeName","src":"6459:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10322,"initialValue":{"expression":{"id":10320,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"6476:3:30","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6480:6:30","memberName":"sender","nodeType":"MemberAccess","src":"6476:10:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6459:27:30"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10323,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"6500:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10325,"indexExpression":{"id":10324,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10311,"src":"6510:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6500:18:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6530:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6522:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10326,"name":"address","nodeType":"ElementaryTypeName","src":"6522:7:30","typeDescriptions":{}}},"id":10329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6522:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6500:32:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10334,"nodeType":"IfStatement","src":"6496:65:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10331,"name":"TokenAlreadyStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10189,"src":"6541:18:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6541:20:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10333,"nodeType":"RevertStatement","src":"6534:27:30"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10311,"src":"6595:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10335,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"6575:11:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6587:7:30","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":2619,"src":"6575:19:30","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":10338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6575:28:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10339,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"6607:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6575:38:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10344,"nodeType":"IfStatement","src":"6571:66:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10341,"name":"NotTokenOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10186,"src":"6622:13:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6622:15:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10343,"nodeType":"RevertStatement","src":"6615:22:30"}},{"expression":{"arguments":[{"id":10346,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"6661:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10347,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10311,"src":"6669:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10345,"name":"_recordStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10747,"src":"6648:12:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6648:29:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10349,"nodeType":"ExpressionStatement","src":"6648:29:30"},{"expression":{"arguments":[{"id":10353,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"6712:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":10356,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"6728:4:30","typeDescriptions":{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10836","typeString":"contract TricksforBoosterStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10836","typeString":"contract TricksforBoosterStaking"}],"id":10355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6720:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10354,"name":"address","nodeType":"ElementaryTypeName","src":"6720:7:30","typeDescriptions":{}}},"id":10357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6720:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10358,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10311,"src":"6735:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10350,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"6687:11:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6699:12:30","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2651,"src":"6687:24:30","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":10359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6687:56:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10360,"nodeType":"ExpressionStatement","src":"6687:56:30"},{"eventCall":{"arguments":[{"id":10362,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"6771:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10363,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10311,"src":"6779:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10364,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"6788:5:30","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6794:9:30","memberName":"timestamp","nodeType":"MemberAccess","src":"6788:15:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10361,"name":"TokenStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10219,"src":"6759:11:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":10366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6759:45:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10367,"nodeType":"EmitStatement","src":"6754:50:30"}]},"documentation":{"id":10309,"nodeType":"StructuredDocumentation","src":"6114:262:30","text":"@notice Stakes a Booster NFT. The caller must have first approved this contract\n (or set approval for all) on the NFT contract.\n Custody of the token is transferred to this contract.\n @param tokenId The token ID to stake."},"functionSelector":"a694fc3a","id":10369,"implemented":true,"kind":"function","modifiers":[{"id":10314,"kind":"modifierInvocation","modifierName":{"id":10313,"name":"nonReentrant","nameLocations":["6422:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":4528,"src":"6422:12:30"},"nodeType":"ModifierInvocation","src":"6422:12:30"},{"id":10316,"kind":"modifierInvocation","modifierName":{"id":10315,"name":"whenNotPaused","nameLocations":["6435:13:30"],"nodeType":"IdentifierPath","referencedDeclaration":4410,"src":"6435:13:30"},"nodeType":"ModifierInvocation","src":"6435:13:30"}],"name":"stake","nameLocation":"6390:5:30","nodeType":"FunctionDefinition","parameters":{"id":10312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10311,"mutability":"mutable","name":"tokenId","nameLocation":"6404:7:30","nodeType":"VariableDeclaration","scope":10369,"src":"6396:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10310,"name":"uint256","nodeType":"ElementaryTypeName","src":"6396:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6395:17:30"},"returnParameters":{"id":10317,"nodeType":"ParameterList","parameters":[],"src":"6449:0:30"},"scope":10836,"src":"6381:430:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2703],"body":{"id":10436,"nodeType":"Block","src":"7681:372:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10387,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"7695:3:30","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7699:6:30","memberName":"sender","nodeType":"MemberAccess","src":"7695:10:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10391,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"7717:11:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}],"id":10390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7709:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10389,"name":"address","nodeType":"ElementaryTypeName","src":"7709:7:30","typeDescriptions":{}}},"id":10392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7709:20:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7695:34:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10397,"nodeType":"IfStatement","src":"7691:71:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10394,"name":"UnsupportedNFTContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"7738:22:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7738:24:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10396,"nodeType":"RevertStatement","src":"7731:31:30"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10398,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10374,"src":"7776:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7792:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7784:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10399,"name":"address","nodeType":"ElementaryTypeName","src":"7784:7:30","typeDescriptions":{}}},"id":10402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7784:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7776:18:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10407,"nodeType":"IfStatement","src":"7772:44:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10404,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10198,"src":"7803:11:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7803:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10406,"nodeType":"RevertStatement","src":"7796:20:30"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10408,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"7830:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10410,"indexExpression":{"id":10409,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10376,"src":"7840:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7830:18:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7860:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7852:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10411,"name":"address","nodeType":"ElementaryTypeName","src":"7852:7:30","typeDescriptions":{}}},"id":10414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7852:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7830:32:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10419,"nodeType":"IfStatement","src":"7826:65:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10416,"name":"TokenAlreadyStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10189,"src":"7871:18:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7871:20:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10418,"nodeType":"RevertStatement","src":"7864:27:30"}},{"expression":{"arguments":[{"id":10421,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10374,"src":"7915:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10422,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10376,"src":"7921:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10420,"name":"_recordStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10747,"src":"7902:12:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7902:27:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10424,"nodeType":"ExpressionStatement","src":"7902:27:30"},{"eventCall":{"arguments":[{"id":10426,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10374,"src":"7956:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10427,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10376,"src":"7962:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10428,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"7971:5:30","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7977:9:30","memberName":"timestamp","nodeType":"MemberAccess","src":"7971:15:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10425,"name":"TokenStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10219,"src":"7944:11:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":10430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7944:43:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10431,"nodeType":"EmitStatement","src":"7939:48:30"},{"expression":{"expression":{"expression":{"id":10432,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"8005:15:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$2704_$","typeString":"type(contract IERC721Receiver)"}},"id":10433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8021:16:30","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2703,"src":"8005:32:30","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":10434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8038:8:30","memberName":"selector","nodeType":"MemberAccess","src":"8005:41:30","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":10386,"id":10435,"nodeType":"Return","src":"7998:48:30"}]},"documentation":{"id":10370,"nodeType":"StructuredDocumentation","src":"6817:660:30","text":"@notice Handles the receipt of a Booster NFT transferred via safeTransferFrom.\n Only accepts tokens from the configured nftContract; reverts for all others.\n Records `from` as the staker and emits TokenStaked — functionally equivalent\n to calling stake() but triggered by safeTransferFrom rather than approve+stake.\n Not available while paused (mirrors stake() pause behaviour).\n @param from The address that previously owned the token (recorded as staker).\n @param tokenId The token ID being transferred.\n @return The ERC-721 receiver magic value confirming acceptance."},"functionSelector":"150b7a02","id":10437,"implemented":true,"kind":"function","modifiers":[{"id":10381,"kind":"modifierInvocation","modifierName":{"id":10380,"name":"nonReentrant","nameLocations":["7637:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":4528,"src":"7637:12:30"},"nodeType":"ModifierInvocation","src":"7637:12:30"},{"id":10383,"kind":"modifierInvocation","modifierName":{"id":10382,"name":"whenNotPaused","nameLocations":["7650:13:30"],"nodeType":"IdentifierPath","referencedDeclaration":4410,"src":"7650:13:30"},"nodeType":"ModifierInvocation","src":"7650:13:30"}],"name":"onERC721Received","nameLocation":"7491:16:30","nodeType":"FunctionDefinition","parameters":{"id":10379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10372,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10437,"src":"7517:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10371,"name":"address","nodeType":"ElementaryTypeName","src":"7517:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10374,"mutability":"mutable","name":"from","nameLocation":"7557:4:30","nodeType":"VariableDeclaration","scope":10437,"src":"7549:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10373,"name":"address","nodeType":"ElementaryTypeName","src":"7549:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10376,"mutability":"mutable","name":"tokenId","nameLocation":"7579:7:30","nodeType":"VariableDeclaration","scope":10437,"src":"7571:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10375,"name":"uint256","nodeType":"ElementaryTypeName","src":"7571:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10437,"src":"7596:14:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10377,"name":"bytes","nodeType":"ElementaryTypeName","src":"7596:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7507:120:30"},"returnParameters":{"id":10386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10385,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10437,"src":"7673:6:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10384,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7673:6:30","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7672:8:30"},"scope":10836,"src":"7482:571:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10494,"nodeType":"Block","src":"8339:381:30","statements":[{"assignments":[10446],"declarations":[{"constant":false,"id":10446,"mutability":"mutable","name":"originalStaker","nameLocation":"8357:14:30","nodeType":"VariableDeclaration","scope":10494,"src":"8349:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10445,"name":"address","nodeType":"ElementaryTypeName","src":"8349:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10450,"initialValue":{"baseExpression":{"id":10447,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"8374:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10449,"indexExpression":{"id":10448,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"8384:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8374:18:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8349:43:30"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10451,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10446,"src":"8406:14:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8432:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8424:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10452,"name":"address","nodeType":"ElementaryTypeName","src":"8424:7:30","typeDescriptions":{}}},"id":10455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8424:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8406:28:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10460,"nodeType":"IfStatement","src":"8402:57:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10457,"name":"TokenNotStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"8443:14:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:16:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10459,"nodeType":"RevertStatement","src":"8436:23:30"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10461,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10446,"src":"8473:14:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":10462,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"8491:3:30","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8495:6:30","memberName":"sender","nodeType":"MemberAccess","src":"8491:10:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8473:28:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10468,"nodeType":"IfStatement","src":"8469:60:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10465,"name":"NotOriginalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10195,"src":"8510:17:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8510:19:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10467,"nodeType":"RevertStatement","src":"8503:26:30"}},{"expression":{"arguments":[{"id":10470,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10446,"src":"8552:14:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10471,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"8568:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10469,"name":"_clearStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10771,"src":"8540:11:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8540:36:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10473,"nodeType":"ExpressionStatement","src":"8540:36:30"},{"expression":{"arguments":[{"arguments":[{"id":10479,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"8619:4:30","typeDescriptions":{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10836","typeString":"contract TricksforBoosterStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10836","typeString":"contract TricksforBoosterStaking"}],"id":10478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8611:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10477,"name":"address","nodeType":"ElementaryTypeName","src":"8611:7:30","typeDescriptions":{}}},"id":10480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8611:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10481,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"8626:3:30","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8630:6:30","memberName":"sender","nodeType":"MemberAccess","src":"8626:10:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10483,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"8638:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10474,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"8586:11:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8598:12:30","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2651,"src":"8586:24:30","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":10484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8586:60:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10485,"nodeType":"ExpressionStatement","src":"8586:60:30"},{"eventCall":{"arguments":[{"expression":{"id":10487,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"8676:3:30","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8680:6:30","memberName":"sender","nodeType":"MemberAccess","src":"8676:10:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10489,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"8688:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10490,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"8697:5:30","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8703:9:30","memberName":"timestamp","nodeType":"MemberAccess","src":"8697:15:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10486,"name":"TokenUnstaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10228,"src":"8662:13:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":10492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8662:51:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10493,"nodeType":"EmitStatement","src":"8657:56:30"}]},"documentation":{"id":10438,"nodeType":"StructuredDocumentation","src":"8059:219:30","text":"@notice Unstakes a Booster NFT and returns it to the original staker.\n Always available — not gated by pause — so players can always recover assets.\n @param tokenId The token ID to unstake."},"functionSelector":"2e17de78","id":10495,"implemented":true,"kind":"function","modifiers":[{"id":10443,"kind":"modifierInvocation","modifierName":{"id":10442,"name":"nonReentrant","nameLocations":["8326:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":4528,"src":"8326:12:30"},"nodeType":"ModifierInvocation","src":"8326:12:30"}],"name":"unstake","nameLocation":"8292:7:30","nodeType":"FunctionDefinition","parameters":{"id":10441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10440,"mutability":"mutable","name":"tokenId","nameLocation":"8308:7:30","nodeType":"VariableDeclaration","scope":10495,"src":"8300:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10439,"name":"uint256","nodeType":"ElementaryTypeName","src":"8300:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8299:17:30"},"returnParameters":{"id":10444,"nodeType":"ParameterList","parameters":[],"src":"8339:0:30"},"scope":10836,"src":"8283:437:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10564,"nodeType":"Block","src":"9562:466:30","statements":[{"assignments":[10508],"declarations":[{"constant":false,"id":10508,"mutability":"mutable","name":"originalStaker","nameLocation":"9580:14:30","nodeType":"VariableDeclaration","scope":10564,"src":"9572:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10507,"name":"address","nodeType":"ElementaryTypeName","src":"9572:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10512,"initialValue":{"baseExpression":{"id":10509,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"9597:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10511,"indexExpression":{"id":10510,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10498,"src":"9607:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9597:18:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9572:43:30"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10513,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10508,"src":"9629:14:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9655:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9647:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10514,"name":"address","nodeType":"ElementaryTypeName","src":"9647:7:30","typeDescriptions":{}}},"id":10517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9647:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9629:28:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10522,"nodeType":"IfStatement","src":"9625:57:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10519,"name":"TokenNotStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"9666:14:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9666:16:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10521,"nodeType":"RevertStatement","src":"9659:23:30"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10523,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10500,"src":"9696:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9717:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9709:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10524,"name":"address","nodeType":"ElementaryTypeName","src":"9709:7:30","typeDescriptions":{}}},"id":10527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9709:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9696:23:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10532,"nodeType":"IfStatement","src":"9692:49:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10529,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10198,"src":"9728:11:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9728:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10531,"nodeType":"RevertStatement","src":"9721:20:30"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10533,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10500,"src":"9755:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10534,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10508,"src":"9768:14:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9755:27:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10539,"nodeType":"IfStatement","src":"9751:67:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10536,"name":"InvalidEmergencyRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10204,"src":"9791:25:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9791:27:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10538,"nodeType":"RevertStatement","src":"9784:34:30"}},{"expression":{"arguments":[{"id":10541,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10508,"src":"9841:14:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10542,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10498,"src":"9857:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10540,"name":"_clearStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10771,"src":"9829:11:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9829:36:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10544,"nodeType":"ExpressionStatement","src":"9829:36:30"},{"expression":{"arguments":[{"arguments":[{"id":10550,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"9908:4:30","typeDescriptions":{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10836","typeString":"contract TricksforBoosterStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10836","typeString":"contract TricksforBoosterStaking"}],"id":10549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9900:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10548,"name":"address","nodeType":"ElementaryTypeName","src":"9900:7:30","typeDescriptions":{}}},"id":10551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9900:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10552,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10500,"src":"9915:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10553,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10498,"src":"9926:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10545,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"9875:11:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9887:12:30","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2651,"src":"9875:24:30","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":10554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9875:59:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10555,"nodeType":"ExpressionStatement","src":"9875:59:30"},{"eventCall":{"arguments":[{"id":10557,"name":"originalStaker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10508,"src":"9969:14:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10558,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10498,"src":"9985:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10559,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10500,"src":"9994:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10560,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"10005:5:30","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10011:9:30","memberName":"timestamp","nodeType":"MemberAccess","src":"10005:15:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10556,"name":"EmergencyWithdrawn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10239,"src":"9950:18:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,uint256)"}},"id":10562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9950:71:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10563,"nodeType":"EmitStatement","src":"9945:76:30"}]},"documentation":{"id":10496,"nodeType":"StructuredDocumentation","src":"8927:535:30","text":"@notice Emergency withdrawal of a staked token by the contract owner.\n Use only in exceptional circumstances (e.g., critical contract bug).\n This is the only admin path that moves a user's staked NFT without their\n direct action. It is explicitly named, emits EmergencyWithdrawn, and is\n documented in this contract and the project's architecture documentation.\n @param tokenId The token ID to withdraw.\n @param recipient The address to send the token to."},"functionSelector":"2f940c70","id":10565,"implemented":true,"kind":"function","modifiers":[{"id":10503,"kind":"modifierInvocation","modifierName":{"id":10502,"name":"onlyOwner","nameLocations":["9539:9:30"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"9539:9:30"},"nodeType":"ModifierInvocation","src":"9539:9:30"},{"id":10505,"kind":"modifierInvocation","modifierName":{"id":10504,"name":"nonReentrant","nameLocations":["9549:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":4528,"src":"9549:12:30"},"nodeType":"ModifierInvocation","src":"9549:12:30"}],"name":"emergencyWithdraw","nameLocation":"9476:17:30","nodeType":"FunctionDefinition","parameters":{"id":10501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10498,"mutability":"mutable","name":"tokenId","nameLocation":"9502:7:30","nodeType":"VariableDeclaration","scope":10565,"src":"9494:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10497,"name":"uint256","nodeType":"ElementaryTypeName","src":"9494:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10500,"mutability":"mutable","name":"recipient","nameLocation":"9519:9:30","nodeType":"VariableDeclaration","scope":10565,"src":"9511:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10499,"name":"address","nodeType":"ElementaryTypeName","src":"9511:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9493:36:30"},"returnParameters":{"id":10506,"nodeType":"ParameterList","parameters":[],"src":"9562:0:30"},"scope":10836,"src":"9467:561:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10630,"nodeType":"Block","src":"10444:362:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10577,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10570,"src":"10458:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10479:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10471:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10578,"name":"address","nodeType":"ElementaryTypeName","src":"10471:7:30","typeDescriptions":{}}},"id":10581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10471:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10458:23:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10586,"nodeType":"IfStatement","src":"10454:49:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10583,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10198,"src":"10490:11:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10490:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10585,"nodeType":"RevertStatement","src":"10483:20:30"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10587,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"10517:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10589,"indexExpression":{"id":10588,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10568,"src":"10527:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10517:18:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10547:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10539:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10590,"name":"address","nodeType":"ElementaryTypeName","src":"10539:7:30","typeDescriptions":{}}},"id":10593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10539:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10517:32:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10598,"nodeType":"IfStatement","src":"10513:61:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10595,"name":"TokenIsTracked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10207,"src":"10558:14:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10558:16:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10597,"nodeType":"RevertStatement","src":"10551:23:30"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10601,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10568,"src":"10608:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10599,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"10588:11:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10600:7:30","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":2619,"src":"10588:19:30","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":10602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10588:28:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10605,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"10628:4:30","typeDescriptions":{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10836","typeString":"contract TricksforBoosterStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10836","typeString":"contract TricksforBoosterStaking"}],"id":10604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10620:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10603,"name":"address","nodeType":"ElementaryTypeName","src":"10620:7:30","typeDescriptions":{}}},"id":10606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10620:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10588:45:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10611,"nodeType":"IfStatement","src":"10584:72:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10608,"name":"TokenNotHeld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10210,"src":"10642:12:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10642:14:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10610,"nodeType":"RevertStatement","src":"10635:21:30"}},{"expression":{"arguments":[{"arguments":[{"id":10617,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"10700:4:30","typeDescriptions":{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10836","typeString":"contract TricksforBoosterStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TricksforBoosterStaking_$10836","typeString":"contract TricksforBoosterStaking"}],"id":10616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10692:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10615,"name":"address","nodeType":"ElementaryTypeName","src":"10692:7:30","typeDescriptions":{}}},"id":10618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10692:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10619,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10570,"src":"10707:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10620,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10568,"src":"10718:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10612,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"10667:11:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$2686","typeString":"contract IERC721"}},"id":10614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10679:12:30","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2651,"src":"10667:24:30","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":10621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10667:59:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10622,"nodeType":"ExpressionStatement","src":"10667:59:30"},{"eventCall":{"arguments":[{"id":10624,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10570,"src":"10763:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10625,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10568,"src":"10774:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10626,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"10783:5:30","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10789:9:30","memberName":"timestamp","nodeType":"MemberAccess","src":"10783:15:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10623,"name":"UntrackedTokenRescued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"10741:21:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":10628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10741:58:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10629,"nodeType":"EmitStatement","src":"10736:63:30"}]},"documentation":{"id":10566,"nodeType":"StructuredDocumentation","src":"10034:307:30","text":"@notice Recovers an NFT that was sent directly with transferFrom and therefore did\n not invoke onERC721Received or create a staking record.\n @param tokenId The untracked token held by this contract.\n @param recipient The non-zero address that receives the recovered token."},"functionSelector":"0fa6f642","id":10631,"implemented":true,"kind":"function","modifiers":[{"id":10573,"kind":"modifierInvocation","modifierName":{"id":10572,"name":"onlyOwner","nameLocations":["10421:9:30"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"10421:9:30"},"nodeType":"ModifierInvocation","src":"10421:9:30"},{"id":10575,"kind":"modifierInvocation","modifierName":{"id":10574,"name":"nonReentrant","nameLocations":["10431:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":4528,"src":"10431:12:30"},"nodeType":"ModifierInvocation","src":"10431:12:30"}],"name":"rescueUntrackedToken","nameLocation":"10355:20:30","nodeType":"FunctionDefinition","parameters":{"id":10571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10568,"mutability":"mutable","name":"tokenId","nameLocation":"10384:7:30","nodeType":"VariableDeclaration","scope":10631,"src":"10376:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10567,"name":"uint256","nodeType":"ElementaryTypeName","src":"10376:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10570,"mutability":"mutable","name":"recipient","nameLocation":"10401:9:30","nodeType":"VariableDeclaration","scope":10631,"src":"10393:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10569,"name":"address","nodeType":"ElementaryTypeName","src":"10393:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10375:36:30"},"returnParameters":{"id":10576,"nodeType":"ParameterList","parameters":[],"src":"10444:0:30"},"scope":10836,"src":"10346:460:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10640,"nodeType":"Block","src":"11102:25:30","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10637,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4468,"src":"11112:6:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11112:8:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10639,"nodeType":"ExpressionStatement","src":"11112:8:30"}]},"documentation":{"id":10632,"nodeType":"StructuredDocumentation","src":"10988:73:30","text":"@notice Pauses new staking. Unstaking remains available while paused."},"functionSelector":"8456cb59","id":10641,"implemented":true,"kind":"function","modifiers":[{"id":10635,"kind":"modifierInvocation","modifierName":{"id":10634,"name":"onlyOwner","nameLocations":["11092:9:30"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"11092:9:30"},"nodeType":"ModifierInvocation","src":"11092:9:30"}],"name":"pause","nameLocation":"11075:5:30","nodeType":"FunctionDefinition","parameters":{"id":10633,"nodeType":"ParameterList","parameters":[],"src":"11080:2:30"},"returnParameters":{"id":10636,"nodeType":"ParameterList","parameters":[],"src":"11102:0:30"},"scope":10836,"src":"11066:61:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10650,"nodeType":"Block","src":"11205:27:30","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10647,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4484,"src":"11215:8:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11215:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10649,"nodeType":"ExpressionStatement","src":"11215:10:30"}]},"documentation":{"id":10642,"nodeType":"StructuredDocumentation","src":"11133:29:30","text":"@notice Unpauses staking."},"functionSelector":"3f4ba83a","id":10651,"implemented":true,"kind":"function","modifiers":[{"id":10645,"kind":"modifierInvocation","modifierName":{"id":10644,"name":"onlyOwner","nameLocations":["11195:9:30"],"nodeType":"IdentifierPath","referencedDeclaration":437,"src":"11195:9:30"},"nodeType":"ModifierInvocation","src":"11195:9:30"}],"name":"unpause","nameLocation":"11176:7:30","nodeType":"FunctionDefinition","parameters":{"id":10643,"nodeType":"ParameterList","parameters":[],"src":"11183:2:30"},"returnParameters":{"id":10646,"nodeType":"ParameterList","parameters":[],"src":"11205:0:30"},"scope":10836,"src":"11167:65:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10668,"nodeType":"Block","src":"11637:56:30","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10659,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"11654:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10661,"indexExpression":{"id":10660,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"11664:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11654:18:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11684:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11676:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10662,"name":"address","nodeType":"ElementaryTypeName","src":"11676:7:30","typeDescriptions":{}}},"id":10665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11676:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11654:32:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10658,"id":10667,"nodeType":"Return","src":"11647:39:30"}]},"documentation":{"id":10652,"nodeType":"StructuredDocumentation","src":"11458:110:30","text":"@notice Returns true if the given token is currently staked.\n @param tokenId The token ID to query."},"functionSelector":"baa51f86","id":10669,"implemented":true,"kind":"function","modifiers":[],"name":"isStaked","nameLocation":"11582:8:30","nodeType":"FunctionDefinition","parameters":{"id":10655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10654,"mutability":"mutable","name":"tokenId","nameLocation":"11599:7:30","nodeType":"VariableDeclaration","scope":10669,"src":"11591:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10653,"name":"uint256","nodeType":"ElementaryTypeName","src":"11591:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11590:17:30"},"returnParameters":{"id":10658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10657,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10669,"src":"11631:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10656,"name":"bool","nodeType":"ElementaryTypeName","src":"11631:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11630:6:30"},"scope":10836,"src":"11573:120:30","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10681,"nodeType":"Block","src":"11959:42:30","statements":[{"expression":{"baseExpression":{"id":10677,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"11976:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10679,"indexExpression":{"id":10678,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10672,"src":"11986:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11976:18:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10676,"id":10680,"nodeType":"Return","src":"11969:25:30"}]},"documentation":{"id":10670,"nodeType":"StructuredDocumentation","src":"11699:183:30","text":"@notice Returns the original staker of a currently staked token.\n Returns the zero address if the token is not staked.\n @param tokenId The token ID to query."},"functionSelector":"1dcac94d","id":10682,"implemented":true,"kind":"function","modifiers":[],"name":"stakedOwnerOf","nameLocation":"11896:13:30","nodeType":"FunctionDefinition","parameters":{"id":10673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10672,"mutability":"mutable","name":"tokenId","nameLocation":"11918:7:30","nodeType":"VariableDeclaration","scope":10682,"src":"11910:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10671,"name":"uint256","nodeType":"ElementaryTypeName","src":"11910:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11909:17:30"},"returnParameters":{"id":10676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10675,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10682,"src":"11950:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10674,"name":"address","nodeType":"ElementaryTypeName","src":"11950:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11949:9:30"},"scope":10836,"src":"11887:114:30","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10694,"nodeType":"Block","src":"12262:42:30","statements":[{"expression":{"baseExpression":{"id":10690,"name":"_stakedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"12279:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10692,"indexExpression":{"id":10691,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10685,"src":"12289:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12279:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10689,"id":10693,"nodeType":"Return","src":"12272:25:30"}]},"documentation":{"id":10683,"nodeType":"StructuredDocumentation","src":"12007:181:30","text":"@notice Returns the block timestamp at which a token was staked.\n Returns zero if the token is not currently staked.\n @param tokenId The token ID to query."},"functionSelector":"1b3253b0","id":10695,"implemented":true,"kind":"function","modifiers":[],"name":"stakedAtOf","nameLocation":"12202:10:30","nodeType":"FunctionDefinition","parameters":{"id":10686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10685,"mutability":"mutable","name":"tokenId","nameLocation":"12221:7:30","nodeType":"VariableDeclaration","scope":10695,"src":"12213:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10684,"name":"uint256","nodeType":"ElementaryTypeName","src":"12213:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12212:17:30"},"returnParameters":{"id":10689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10688,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10695,"src":"12253:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10687,"name":"uint256","nodeType":"ElementaryTypeName","src":"12253:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12252:9:30"},"scope":10836,"src":"12193:111:30","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10708,"nodeType":"Block","src":"12841:47:30","statements":[{"expression":{"baseExpression":{"id":10704,"name":"_walletTokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"12858:15:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":10706,"indexExpression":{"id":10705,"name":"wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10698,"src":"12874:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12858:23:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"functionReturnParameters":10703,"id":10707,"nodeType":"Return","src":"12851:30:30"}]},"documentation":{"id":10696,"nodeType":"StructuredDocumentation","src":"12310:438:30","text":"@notice Returns the list of token IDs currently staked by the given wallet.\n @dev Ordering is not guaranteed. Tokens are stored in an array with swap-and-pop\n removal: when a token is unstaked or emergency-withdrawn, the last element\n in the array takes its position. Do not rely on index stability across\n state-changing transactions.\n @param wallet The address to query."},"functionSelector":"2b4bc300","id":10709,"implemented":true,"kind":"function","modifiers":[],"name":"getWalletStakedTokens","nameLocation":"12762:21:30","nodeType":"FunctionDefinition","parameters":{"id":10699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10698,"mutability":"mutable","name":"wallet","nameLocation":"12792:6:30","nodeType":"VariableDeclaration","scope":10709,"src":"12784:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10697,"name":"address","nodeType":"ElementaryTypeName","src":"12784:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12783:16:30"},"returnParameters":{"id":10703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10702,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10709,"src":"12823:16:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10700,"name":"uint256","nodeType":"ElementaryTypeName","src":"12823:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10701,"nodeType":"ArrayTypeName","src":"12823:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12822:18:30"},"scope":10836,"src":"12753:135:30","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10746,"nodeType":"Block","src":"13222:206:30","statements":[{"expression":{"id":10721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10717,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"13232:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10719,"indexExpression":{"id":10718,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"13242:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13232:18:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10720,"name":"staker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10712,"src":"13253:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13232:27:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10722,"nodeType":"ExpressionStatement","src":"13232:27:30"},{"expression":{"id":10728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10723,"name":"_stakedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"13269:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10725,"indexExpression":{"id":10724,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"13279:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13269:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10726,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"13290:5:30","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13296:9:30","memberName":"timestamp","nodeType":"MemberAccess","src":"13290:15:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13269:36:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10729,"nodeType":"ExpressionStatement","src":"13269:36:30"},{"expression":{"id":10737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10730,"name":"_walletTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10273,"src":"13315:17:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10732,"indexExpression":{"id":10731,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"13333:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13315:26:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":10733,"name":"_walletTokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"13344:15:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":10735,"indexExpression":{"id":10734,"name":"staker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10712,"src":"13360:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13344:23:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":10736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13368:6:30","memberName":"length","nodeType":"MemberAccess","src":"13344:30:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13315:59:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10738,"nodeType":"ExpressionStatement","src":"13315:59:30"},{"expression":{"arguments":[{"id":10743,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"13413:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":10739,"name":"_walletTokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"13384:15:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":10741,"indexExpression":{"id":10740,"name":"staker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10712,"src":"13400:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13384:23:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":10742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13408:4:30","memberName":"push","nodeType":"MemberAccess","src":"13384:28:30","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":10744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13384:37:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10745,"nodeType":"ExpressionStatement","src":"13384:37:30"}]},"documentation":{"id":10710,"nodeType":"StructuredDocumentation","src":"13081:72:30","text":"@dev Records all staking state for a token being staked by `staker`."},"id":10747,"implemented":true,"kind":"function","modifiers":[],"name":"_recordStake","nameLocation":"13167:12:30","nodeType":"FunctionDefinition","parameters":{"id":10715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10712,"mutability":"mutable","name":"staker","nameLocation":"13188:6:30","nodeType":"VariableDeclaration","scope":10747,"src":"13180:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10711,"name":"address","nodeType":"ElementaryTypeName","src":"13180:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10714,"mutability":"mutable","name":"tokenId","nameLocation":"13204:7:30","nodeType":"VariableDeclaration","scope":10747,"src":"13196:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10713,"name":"uint256","nodeType":"ElementaryTypeName","src":"13196:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13179:33:30"},"returnParameters":{"id":10716,"nodeType":"ParameterList","parameters":[],"src":"13222:0:30"},"scope":10836,"src":"13158:270:30","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10770,"nodeType":"Block","src":"13577:121:30","statements":[{"expression":{"id":10758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13587:25:30","subExpression":{"baseExpression":{"id":10755,"name":"_stakedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"13594:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10757,"indexExpression":{"id":10756,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10752,"src":"13604:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13594:18:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10759,"nodeType":"ExpressionStatement","src":"13587:25:30"},{"expression":{"id":10763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13622:25:30","subExpression":{"baseExpression":{"id":10760,"name":"_stakedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"13629:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10762,"indexExpression":{"id":10761,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10752,"src":"13639:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13629:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10764,"nodeType":"ExpressionStatement","src":"13622:25:30"},{"expression":{"arguments":[{"id":10766,"name":"staker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10750,"src":"13675:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10767,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10752,"src":"13683:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10765,"name":"_removeFromWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10835,"src":"13657:17:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13657:34:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10769,"nodeType":"ExpressionStatement","src":"13657:34:30"}]},"documentation":{"id":10748,"nodeType":"StructuredDocumentation","src":"13434:75:30","text":"@dev Clears all staking state for a token being unstaked from `staker`."},"id":10771,"implemented":true,"kind":"function","modifiers":[],"name":"_clearStake","nameLocation":"13523:11:30","nodeType":"FunctionDefinition","parameters":{"id":10753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10750,"mutability":"mutable","name":"staker","nameLocation":"13543:6:30","nodeType":"VariableDeclaration","scope":10771,"src":"13535:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10749,"name":"address","nodeType":"ElementaryTypeName","src":"13535:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10752,"mutability":"mutable","name":"tokenId","nameLocation":"13559:7:30","nodeType":"VariableDeclaration","scope":10771,"src":"13551:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10751,"name":"uint256","nodeType":"ElementaryTypeName","src":"13551:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13534:33:30"},"returnParameters":{"id":10754,"nodeType":"ParameterList","parameters":[],"src":"13577:0:30"},"scope":10836,"src":"13514:184:30","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10834,"nodeType":"Block","src":"13868:423:30","statements":[{"assignments":[10783],"declarations":[{"constant":false,"id":10783,"mutability":"mutable","name":"tokens","nameLocation":"13896:6:30","nodeType":"VariableDeclaration","scope":10834,"src":"13878:24:30","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10781,"name":"uint256","nodeType":"ElementaryTypeName","src":"13878:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10782,"nodeType":"ArrayTypeName","src":"13878:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10787,"initialValue":{"baseExpression":{"id":10784,"name":"_walletTokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"13905:15:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":10786,"indexExpression":{"id":10785,"name":"staker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10774,"src":"13921:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13905:23:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13878:50:30"},{"assignments":[10789],"declarations":[{"constant":false,"id":10789,"mutability":"mutable","name":"index","nameLocation":"13946:5:30","nodeType":"VariableDeclaration","scope":10834,"src":"13938:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10788,"name":"uint256","nodeType":"ElementaryTypeName","src":"13938:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10793,"initialValue":{"baseExpression":{"id":10790,"name":"_walletTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10273,"src":"13954:17:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10792,"indexExpression":{"id":10791,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10776,"src":"13972:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13954:26:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13938:42:30"},{"assignments":[10795],"declarations":[{"constant":false,"id":10795,"mutability":"mutable","name":"lastIndex","nameLocation":"13998:9:30","nodeType":"VariableDeclaration","scope":10834,"src":"13990:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10794,"name":"uint256","nodeType":"ElementaryTypeName","src":"13990:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10800,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10796,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10783,"src":"14010:6:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":10797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14017:6:30","memberName":"length","nodeType":"MemberAccess","src":"14010:13:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14026:1:30","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14010:17:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13990:37:30"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10801,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10789,"src":"14042:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10802,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10795,"src":"14051:9:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14042:18:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10823,"nodeType":"IfStatement","src":"14038:181:30","trueBody":{"id":10822,"nodeType":"Block","src":"14062:157:30","statements":[{"assignments":[10805],"declarations":[{"constant":false,"id":10805,"mutability":"mutable","name":"lastTokenId","nameLocation":"14084:11:30","nodeType":"VariableDeclaration","scope":10822,"src":"14076:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10804,"name":"uint256","nodeType":"ElementaryTypeName","src":"14076:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10809,"initialValue":{"baseExpression":{"id":10806,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10783,"src":"14098:6:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":10808,"indexExpression":{"id":10807,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10795,"src":"14105:9:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14098:17:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14076:39:30"},{"expression":{"id":10814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10810,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10783,"src":"14129:6:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":10812,"indexExpression":{"id":10811,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10789,"src":"14136:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14129:13:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10813,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10805,"src":"14145:11:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14129:27:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10815,"nodeType":"ExpressionStatement","src":"14129:27:30"},{"expression":{"id":10820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10816,"name":"_walletTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10273,"src":"14170:17:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10818,"indexExpression":{"id":10817,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10805,"src":"14188:11:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14170:30:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10819,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10789,"src":"14203:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14170:38:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10821,"nodeType":"ExpressionStatement","src":"14170:38:30"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10824,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10783,"src":"14229:6:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":10826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14236:3:30","memberName":"pop","nodeType":"MemberAccess","src":"14229:10:30","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":10827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14229:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10828,"nodeType":"ExpressionStatement","src":"14229:12:30"},{"expression":{"id":10832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"14251:33:30","subExpression":{"baseExpression":{"id":10829,"name":"_walletTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10273,"src":"14258:17:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10831,"indexExpression":{"id":10830,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10776,"src":"14276:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14258:26:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10833,"nodeType":"ExpressionStatement","src":"14251:33:30"}]},"documentation":{"id":10772,"nodeType":"StructuredDocumentation","src":"13704:90:30","text":"@dev Removes tokenId from _walletTokenIds[staker] using swap-and-pop for O(1) removal."},"id":10835,"implemented":true,"kind":"function","modifiers":[],"name":"_removeFromWallet","nameLocation":"13808:17:30","nodeType":"FunctionDefinition","parameters":{"id":10777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10774,"mutability":"mutable","name":"staker","nameLocation":"13834:6:30","nodeType":"VariableDeclaration","scope":10835,"src":"13826:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10773,"name":"address","nodeType":"ElementaryTypeName","src":"13826:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10776,"mutability":"mutable","name":"tokenId","nameLocation":"13850:7:30","nodeType":"VariableDeclaration","scope":10835,"src":"13842:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10775,"name":"uint256","nodeType":"ElementaryTypeName","src":"13842:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13825:33:30"},"returnParameters":{"id":10778,"nodeType":"ParameterList","parameters":[],"src":"13868:0:30"},"scope":10836,"src":"13799:492:30","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":10837,"src":"1462:12831:30","usedErrors":[392,397,4399,4402,4505,10186,10189,10192,10195,10198,10201,10204,10207,10210],"usedEvents":[403,541,4391,4396,10219,10228,10239,10248]}],"src":"32:14262:30"},"id":30},"contracts/test/ReentrantERC721.sol":{"ast":{"absolutePath":"contracts/test/ReentrantERC721.sol","exportedSymbols":{"IReentrantStakingTarget":[10844],"ReentrantERC721":[10948]},"id":10949,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10838,"literals":["solidity","^","0.8",".26"],"nodeType":"PragmaDirective","src":"32:24:31"},{"abstract":false,"baseContracts":[],"canonicalName":"IReentrantStakingTarget","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":10844,"linearizedBaseContracts":[10844],"name":"IReentrantStakingTarget","nameLocation":"68:23:31","nodeType":"ContractDefinition","nodes":[{"functionSelector":"a694fc3a","id":10843,"implemented":false,"kind":"function","modifiers":[],"name":"stake","nameLocation":"107:5:31","nodeType":"FunctionDefinition","parameters":{"id":10841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10840,"mutability":"mutable","name":"tokenId","nameLocation":"121:7:31","nodeType":"VariableDeclaration","scope":10843,"src":"113:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10839,"name":"uint256","nodeType":"ElementaryTypeName","src":"113:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"112:17:31"},"returnParameters":{"id":10842,"nodeType":"ParameterList","parameters":[],"src":"138:0:31"},"scope":10844,"src":"98:41:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10949,"src":"58:83:31","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"ReentrantERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":10845,"nodeType":"StructuredDocumentation","src":"143:72:31","text":"@dev Test-only NFT double that calls stake again from transferFrom."},"fullyImplemented":true,"id":10948,"linearizedBaseContracts":[10948],"name":"ReentrantERC721","nameLocation":"224:15:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10849,"mutability":"mutable","name":"_owners","nameLocation":"296:7:31","nodeType":"VariableDeclaration","scope":10948,"src":"246:57:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":10848,"keyName":"tokenId","keyNameLocation":"262:7:31","keyType":{"id":10846,"name":"uint256","nodeType":"ElementaryTypeName","src":"254:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"246:41:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"owner","valueNameLocation":"281:5:31","valueType":{"id":10847,"name":"address","nodeType":"ElementaryTypeName","src":"273:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"functionSelector":"4cf088d9","id":10852,"mutability":"immutable","name":"staking","nameLocation":"350:7:31","nodeType":"VariableDeclaration","scope":10948,"src":"309:48:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10844","typeString":"contract IReentrantStakingTarget"},"typeName":{"id":10851,"nodeType":"UserDefinedTypeName","pathNode":{"id":10850,"name":"IReentrantStakingTarget","nameLocations":["309:23:31"],"nodeType":"IdentifierPath","referencedDeclaration":10844,"src":"309:23:31"},"referencedDeclaration":10844,"src":"309:23:31","typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10844","typeString":"contract IReentrantStakingTarget"}},"visibility":"public"},{"constant":false,"functionSelector":"d7751b85","id":10854,"mutability":"mutable","name":"attackEnabled","nameLocation":"375:13:31","nodeType":"VariableDeclaration","scope":10948,"src":"363:25:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10853,"name":"bool","nodeType":"ElementaryTypeName","src":"363:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":10865,"nodeType":"Block","src":"425:60:31","statements":[{"expression":{"id":10863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10859,"name":"staking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10852,"src":"435:7:31","typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10844","typeString":"contract IReentrantStakingTarget"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10861,"name":"staking_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10856,"src":"469:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10860,"name":"IReentrantStakingTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10844,"src":"445:23:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IReentrantStakingTarget_$10844_$","typeString":"type(contract IReentrantStakingTarget)"}},"id":10862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"445:33:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10844","typeString":"contract IReentrantStakingTarget"}},"src":"435:43:31","typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10844","typeString":"contract IReentrantStakingTarget"}},"id":10864,"nodeType":"ExpressionStatement","src":"435:43:31"}]},"id":10866,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10856,"mutability":"mutable","name":"staking_","nameLocation":"415:8:31","nodeType":"VariableDeclaration","scope":10866,"src":"407:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10855,"name":"address","nodeType":"ElementaryTypeName","src":"407:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"406:18:31"},"returnParameters":{"id":10858,"nodeType":"ParameterList","parameters":[],"src":"425:0:31"},"scope":10948,"src":"395:90:31","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10879,"nodeType":"Block","src":"543:38:31","statements":[{"expression":{"id":10877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10873,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10849,"src":"553:7:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10875,"indexExpression":{"id":10874,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10870,"src":"561:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"553:16:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10876,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10868,"src":"572:2:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"553:21:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10878,"nodeType":"ExpressionStatement","src":"553:21:31"}]},"functionSelector":"40c10f19","id":10880,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"500:4:31","nodeType":"FunctionDefinition","parameters":{"id":10871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10868,"mutability":"mutable","name":"to","nameLocation":"513:2:31","nodeType":"VariableDeclaration","scope":10880,"src":"505:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10867,"name":"address","nodeType":"ElementaryTypeName","src":"505:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10870,"mutability":"mutable","name":"tokenId","nameLocation":"525:7:31","nodeType":"VariableDeclaration","scope":10880,"src":"517:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10869,"name":"uint256","nodeType":"ElementaryTypeName","src":"517:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"504:29:31"},"returnParameters":{"id":10872,"nodeType":"ParameterList","parameters":[],"src":"543:0:31"},"scope":10948,"src":"491:90:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10896,"nodeType":"Block","src":"620:75:31","statements":[{"expression":{"id":10885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10883,"name":"attackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10854,"src":"630:13:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":10884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"646:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"630:20:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10886,"nodeType":"ExpressionStatement","src":"630:20:31"},{"expression":{"id":10894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10887,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10849,"src":"660:7:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10889,"indexExpression":{"hexValue":"393939","id":10888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"668:3:31","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"660:12:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10892,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"683:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrantERC721_$10948","typeString":"contract ReentrantERC721"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReentrantERC721_$10948","typeString":"contract ReentrantERC721"}],"id":10891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"675:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10890,"name":"address","nodeType":"ElementaryTypeName","src":"675:7:31","typeDescriptions":{}}},"id":10893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"675:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"660:28:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10895,"nodeType":"ExpressionStatement","src":"660:28:31"}]},"functionSelector":"21f16193","id":10897,"implemented":true,"kind":"function","modifiers":[],"name":"enableAttack","nameLocation":"596:12:31","nodeType":"FunctionDefinition","parameters":{"id":10881,"nodeType":"ParameterList","parameters":[],"src":"608:2:31"},"returnParameters":{"id":10882,"nodeType":"ParameterList","parameters":[],"src":"620:0:31"},"scope":10948,"src":"587:108:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10908,"nodeType":"Block","src":"767:40:31","statements":[{"expression":{"baseExpression":{"id":10904,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10849,"src":"784:7:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10906,"indexExpression":{"id":10905,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10899,"src":"792:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"784:16:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10903,"id":10907,"nodeType":"Return","src":"777:23:31"}]},"functionSelector":"6352211e","id":10909,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"710:7:31","nodeType":"FunctionDefinition","parameters":{"id":10900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10899,"mutability":"mutable","name":"tokenId","nameLocation":"726:7:31","nodeType":"VariableDeclaration","scope":10909,"src":"718:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10898,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"717:17:31"},"returnParameters":{"id":10903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10902,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10909,"src":"758:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10901,"name":"address","nodeType":"ElementaryTypeName","src":"758:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"757:9:31"},"scope":10948,"src":"701:106:31","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10946,"nodeType":"Block","src":"887:202:31","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10919,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10849,"src":"905:7:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10921,"indexExpression":{"id":10920,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10915,"src":"913:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"905:16:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10922,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10911,"src":"925:4:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"905:24:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"77726f6e67206f776e6572","id":10924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"931:13:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_1910a1b31627cb44672fa41011dea21df90d76304ea37cd5fe77e38d944205f7","typeString":"literal_string \"wrong owner\""},"value":"wrong owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1910a1b31627cb44672fa41011dea21df90d76304ea37cd5fe77e38d944205f7","typeString":"literal_string \"wrong owner\""}],"id":10918,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278,4294967278],"referencedDeclaration":4294967278,"src":"897:7:31","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"897:48:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10926,"nodeType":"ExpressionStatement","src":"897:48:31"},{"condition":{"id":10927,"name":"attackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10854,"src":"959:13:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10939,"nodeType":"IfStatement","src":"955:97:31","trueBody":{"id":10938,"nodeType":"Block","src":"974:78:31","statements":[{"expression":{"id":10930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10928,"name":"attackEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10854,"src":"988:13:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":10929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1004:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"988:21:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10931,"nodeType":"ExpressionStatement","src":"988:21:31"},{"expression":{"arguments":[{"hexValue":"393939","id":10935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1037:3:31","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"}],"expression":{"id":10932,"name":"staking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10852,"src":"1023:7:31","typeDescriptions":{"typeIdentifier":"t_contract$_IReentrantStakingTarget_$10844","typeString":"contract IReentrantStakingTarget"}},"id":10934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1031:5:31","memberName":"stake","nodeType":"MemberAccess","referencedDeclaration":10843,"src":"1023:13:31","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":10936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1023:18:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10937,"nodeType":"ExpressionStatement","src":"1023:18:31"}]}},{"expression":{"id":10944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10940,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10849,"src":"1061:7:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":10942,"indexExpression":{"id":10941,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10915,"src":"1069:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1061:16:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10943,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10913,"src":"1080:2:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1061:21:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10945,"nodeType":"ExpressionStatement","src":"1061:21:31"}]},"functionSelector":"23b872dd","id":10947,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"822:12:31","nodeType":"FunctionDefinition","parameters":{"id":10916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10911,"mutability":"mutable","name":"from","nameLocation":"843:4:31","nodeType":"VariableDeclaration","scope":10947,"src":"835:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10910,"name":"address","nodeType":"ElementaryTypeName","src":"835:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10913,"mutability":"mutable","name":"to","nameLocation":"857:2:31","nodeType":"VariableDeclaration","scope":10947,"src":"849:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10912,"name":"address","nodeType":"ElementaryTypeName","src":"849:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10915,"mutability":"mutable","name":"tokenId","nameLocation":"869:7:31","nodeType":"VariableDeclaration","scope":10947,"src":"861:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10914,"name":"uint256","nodeType":"ElementaryTypeName","src":"861:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"834:43:31"},"returnParameters":{"id":10917,"nodeType":"ParameterList","parameters":[],"src":"887:0:31"},"scope":10948,"src":"813:276:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10949,"src":"215:876:31","usedErrors":[],"usedEvents":[]}],"src":"32:1060:31"},"id":31}}}} diff --git a/artifacts/contracts/TricksforBoosterNFT.sol/TricksforBoosterNFT.json b/artifacts/contracts/TricksforBoosterNFT.sol/TricksforBoosterNFT.json index 00c365a..b86ab6a 100644 --- a/artifacts/contracts/TricksforBoosterNFT.sol/TricksforBoosterNFT.json +++ b/artifacts/contracts/TricksforBoosterNFT.sol/TricksforBoosterNFT.json @@ -166,6 +166,11 @@ "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, { "inputs": [ { @@ -269,6 +274,22 @@ "name": "ERC721NonexistentToken", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, { "inputs": [], "name": "EnforcedPause", @@ -1191,6 +1212,49 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1210,6 +1274,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1241,11 +1318,11 @@ "type": "function" } ], - "bytecode": "0x608060405234801561000f575f80fd5b5060405161295238038061295283398101604081905261002e916103f0565b80838a8a5f61003d8382610580565b50600161004a8282610580565b5050506001600160a01b03811661007b57604051636116401160e11b81525f60048201526024015b60405180910390fd5b600980546001600160d01b0316600160d01b65ffffffffffff8516021790556100a45f82610151565b5050506001600160a01b03851615806100c457506001600160a01b038316155b806100d657506001600160a01b038216155b156100f45760405163d92e233d60e01b815260040160405180910390fd5b600c6101008882610580565b50600d61010d8782610580565b5061011885856101c0565b6101427f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683610151565b5050505050505050505061063a565b5f826101ad575f61016a600a546001600160a01b031690565b6001600160a01b03161461019157604051631fe1e13d60e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0384161790555b6101b78383610262565b90505b92915050565b6127106001600160601b0382168110156101ff57604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610072565b6001600160a01b03831661022857604051635b6cc80560e11b81525f6004820152602401610072565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b5f8281526008602090815260408083206001600160a01b038516845290915281205460ff16610306575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556102be3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101ba565b505f6101ba565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610330575f80fd5b81516001600160401b038111156103495761034961030d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103775761037761030d565b60405281815283820160200185101561038e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146103c0575f80fd5b919050565b80516001600160601b03811681146103c0575f80fd5b805165ffffffffffff811681146103c0575f80fd5b5f805f805f805f805f6101208a8c031215610409575f80fd5b89516001600160401b0381111561041e575f80fd5b61042a8c828d01610321565b60208c0151909a5090506001600160401b03811115610447575f80fd5b6104538c828d01610321565b60408c015190995090506001600160401b03811115610470575f80fd5b61047c8c828d01610321565b60608c015190985090506001600160401b03811115610499575f80fd5b6104a58c828d01610321565b9650506104b460808b016103aa565b94506104c260a08b016103c5565b93506104d060c08b016103aa565b92506104de60e08b016103aa565b91506104ed6101008b016103db565b90509295985092959850929598565b600181811c9082168061051057607f821691505b60208210810361052e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561057b57805f5260205f20601f840160051c810160208510156105595750805b601f840160051c820191505b81811015610578575f8155600101610565565b50505b505050565b81516001600160401b038111156105995761059961030d565b6105ad816105a784546104fc565b84610534565b6020601f8211600181146105df575f83156105c85750848201515b5f19600385901b1c1916600184901b178455610578565b5f84815260208120601f198516915b8281101561060e57878501518255602094850194600190920191016105ee565b508482101561062b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b61230b806106475f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c806370a0823111610140578063a22cb465116100bf578063cf6eefb711610084578063cf6eefb714610503578063d539139314610531578063d547741f14610558578063d602b9fd1461056b578063e8a3d48514610573578063e985e9c51461057b575f80fd5b8063a22cb465146104ba578063b88d4fde146104cd578063c87b56dd146104e0578063cc8463c8146104f3578063cefc1429146104fb575f80fd5b8063938e3d7b11610105578063938e3d7b1461045e57806395d89b4114610471578063a144819414610479578063a1eda53c1461048c578063a217fddf146104b3575f80fd5b806370a08231146104175780638456cb591461042a57806384ef8ffc146104325780638da5cb5b1461044357806391d148541461044b575f80fd5b80632f2ff15d116101cc5780635c975abb116101915780635c975abb146103cb578063634e93da146103d65780636352211e146103e9578063649a5ec7146103fc5780636c0360eb1461040f575f80fd5b80632f2ff15d1461037757806336568abe1461038a5780633f4ba83a1461039d57806342842e0e146103a557806355f804b3146103b8575f80fd5b8063095ea7b311610212578063095ea7b3146102e75780630aa6220b146102fa57806323b872dd14610302578063248a9ca3146103155780632a55205a14610345575f80fd5b806301ffc9a71461024e578063022d63fb1461027657806302fa7c471461029257806306fdde03146102a7578063081812fc146102bc575b5f80fd5b61026161025c366004611ce7565b61058e565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff909116815260200161026d565b6102a56102a0366004611d1d565b61059e565b005b6102af610625565b60405161026d9190611d8b565b6102cf6102ca366004611d9d565b6106b4565b6040516001600160a01b03909116815260200161026d565b6102a56102f5366004611db4565b6106db565b6102a56106ea565b6102a5610310366004611ddc565b6106ff565b610337610323366004611d9d565b5f9081526008602052604090206001015490565b60405190815260200161026d565b610358610353366004611e16565b61078d565b604080516001600160a01b03909316835260208301919091520161026d565b6102a5610385366004611e36565b610810565b6102a5610398366004611e36565b610838565b6102a56108de565b6102a56103b3366004611ddc565b6108f0565b6102a56103c6366004611e60565b61090f565b600b5460ff16610261565b6102a56103e4366004611ece565b6109f8565b6102cf6103f7366004611d9d565b610a0b565b6102a561040a366004611ee7565b610a15565b6102af610a28565b610337610425366004611ece565b610a37565b6102a5610a7c565b600a546001600160a01b03166102cf565b6102cf610a8e565b610261610459366004611e36565b610aa6565b6102a561046c366004611e60565b610ad0565b6102af610bab565b6102a5610487366004611db4565b610bba565b610494610bf6565b6040805165ffffffffffff93841681529290911660208301520161026d565b6103375f81565b6102a56104c8366004611f0c565b610c48565b6102a56104db366004611f4e565b610c53565b6102af6104ee366004611d9d565b610c6b565b61027b610cd0565b6102a5610d2e565b61050b610d6d565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161026d565b6103377f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102a5610566366004611e36565b610d8e565b6102a5610db6565b6102af610dc8565b61026161058936600461202b565b610dd7565b5f61059882610e04565b92915050565b5f6105a881610e28565b6001600160a01b0383166105cf5760405163d92e233d60e01b815260040160405180910390fd5b6105d98383610e32565b6040516001600160601b03831681526001600160a01b038416907fe12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf49060200160405180910390a2505050565b60605f805461063390612053565b80601f016020809104026020016040519081016040528092919081815260200182805461065f90612053565b80156106aa5780601f10610681576101008083540402835291602001916106aa565b820191905f5260205f20905b81548152906001019060200180831161068d57829003601f168201915b5050505050905090565b5f6106be82610ed4565b505f828152600460205260409020546001600160a01b0316610598565b6106e6828233610f0c565b5050565b5f6106f481610e28565b6106fc610f19565b50565b6001600160a01b03821661072d57604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610739838333610f25565b9050836001600160a01b0316816001600160a01b031614610787576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610724565b50505050565b5f82815260076020526040812080548291906001600160a01b03811690600160a01b90046001600160601b0316816107e05750506006546001600160a01b03811690600160a01b90046001600160601b03165b5f6127106107f76001600160601b0384168961209f565b61080191906120b6565b92989297509195505050505050565b8161082e57604051631fe1e13d60e11b815260040160405180910390fd5b6106e68282611017565b811580156108535750600a546001600160a01b038281169116145b156108d4575f80610862610d6d565b90925090506001600160a01b038216151580610884575065ffffffffffff8116155b8061089757504265ffffffffffff821610155b156108bf576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610724565b50506009805465ffffffffffff60a01b191690555b6106e6828261103b565b5f6108e881610e28565b6106fc61106e565b61090a83838360405180602001604052805f815250610c53565b505050565b5f61091981610e28565b5f600c805461092790612053565b80601f016020809104026020016040519081016040528092919081815260200182805461095390612053565b801561099e5780601f106109755761010080835404028352916020019161099e565b820191905f5260205f20905b81548152906001019060200180831161098157829003601f168201915b505050505090508383600c91826109b6929190612119565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc18185856040516109ea939291906121d3565b60405180910390a150505050565b5f610a0281610e28565b6106e6826110c0565b5f61059882610ed4565b5f610a1f81610e28565b6106e682611132565b6060600c805461063390612053565b5f6001600160a01b038216610a61576040516322718ad960e21b81525f6004820152602401610724565b506001600160a01b03165f9081526003602052604090205490565b5f610a8681610e28565b6106fc6111a1565b5f610aa1600a546001600160a01b031690565b905090565b5f9182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610ada81610e28565b5f600d8054610ae890612053565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1490612053565b8015610b5f5780601f10610b3657610100808354040283529160200191610b5f565b820191905f5260205f20905b815481529060010190602001808311610b4257829003601f168201915b505050505090508383600d9182610b77929190612119565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168185856040516109ea939291906121d3565b60606001805461063390612053565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610be481610e28565b610bec6111de565b61090a8383611202565b600a545f90600160d01b900465ffffffffffff168015158015610c2157504265ffffffffffff821610155b610c2c575f80610c40565b600a54600160a01b900465ffffffffffff16815b915091509091565b6106e633838361121b565b610c5e8484846106ff565b61078733858585856112e2565b6060610c7682610ed4565b505f610c80610a28565b90505f815111610c9e5760405180602001604052805f815250610cc9565b80610ca88461140a565b604051602001610cb992919061222e565b6040516020818303038152906040525b9392505050565b600a545f90600160d01b900465ffffffffffff168015158015610cfa57504265ffffffffffff8216105b610d1557600954600160d01b900465ffffffffffff16610d28565b600a54600160a01b900465ffffffffffff165b91505090565b5f610d37610d6d565b509050336001600160a01b03821614610d6557604051636116401160e11b8152336004820152602401610724565b6106fc61149a565b6009546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610dac57604051631fe1e13d60e11b815260040160405180910390fd5b6106e68282611530565b5f610dc081610e28565b6106fc611554565b6060600d805461063390612053565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166318a4c3c360e11b148061059857506105988261155e565b6106fc8133611582565b6127106001600160601b038216811015610e7157604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610724565b6001600160a01b038316610e9a57604051635b6cc80560e11b81525f6004820152602401610724565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b5f818152600260205260408120546001600160a01b03168061059857604051637e27328960e01b815260048101849052602401610724565b61090a83838360016115bb565b610f235f806116bf565b565b5f828152600260205260408120546001600160a01b0390811690831615610f5157610f5181848661177e565b6001600160a01b03811615610f8b57610f6c5f855f806115bb565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615610fb9576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f8281526008602052604090206001015461103181610e28565b61078783836117e2565b6001600160a01b03811633146110645760405163334bd91960e11b815260040160405180910390fd5b61090a8282611848565b611076611884565b600b805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f6110c9610cd0565b6110d2426118a7565b6110dc9190612242565b90506110e882826118dd565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f61113c8261195a565b611145426118a7565b61114f9190612242565b905061115b82826116bf565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6111a96111de565b600b805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110a33390565b600b5460ff1615610f235760405163d93c066560e01b815260040160405180910390fd5b6106e6828260405180602001604052805f8152506119a1565b6001600160a01b0383166112445760405163a9fbf51f60e01b81525f6004820152602401610724565b6001600160a01b03821661127657604051630b61174360e31b81526001600160a01b0383166004820152602401610724565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561140357604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611324908890889087908790600401612260565b6020604051808303815f875af192505050801561135e575060408051601f3d908101601f1916820190925261135b9181019061229c565b60015b6113c5573d80801561138b576040519150601f19603f3d011682016040523d82523d5f602084013e611390565b606091505b5080515f036113bd57604051633250574960e11b81526001600160a01b0385166004820152602401610724565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461140157604051633250574960e11b81526001600160a01b0385166004820152602401610724565b505b5050505050565b60605f611416836119b8565b60010190505f8167ffffffffffffffff81111561143557611435611f3a565b6040519080825280601f01601f19166020018201604052801561145f576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461146957509392505050565b5f806114a4610d6d565b915091506114b98165ffffffffffff16151590565b15806114cd57504265ffffffffffff821610155b156114f5576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610724565b6115105f61150b600a546001600160a01b031690565b611848565b5061151b5f836117e2565b5050600980546001600160d01b031916905550565b5f8281526008602052604090206001015461154a81610e28565b6107878383611848565b610f235f806118dd565b5f6001600160e01b03198216637965db0b60e01b1480610598575061059882611a8f565b61158c8282610aa6565b6106e65760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610724565b80806115cf57506001600160a01b03821615155b15611690575f6115de84610ed4565b90506001600160a01b0383161580159061160a5750826001600160a01b0316816001600160a01b031614155b801561161d575061161b8184610dd7565b155b156116465760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610724565b811561168e5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600a54600160d01b900465ffffffffffff168015611741574265ffffffffffff8216101561171857600a54600980546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611741565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600a80546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b611789838383611ab3565b61090a576001600160a01b0383166117b757604051637e27328960e01b815260048101829052602401610724565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610724565b5f8261183e575f6117fb600a546001600160a01b031690565b6001600160a01b03161461182257604051631fe1e13d60e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0384161790555b610cc98383611b17565b5f821580156118645750600a546001600160a01b038381169116145b1561187a57600a80546001600160a01b03191690555b610cc98383611ba8565b600b5460ff16610f2357604051638dfc202b60e01b815260040160405180910390fd5b5f65ffffffffffff8211156118d9576040516306dfcc6560e41b81526030600482015260248101839052604401610724565b5090565b5f6118e6610d6d565b6009805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b03881617179055915061192890508165ffffffffffff16151590565b1561090a576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a1505050565b5f80611964610cd0565b90508065ffffffffffff168365ffffffffffff161161198c5761198783826122b7565b610cc9565b610cc965ffffffffffff841662069780611c13565b6119ab8383611c22565b61090a335f8585856112e2565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106119f65772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611a22576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611a4057662386f26fc10000830492506010015b6305f5e1008310611a58576305f5e100830492506008015b6127108310611a6c57612710830492506004015b60648310611a7e576064830492506002015b600a83106105985760010192915050565b5f6001600160e01b0319821663152a902d60e11b1480610598575061059882611c83565b5f6001600160a01b03831615801590611b0f5750826001600160a01b0316846001600160a01b03161480611aec5750611aec8484610dd7565b80611b0f57505f828152600460205260409020546001600160a01b038481169116145b949350505050565b5f611b228383610aa6565b611ba1575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611b593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610598565b505f610598565b5f611bb38383610aa6565b15611ba1575f8381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610598565b5f828218828410028218610cc9565b6001600160a01b038216611c4b57604051633250574960e11b81525f6004820152602401610724565b5f611c5783835f610f25565b90506001600160a01b0381161561090a576040516339e3563760e11b81525f6004820152602401610724565b5f6001600160e01b031982166380ac58cd60e01b1480611cb357506001600160e01b03198216635b5e139f60e01b145b8061059857506301ffc9a760e01b6001600160e01b0319831614610598565b6001600160e01b0319811681146106fc575f80fd5b5f60208284031215611cf7575f80fd5b8135610cc981611cd2565b80356001600160a01b0381168114611d18575f80fd5b919050565b5f8060408385031215611d2e575f80fd5b611d3783611d02565b915060208301356001600160601b0381168114611d52575f80fd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cc96020830184611d5d565b5f60208284031215611dad575f80fd5b5035919050565b5f8060408385031215611dc5575f80fd5b611dce83611d02565b946020939093013593505050565b5f805f60608486031215611dee575f80fd5b611df784611d02565b9250611e0560208501611d02565b929592945050506040919091013590565b5f8060408385031215611e27575f80fd5b50508035926020909101359150565b5f8060408385031215611e47575f80fd5b82359150611e5760208401611d02565b90509250929050565b5f8060208385031215611e71575f80fd5b823567ffffffffffffffff811115611e87575f80fd5b8301601f81018513611e97575f80fd5b803567ffffffffffffffff811115611ead575f80fd5b856020828401011115611ebe575f80fd5b6020919091019590945092505050565b5f60208284031215611ede575f80fd5b610cc982611d02565b5f60208284031215611ef7575f80fd5b813565ffffffffffff81168114610cc9575f80fd5b5f8060408385031215611f1d575f80fd5b611f2683611d02565b915060208301358015158114611d52575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215611f61575f80fd5b611f6a85611d02565b9350611f7860208601611d02565b925060408501359150606085013567ffffffffffffffff811115611f9a575f80fd5b8501601f81018713611faa575f80fd5b803567ffffffffffffffff811115611fc457611fc4611f3a565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611ff357611ff3611f3a565b60405281815282820160200189101561200a575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f806040838503121561203c575f80fd5b61204583611d02565b9150611e5760208401611d02565b600181811c9082168061206757607f821691505b60208210810361208557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105985761059861208b565b5f826120d057634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561090a57805f5260205f20601f840160051c810160208510156120fa5750805b601f840160051c820191505b81811015611403575f8155600101612106565b67ffffffffffffffff83111561213157612131611f3a565b6121458361213f8354612053565b836120d5565b5f601f841160018114612176575f851561215f5750838201355b5f19600387901b1c1916600186901b178355611403565b5f83815260208120601f198716915b828110156121a55786850135825560209485019460019092019101612185565b50868210156121c1575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f6121e56040830186611d5d565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f611b0f61223c8386612217565b84612217565b65ffffffffffff81811683821601908111156105985761059861208b565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061229290830184611d5d565b9695505050505050565b5f602082840312156122ac575f80fd5b8151610cc981611cd2565b65ffffffffffff82811682821603908111156105985761059861208b56fea26469706673582212206c61f9cbc8861ecf23317af095dbbbb42c5ff32ed8e4a71b91c7a2a6aa06803564736f6c634300081a0033", - "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061024a575f3560e01c806370a0823111610140578063a22cb465116100bf578063cf6eefb711610084578063cf6eefb714610503578063d539139314610531578063d547741f14610558578063d602b9fd1461056b578063e8a3d48514610573578063e985e9c51461057b575f80fd5b8063a22cb465146104ba578063b88d4fde146104cd578063c87b56dd146104e0578063cc8463c8146104f3578063cefc1429146104fb575f80fd5b8063938e3d7b11610105578063938e3d7b1461045e57806395d89b4114610471578063a144819414610479578063a1eda53c1461048c578063a217fddf146104b3575f80fd5b806370a08231146104175780638456cb591461042a57806384ef8ffc146104325780638da5cb5b1461044357806391d148541461044b575f80fd5b80632f2ff15d116101cc5780635c975abb116101915780635c975abb146103cb578063634e93da146103d65780636352211e146103e9578063649a5ec7146103fc5780636c0360eb1461040f575f80fd5b80632f2ff15d1461037757806336568abe1461038a5780633f4ba83a1461039d57806342842e0e146103a557806355f804b3146103b8575f80fd5b8063095ea7b311610212578063095ea7b3146102e75780630aa6220b146102fa57806323b872dd14610302578063248a9ca3146103155780632a55205a14610345575f80fd5b806301ffc9a71461024e578063022d63fb1461027657806302fa7c471461029257806306fdde03146102a7578063081812fc146102bc575b5f80fd5b61026161025c366004611ce7565b61058e565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff909116815260200161026d565b6102a56102a0366004611d1d565b61059e565b005b6102af610625565b60405161026d9190611d8b565b6102cf6102ca366004611d9d565b6106b4565b6040516001600160a01b03909116815260200161026d565b6102a56102f5366004611db4565b6106db565b6102a56106ea565b6102a5610310366004611ddc565b6106ff565b610337610323366004611d9d565b5f9081526008602052604090206001015490565b60405190815260200161026d565b610358610353366004611e16565b61078d565b604080516001600160a01b03909316835260208301919091520161026d565b6102a5610385366004611e36565b610810565b6102a5610398366004611e36565b610838565b6102a56108de565b6102a56103b3366004611ddc565b6108f0565b6102a56103c6366004611e60565b61090f565b600b5460ff16610261565b6102a56103e4366004611ece565b6109f8565b6102cf6103f7366004611d9d565b610a0b565b6102a561040a366004611ee7565b610a15565b6102af610a28565b610337610425366004611ece565b610a37565b6102a5610a7c565b600a546001600160a01b03166102cf565b6102cf610a8e565b610261610459366004611e36565b610aa6565b6102a561046c366004611e60565b610ad0565b6102af610bab565b6102a5610487366004611db4565b610bba565b610494610bf6565b6040805165ffffffffffff93841681529290911660208301520161026d565b6103375f81565b6102a56104c8366004611f0c565b610c48565b6102a56104db366004611f4e565b610c53565b6102af6104ee366004611d9d565b610c6b565b61027b610cd0565b6102a5610d2e565b61050b610d6d565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161026d565b6103377f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102a5610566366004611e36565b610d8e565b6102a5610db6565b6102af610dc8565b61026161058936600461202b565b610dd7565b5f61059882610e04565b92915050565b5f6105a881610e28565b6001600160a01b0383166105cf5760405163d92e233d60e01b815260040160405180910390fd5b6105d98383610e32565b6040516001600160601b03831681526001600160a01b038416907fe12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf49060200160405180910390a2505050565b60605f805461063390612053565b80601f016020809104026020016040519081016040528092919081815260200182805461065f90612053565b80156106aa5780601f10610681576101008083540402835291602001916106aa565b820191905f5260205f20905b81548152906001019060200180831161068d57829003601f168201915b5050505050905090565b5f6106be82610ed4565b505f828152600460205260409020546001600160a01b0316610598565b6106e6828233610f0c565b5050565b5f6106f481610e28565b6106fc610f19565b50565b6001600160a01b03821661072d57604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610739838333610f25565b9050836001600160a01b0316816001600160a01b031614610787576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610724565b50505050565b5f82815260076020526040812080548291906001600160a01b03811690600160a01b90046001600160601b0316816107e05750506006546001600160a01b03811690600160a01b90046001600160601b03165b5f6127106107f76001600160601b0384168961209f565b61080191906120b6565b92989297509195505050505050565b8161082e57604051631fe1e13d60e11b815260040160405180910390fd5b6106e68282611017565b811580156108535750600a546001600160a01b038281169116145b156108d4575f80610862610d6d565b90925090506001600160a01b038216151580610884575065ffffffffffff8116155b8061089757504265ffffffffffff821610155b156108bf576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610724565b50506009805465ffffffffffff60a01b191690555b6106e6828261103b565b5f6108e881610e28565b6106fc61106e565b61090a83838360405180602001604052805f815250610c53565b505050565b5f61091981610e28565b5f600c805461092790612053565b80601f016020809104026020016040519081016040528092919081815260200182805461095390612053565b801561099e5780601f106109755761010080835404028352916020019161099e565b820191905f5260205f20905b81548152906001019060200180831161098157829003601f168201915b505050505090508383600c91826109b6929190612119565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc18185856040516109ea939291906121d3565b60405180910390a150505050565b5f610a0281610e28565b6106e6826110c0565b5f61059882610ed4565b5f610a1f81610e28565b6106e682611132565b6060600c805461063390612053565b5f6001600160a01b038216610a61576040516322718ad960e21b81525f6004820152602401610724565b506001600160a01b03165f9081526003602052604090205490565b5f610a8681610e28565b6106fc6111a1565b5f610aa1600a546001600160a01b031690565b905090565b5f9182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610ada81610e28565b5f600d8054610ae890612053565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1490612053565b8015610b5f5780601f10610b3657610100808354040283529160200191610b5f565b820191905f5260205f20905b815481529060010190602001808311610b4257829003601f168201915b505050505090508383600d9182610b77929190612119565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168185856040516109ea939291906121d3565b60606001805461063390612053565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610be481610e28565b610bec6111de565b61090a8383611202565b600a545f90600160d01b900465ffffffffffff168015158015610c2157504265ffffffffffff821610155b610c2c575f80610c40565b600a54600160a01b900465ffffffffffff16815b915091509091565b6106e633838361121b565b610c5e8484846106ff565b61078733858585856112e2565b6060610c7682610ed4565b505f610c80610a28565b90505f815111610c9e5760405180602001604052805f815250610cc9565b80610ca88461140a565b604051602001610cb992919061222e565b6040516020818303038152906040525b9392505050565b600a545f90600160d01b900465ffffffffffff168015158015610cfa57504265ffffffffffff8216105b610d1557600954600160d01b900465ffffffffffff16610d28565b600a54600160a01b900465ffffffffffff165b91505090565b5f610d37610d6d565b509050336001600160a01b03821614610d6557604051636116401160e11b8152336004820152602401610724565b6106fc61149a565b6009546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610dac57604051631fe1e13d60e11b815260040160405180910390fd5b6106e68282611530565b5f610dc081610e28565b6106fc611554565b6060600d805461063390612053565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166318a4c3c360e11b148061059857506105988261155e565b6106fc8133611582565b6127106001600160601b038216811015610e7157604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610724565b6001600160a01b038316610e9a57604051635b6cc80560e11b81525f6004820152602401610724565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b5f818152600260205260408120546001600160a01b03168061059857604051637e27328960e01b815260048101849052602401610724565b61090a83838360016115bb565b610f235f806116bf565b565b5f828152600260205260408120546001600160a01b0390811690831615610f5157610f5181848661177e565b6001600160a01b03811615610f8b57610f6c5f855f806115bb565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615610fb9576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f8281526008602052604090206001015461103181610e28565b61078783836117e2565b6001600160a01b03811633146110645760405163334bd91960e11b815260040160405180910390fd5b61090a8282611848565b611076611884565b600b805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f6110c9610cd0565b6110d2426118a7565b6110dc9190612242565b90506110e882826118dd565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f61113c8261195a565b611145426118a7565b61114f9190612242565b905061115b82826116bf565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6111a96111de565b600b805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110a33390565b600b5460ff1615610f235760405163d93c066560e01b815260040160405180910390fd5b6106e6828260405180602001604052805f8152506119a1565b6001600160a01b0383166112445760405163a9fbf51f60e01b81525f6004820152602401610724565b6001600160a01b03821661127657604051630b61174360e31b81526001600160a01b0383166004820152602401610724565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561140357604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611324908890889087908790600401612260565b6020604051808303815f875af192505050801561135e575060408051601f3d908101601f1916820190925261135b9181019061229c565b60015b6113c5573d80801561138b576040519150601f19603f3d011682016040523d82523d5f602084013e611390565b606091505b5080515f036113bd57604051633250574960e11b81526001600160a01b0385166004820152602401610724565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461140157604051633250574960e11b81526001600160a01b0385166004820152602401610724565b505b5050505050565b60605f611416836119b8565b60010190505f8167ffffffffffffffff81111561143557611435611f3a565b6040519080825280601f01601f19166020018201604052801561145f576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461146957509392505050565b5f806114a4610d6d565b915091506114b98165ffffffffffff16151590565b15806114cd57504265ffffffffffff821610155b156114f5576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610724565b6115105f61150b600a546001600160a01b031690565b611848565b5061151b5f836117e2565b5050600980546001600160d01b031916905550565b5f8281526008602052604090206001015461154a81610e28565b6107878383611848565b610f235f806118dd565b5f6001600160e01b03198216637965db0b60e01b1480610598575061059882611a8f565b61158c8282610aa6565b6106e65760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610724565b80806115cf57506001600160a01b03821615155b15611690575f6115de84610ed4565b90506001600160a01b0383161580159061160a5750826001600160a01b0316816001600160a01b031614155b801561161d575061161b8184610dd7565b155b156116465760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610724565b811561168e5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600a54600160d01b900465ffffffffffff168015611741574265ffffffffffff8216101561171857600a54600980546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611741565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600a80546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b611789838383611ab3565b61090a576001600160a01b0383166117b757604051637e27328960e01b815260048101829052602401610724565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610724565b5f8261183e575f6117fb600a546001600160a01b031690565b6001600160a01b03161461182257604051631fe1e13d60e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0384161790555b610cc98383611b17565b5f821580156118645750600a546001600160a01b038381169116145b1561187a57600a80546001600160a01b03191690555b610cc98383611ba8565b600b5460ff16610f2357604051638dfc202b60e01b815260040160405180910390fd5b5f65ffffffffffff8211156118d9576040516306dfcc6560e41b81526030600482015260248101839052604401610724565b5090565b5f6118e6610d6d565b6009805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b03881617179055915061192890508165ffffffffffff16151590565b1561090a576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a1505050565b5f80611964610cd0565b90508065ffffffffffff168365ffffffffffff161161198c5761198783826122b7565b610cc9565b610cc965ffffffffffff841662069780611c13565b6119ab8383611c22565b61090a335f8585856112e2565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106119f65772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611a22576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611a4057662386f26fc10000830492506010015b6305f5e1008310611a58576305f5e100830492506008015b6127108310611a6c57612710830492506004015b60648310611a7e576064830492506002015b600a83106105985760010192915050565b5f6001600160e01b0319821663152a902d60e11b1480610598575061059882611c83565b5f6001600160a01b03831615801590611b0f5750826001600160a01b0316846001600160a01b03161480611aec5750611aec8484610dd7565b80611b0f57505f828152600460205260409020546001600160a01b038481169116145b949350505050565b5f611b228383610aa6565b611ba1575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611b593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610598565b505f610598565b5f611bb38383610aa6565b15611ba1575f8381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610598565b5f828218828410028218610cc9565b6001600160a01b038216611c4b57604051633250574960e11b81525f6004820152602401610724565b5f611c5783835f610f25565b90506001600160a01b0381161561090a576040516339e3563760e11b81525f6004820152602401610724565b5f6001600160e01b031982166380ac58cd60e01b1480611cb357506001600160e01b03198216635b5e139f60e01b145b8061059857506301ffc9a760e01b6001600160e01b0319831614610598565b6001600160e01b0319811681146106fc575f80fd5b5f60208284031215611cf7575f80fd5b8135610cc981611cd2565b80356001600160a01b0381168114611d18575f80fd5b919050565b5f8060408385031215611d2e575f80fd5b611d3783611d02565b915060208301356001600160601b0381168114611d52575f80fd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cc96020830184611d5d565b5f60208284031215611dad575f80fd5b5035919050565b5f8060408385031215611dc5575f80fd5b611dce83611d02565b946020939093013593505050565b5f805f60608486031215611dee575f80fd5b611df784611d02565b9250611e0560208501611d02565b929592945050506040919091013590565b5f8060408385031215611e27575f80fd5b50508035926020909101359150565b5f8060408385031215611e47575f80fd5b82359150611e5760208401611d02565b90509250929050565b5f8060208385031215611e71575f80fd5b823567ffffffffffffffff811115611e87575f80fd5b8301601f81018513611e97575f80fd5b803567ffffffffffffffff811115611ead575f80fd5b856020828401011115611ebe575f80fd5b6020919091019590945092505050565b5f60208284031215611ede575f80fd5b610cc982611d02565b5f60208284031215611ef7575f80fd5b813565ffffffffffff81168114610cc9575f80fd5b5f8060408385031215611f1d575f80fd5b611f2683611d02565b915060208301358015158114611d52575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215611f61575f80fd5b611f6a85611d02565b9350611f7860208601611d02565b925060408501359150606085013567ffffffffffffffff811115611f9a575f80fd5b8501601f81018713611faa575f80fd5b803567ffffffffffffffff811115611fc457611fc4611f3a565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611ff357611ff3611f3a565b60405281815282820160200189101561200a575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f806040838503121561203c575f80fd5b61204583611d02565b9150611e5760208401611d02565b600181811c9082168061206757607f821691505b60208210810361208557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105985761059861208b565b5f826120d057634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561090a57805f5260205f20601f840160051c810160208510156120fa5750805b601f840160051c820191505b81811015611403575f8155600101612106565b67ffffffffffffffff83111561213157612131611f3a565b6121458361213f8354612053565b836120d5565b5f601f841160018114612176575f851561215f5750838201355b5f19600387901b1c1916600186901b178355611403565b5f83815260208120601f198716915b828110156121a55786850135825560209485019460019092019101612185565b50868210156121c1575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f6121e56040830186611d5d565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f611b0f61223c8386612217565b84612217565b65ffffffffffff81811683821601908111156105985761059861208b565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061229290830184611d5d565b9695505050505050565b5f602082840312156122ac575f80fd5b8151610cc981611cd2565b65ffffffffffff82811682821603908111156105985761059861208b56fea26469706673582212206c61f9cbc8861ecf23317af095dbbbb42c5ff32ed8e4a71b91c7a2a6aa06803564736f6c634300081a0033", + "bytecode": "0x608060405234801561000f575f80fd5b50604051612d02380380612d0283398101604081905261002e916103f0565b80838a8a5f61003d8382610580565b50600161004a8282610580565b5050506001600160a01b03811661007b57604051636116401160e11b81525f60048201526024015b60405180910390fd5b600d80546001600160d01b0316600160d01b65ffffffffffff8516021790556100a45f82610151565b5050506001600160a01b03851615806100c457506001600160a01b038316155b806100d657506001600160a01b038216155b156100f45760405163d92e233d60e01b815260040160405180910390fd5b60106101008882610580565b50601161010d8782610580565b5061011885856101c0565b6101427f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683610151565b5050505050505050505061063a565b5f826101ad575f61016a600e546001600160a01b031690565b6001600160a01b03161461019157604051631fe1e13d60e11b815260040160405180910390fd5b600e80546001600160a01b0319166001600160a01b0384161790555b6101b78383610262565b90505b92915050565b6127106001600160601b0382168110156101ff57604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610072565b6001600160a01b03831661022857604051635b6cc80560e11b81525f6004820152602401610072565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b5f828152600c602090815260408083206001600160a01b038516845290915281205460ff16610306575f838152600c602090815260408083206001600160a01b03861684529091529020805460ff191660011790556102be3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101ba565b505f6101ba565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610330575f80fd5b81516001600160401b038111156103495761034961030d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103775761037761030d565b60405281815283820160200185101561038e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146103c0575f80fd5b919050565b80516001600160601b03811681146103c0575f80fd5b805165ffffffffffff811681146103c0575f80fd5b5f805f805f805f805f6101208a8c031215610409575f80fd5b89516001600160401b0381111561041e575f80fd5b61042a8c828d01610321565b60208c0151909a5090506001600160401b03811115610447575f80fd5b6104538c828d01610321565b60408c015190995090506001600160401b03811115610470575f80fd5b61047c8c828d01610321565b60608c015190985090506001600160401b03811115610499575f80fd5b6104a58c828d01610321565b9650506104b460808b016103aa565b94506104c260a08b016103c5565b93506104d060c08b016103aa565b92506104de60e08b016103aa565b91506104ed6101008b016103db565b90509295985092959850929598565b600181811c9082168061051057607f821691505b60208210810361052e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561057b57805f5260205f20601f840160051c810160208510156105595750805b601f840160051c820191505b81811015610578575f8155600101610565565b50505b505050565b81516001600160401b038111156105995761059961030d565b6105ad816105a784546104fc565b84610534565b6020601f8211600181146105df575f83156105c85750848201515b5f19600385901b1c1916600184901b178455610578565b5f84815260208120601f198516915b8281101561060e57878501518255602094850194600190920191016105ee565b508482101561062b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6126bb806106475f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c80636c0360eb1161014b578063a22cb465116100bf578063cf6eefb711610084578063cf6eefb71461054e578063d53913931461057c578063d547741f146105a3578063d602b9fd146105b6578063e8a3d485146105be578063e985e9c5146105c6575f80fd5b8063a22cb46514610505578063b88d4fde14610518578063c87b56dd1461052b578063cc8463c81461053e578063cefc142914610546575f80fd5b806391d148541161011057806391d1485414610496578063938e3d7b146104a957806395d89b41146104bc578063a1448194146104c4578063a1eda53c146104d7578063a217fddf146104fe575f80fd5b80636c0360eb1461045a57806370a08231146104625780638456cb591461047557806384ef8ffc1461047d5780638da5cb5b1461048e575f80fd5b80632f2ff15d116101e25780634f6ccce7116101a75780634f6ccce7146103f057806355f804b3146104035780635c975abb14610416578063634e93da146104215780636352211e14610434578063649a5ec714610447575f80fd5b80632f2ff15d1461039c5780632f745c59146103af57806336568abe146103c25780633f4ba83a146103d557806342842e0e146103dd575f80fd5b8063095ea7b311610233578063095ea7b3146103085780630aa6220b1461031b57806318160ddd1461032357806323b872dd14610335578063248a9ca3146103485780632a55205a1461036a575f80fd5b806301ffc9a71461026f578063022d63fb1461029757806302fa7c47146102b357806306fdde03146102c8578063081812fc146102dd575b5f80fd5b61028261027d36600461205c565b6105d9565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff909116815260200161028e565b6102c66102c1366004612092565b6105e9565b005b6102d0610670565b60405161028e9190612100565b6102f06102eb366004612112565b6106ff565b6040516001600160a01b03909116815260200161028e565b6102c6610316366004612129565b610726565b6102c6610735565b6008545b60405190815260200161028e565b6102c6610343366004612151565b61074a565b610327610356366004612112565b5f908152600c602052604090206001015490565b61037d61037836600461218b565b6107d8565b604080516001600160a01b03909316835260208301919091520161028e565b6102c66103aa3660046121ab565b61085b565b6103276103bd366004612129565b610883565b6102c66103d03660046121ab565b6108e6565b6102c661098c565b6102c66103eb366004612151565b61099e565b6103276103fe366004612112565b6109bd565b6102c66104113660046121d5565b610a12565b600f5460ff16610282565b6102c661042f366004612243565b610afb565b6102f0610442366004612112565b610b0e565b6102c661045536600461225c565b610b18565b6102d0610b2b565b610327610470366004612243565b610b3a565b6102c6610b7f565b600e546001600160a01b03166102f0565b6102f0610b91565b6102826104a43660046121ab565b610ba9565b6102c66104b73660046121d5565b610bd3565b6102d0610cae565b6102c66104d2366004612129565b610cbd565b6104df610cf9565b6040805165ffffffffffff93841681529290911660208301520161028e565b6103275f81565b6102c6610513366004612281565b610d4b565b6102c66105263660046122c3565b610d56565b6102d0610539366004612112565b610d6e565b61029c610dd3565b6102c6610e31565b610556610e70565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161028e565b6103277f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102c66105b13660046121ab565b610e91565b6102c6610eb9565b6102d0610ecb565b6102826105d43660046123a0565b610eda565b5f6105e382610f07565b92915050565b5f6105f381610f2b565b6001600160a01b03831661061a5760405163d92e233d60e01b815260040160405180910390fd5b6106248383610f35565b6040516001600160601b03831681526001600160a01b038416907fe12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf49060200160405180910390a2505050565b60605f805461067e906123c8565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa906123c8565b80156106f55780601f106106cc576101008083540402835291602001916106f5565b820191905f5260205f20905b8154815290600101906020018083116106d857829003601f168201915b5050505050905090565b5f61070982610fd7565b505f828152600460205260409020546001600160a01b03166105e3565b61073182823361100f565b5050565b5f61073f81610f2b565b61074761101c565b50565b6001600160a01b03821661077857604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610784838333611028565b9050836001600160a01b0316816001600160a01b0316146107d2576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161076f565b50505050565b5f828152600b6020526040812080548291906001600160a01b03811690600160a01b90046001600160601b03168161082b575050600a546001600160a01b03811690600160a01b90046001600160601b03165b5f6127106108426001600160601b03841689612414565b61084c919061242b565b92989297509195505050505050565b8161087957604051631fe1e13d60e11b815260040160405180910390fd5b610731828261103c565b5f61088d83610b3a565b82106108be5760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161076f565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b811580156109015750600e546001600160a01b038281169116145b15610982575f80610910610e70565b90925090506001600160a01b038216151580610932575065ffffffffffff8116155b8061094557504265ffffffffffff821610155b1561096d576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161076f565b5050600d805465ffffffffffff60a01b191690555b6107318282611060565b5f61099681610f2b565b610747611093565b6109b883838360405180602001604052805f815250610d56565b505050565b5f6109c760085490565b82106109ef5760405163295f44f760e21b81525f60048201526024810183905260440161076f565b60088281548110610a0257610a0261244a565b905f5260205f2001549050919050565b5f610a1c81610f2b565b5f60108054610a2a906123c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a56906123c8565b8015610aa15780601f10610a7857610100808354040283529160200191610aa1565b820191905f5260205f20905b815481529060010190602001808311610a8457829003601f168201915b50505050509050838360109182610ab99291906124a2565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1818585604051610aed9392919061255c565b60405180910390a150505050565b5f610b0581610f2b565b610731826110e5565b5f6105e382610fd7565b5f610b2281610f2b565b61073182611157565b60606010805461067e906123c8565b5f6001600160a01b038216610b64576040516322718ad960e21b81525f600482015260240161076f565b506001600160a01b03165f9081526003602052604090205490565b5f610b8981610f2b565b6107476111c6565b5f610ba4600e546001600160a01b031690565b905090565b5f918252600c602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610bdd81610f2b565b5f60118054610beb906123c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610c17906123c8565b8015610c625780601f10610c3957610100808354040283529160200191610c62565b820191905f5260205f20905b815481529060010190602001808311610c4557829003601f168201915b50505050509050838360119182610c7a9291906124a2565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16818585604051610aed9392919061255c565b60606001805461067e906123c8565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610ce781610f2b565b610cef611203565b6109b88383611227565b600e545f90600160d01b900465ffffffffffff168015158015610d2457504265ffffffffffff821610155b610d2f575f80610d43565b600e54600160a01b900465ffffffffffff16815b915091509091565b610731338383611240565b610d6184848461074a565b6107d23385858585611307565b6060610d7982610fd7565b505f610d83610b2b565b90505f815111610da15760405180602001604052805f815250610dcc565b80610dab8461142f565b604051602001610dbc9291906125b7565b6040516020818303038152906040525b9392505050565b600e545f90600160d01b900465ffffffffffff168015158015610dfd57504265ffffffffffff8216105b610e1857600d54600160d01b900465ffffffffffff16610e2b565b600e54600160a01b900465ffffffffffff165b91505090565b5f610e3a610e70565b509050336001600160a01b03821614610e6857604051636116401160e11b815233600482015260240161076f565b6107476114bf565b600d546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610eaf57604051631fe1e13d60e11b815260040160405180910390fd5b6107318282611555565b5f610ec381610f2b565b610747611579565b60606011805461067e906123c8565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166318a4c3c360e11b14806105e357506105e382611583565b61074781336115a7565b6127106001600160601b038216811015610f7457604051636f483d0960e01b81526001600160601b03831660048201526024810182905260440161076f565b6001600160a01b038316610f9d57604051635b6cc80560e11b81525f600482015260240161076f565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b5f818152600260205260408120546001600160a01b0316806105e357604051637e27328960e01b81526004810184905260240161076f565b6109b883838360016115e0565b6110265f806116e4565b565b5f6110348484846117a3565b949350505050565b5f828152600c602052604090206001015461105681610f2b565b6107d2838361186e565b6001600160a01b03811633146110895760405163334bd91960e11b815260040160405180910390fd5b6109b882826118d4565b61109b611910565b600f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f6110ee610dd3565b6110f742611933565b61110191906125cb565b905061110d8282611969565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f611161826119e6565b61116a42611933565b61117491906125cb565b905061118082826116e4565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6111ce611203565b600f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110c83390565b600f5460ff16156110265760405163d93c066560e01b815260040160405180910390fd5b610731828260405180602001604052805f815250611a2d565b6001600160a01b0383166112695760405163a9fbf51f60e01b81525f600482015260240161076f565b6001600160a01b03821661129b57604051630b61174360e31b81526001600160a01b038316600482015260240161076f565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561142857604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906113499088908890879087906004016125e9565b6020604051808303815f875af1925050508015611383575060408051601f3d908101601f1916820190925261138091810190612625565b60015b6113ea573d8080156113b0576040519150601f19603f3d011682016040523d82523d5f602084013e6113b5565b606091505b5080515f036113e257604051633250574960e11b81526001600160a01b038516600482015260240161076f565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461142657604051633250574960e11b81526001600160a01b038516600482015260240161076f565b505b5050505050565b60605f61143b83611a44565b60010190505f8167ffffffffffffffff81111561145a5761145a6122af565b6040519080825280601f01601f191660200182016040528015611484576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461148e57509392505050565b5f806114c9610e70565b915091506114de8165ffffffffffff16151590565b15806114f257504265ffffffffffff821610155b1561151a576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161076f565b6115355f611530600e546001600160a01b031690565b6118d4565b506115405f8361186e565b5050600d80546001600160d01b031916905550565b5f828152600c602052604090206001015461156f81610f2b565b6107d283836118d4565b6110265f80611969565b5f6001600160e01b03198216637965db0b60e01b14806105e357506105e382611b1b565b6115b18282610ba9565b6107315760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161076f565b80806115f457506001600160a01b03821615155b156116b5575f61160384610fd7565b90506001600160a01b0383161580159061162f5750826001600160a01b0316816001600160a01b031614155b801561164257506116408184610eda565b155b1561166b5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161076f565b81156116b35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600e54600160d01b900465ffffffffffff168015611766574265ffffffffffff8216101561173d57600e54600d80546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611766565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600e80546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b5f806117b0858585611b3f565b90506001600160a01b03811661180c5761180784600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61182f565b846001600160a01b0316816001600160a01b03161461182f5761182f8185611c31565b6001600160a01b03851661184b5761184684611cae565b611034565b846001600160a01b0316816001600160a01b031614611034576110348585611d55565b5f826118ca575f611887600e546001600160a01b031690565b6001600160a01b0316146118ae57604051631fe1e13d60e11b815260040160405180910390fd5b600e80546001600160a01b0319166001600160a01b0384161790555b610dcc8383611da3565b5f821580156118f05750600e546001600160a01b038381169116145b1561190657600e80546001600160a01b03191690555b610dcc8383611e34565b600f5460ff1661102657604051638dfc202b60e01b815260040160405180910390fd5b5f65ffffffffffff821115611965576040516306dfcc6560e41b8152603060048201526024810183905260440161076f565b5090565b5f611972610e70565b600d805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b0388161717905591506119b490508165ffffffffffff16151590565b156109b8576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a1505050565b5f806119f0610dd3565b90508065ffffffffffff168365ffffffffffff1611611a1857611a138382612640565b610dcc565b610dcc65ffffffffffff841662069780611e9f565b611a378383611eae565b6109b8335f858585611307565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611a825772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611aae576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611acc57662386f26fc10000830492506010015b6305f5e1008310611ae4576305f5e100830492506008015b6127108310611af857612710830492506004015b60648310611b0a576064830492506002015b600a83106105e35760010192915050565b5f6001600160e01b0319821663152a902d60e11b14806105e357506105e382611f0f565b5f828152600260205260408120546001600160a01b0390811690831615611b6b57611b6b818486611f33565b6001600160a01b03811615611ba557611b865f855f806115e0565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611bd3576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f611c3b83610b3a565b5f838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314611c90575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f90611cbf9060019061265e565b5f8381526009602052604081205460088054939450909284908110611ce657611ce661244a565b905f5260205f20015490508060088381548110611d0557611d0561244a565b5f918252602080832090910192909255828152600990915260408082208490558582528120556008805480611d3c57611d3c612671565b600190038181905f5260205f20015f9055905550505050565b5f6001611d6184610b3a565b611d6b919061265e565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b5f611dae8383610ba9565b611e2d575f838152600c602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611de53390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e3565b505f6105e3565b5f611e3f8383610ba9565b15611e2d575f838152600c602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e3565b5f828218828410028218610dcc565b6001600160a01b038216611ed757604051633250574960e11b81525f600482015260240161076f565b5f611ee383835f611028565b90506001600160a01b038116156109b8576040516339e3563760e11b81525f600482015260240161076f565b5f6001600160e01b0319821663780e9d6360e01b14806105e357506105e382611f97565b611f3e838383611fe6565b6109b8576001600160a01b038316611f6c57604051637e27328960e01b81526004810182905260240161076f565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161076f565b5f6001600160e01b031982166380ac58cd60e01b1480611fc757506001600160e01b03198216635b5e139f60e01b145b806105e357506301ffc9a760e01b6001600160e01b03198316146105e3565b5f6001600160a01b038316158015906110345750826001600160a01b0316846001600160a01b0316148061201f575061201f8484610eda565b806110345750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610747575f80fd5b5f6020828403121561206c575f80fd5b8135610dcc81612047565b80356001600160a01b038116811461208d575f80fd5b919050565b5f80604083850312156120a3575f80fd5b6120ac83612077565b915060208301356001600160601b03811681146120c7575f80fd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dcc60208301846120d2565b5f60208284031215612122575f80fd5b5035919050565b5f806040838503121561213a575f80fd5b61214383612077565b946020939093013593505050565b5f805f60608486031215612163575f80fd5b61216c84612077565b925061217a60208501612077565b929592945050506040919091013590565b5f806040838503121561219c575f80fd5b50508035926020909101359150565b5f80604083850312156121bc575f80fd5b823591506121cc60208401612077565b90509250929050565b5f80602083850312156121e6575f80fd5b823567ffffffffffffffff8111156121fc575f80fd5b8301601f8101851361220c575f80fd5b803567ffffffffffffffff811115612222575f80fd5b856020828401011115612233575f80fd5b6020919091019590945092505050565b5f60208284031215612253575f80fd5b610dcc82612077565b5f6020828403121561226c575f80fd5b813565ffffffffffff81168114610dcc575f80fd5b5f8060408385031215612292575f80fd5b61229b83612077565b9150602083013580151581146120c7575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f80608085870312156122d6575f80fd5b6122df85612077565b93506122ed60208601612077565b925060408501359150606085013567ffffffffffffffff81111561230f575f80fd5b8501601f8101871361231f575f80fd5b803567ffffffffffffffff811115612339576123396122af565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612368576123686122af565b60405281815282820160200189101561237f575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f80604083850312156123b1575f80fd5b6123ba83612077565b91506121cc60208401612077565b600181811c908216806123dc57607f821691505b6020821081036123fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105e3576105e3612400565b5f8261244557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b601f8211156109b857805f5260205f20601f840160051c810160208510156124835750805b601f840160051c820191505b81811015611428575f815560010161248f565b67ffffffffffffffff8311156124ba576124ba6122af565b6124ce836124c883546123c8565b8361245e565b5f601f8411600181146124ff575f85156124e85750838201355b5f19600387901b1c1916600186901b178355611428565b5f83815260208120601f198716915b8281101561252e578685013582556020948501946001909201910161250e565b508682101561254a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f61256e60408301866120d2565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f6110346125c583866125a0565b846125a0565b65ffffffffffff81811683821601908111156105e3576105e3612400565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061261b908301846120d2565b9695505050505050565b5f60208284031215612635575f80fd5b8151610dcc81612047565b65ffffffffffff82811682821603908111156105e3576105e3612400565b818103818111156105e3576105e3612400565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212204dfc414c3f7c881c72a70636389dd9e0c274b6ba5a9f6fa5fea06c294e82584a64736f6c634300081a0033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061026b575f3560e01c80636c0360eb1161014b578063a22cb465116100bf578063cf6eefb711610084578063cf6eefb71461054e578063d53913931461057c578063d547741f146105a3578063d602b9fd146105b6578063e8a3d485146105be578063e985e9c5146105c6575f80fd5b8063a22cb46514610505578063b88d4fde14610518578063c87b56dd1461052b578063cc8463c81461053e578063cefc142914610546575f80fd5b806391d148541161011057806391d1485414610496578063938e3d7b146104a957806395d89b41146104bc578063a1448194146104c4578063a1eda53c146104d7578063a217fddf146104fe575f80fd5b80636c0360eb1461045a57806370a08231146104625780638456cb591461047557806384ef8ffc1461047d5780638da5cb5b1461048e575f80fd5b80632f2ff15d116101e25780634f6ccce7116101a75780634f6ccce7146103f057806355f804b3146104035780635c975abb14610416578063634e93da146104215780636352211e14610434578063649a5ec714610447575f80fd5b80632f2ff15d1461039c5780632f745c59146103af57806336568abe146103c25780633f4ba83a146103d557806342842e0e146103dd575f80fd5b8063095ea7b311610233578063095ea7b3146103085780630aa6220b1461031b57806318160ddd1461032357806323b872dd14610335578063248a9ca3146103485780632a55205a1461036a575f80fd5b806301ffc9a71461026f578063022d63fb1461029757806302fa7c47146102b357806306fdde03146102c8578063081812fc146102dd575b5f80fd5b61028261027d36600461205c565b6105d9565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff909116815260200161028e565b6102c66102c1366004612092565b6105e9565b005b6102d0610670565b60405161028e9190612100565b6102f06102eb366004612112565b6106ff565b6040516001600160a01b03909116815260200161028e565b6102c6610316366004612129565b610726565b6102c6610735565b6008545b60405190815260200161028e565b6102c6610343366004612151565b61074a565b610327610356366004612112565b5f908152600c602052604090206001015490565b61037d61037836600461218b565b6107d8565b604080516001600160a01b03909316835260208301919091520161028e565b6102c66103aa3660046121ab565b61085b565b6103276103bd366004612129565b610883565b6102c66103d03660046121ab565b6108e6565b6102c661098c565b6102c66103eb366004612151565b61099e565b6103276103fe366004612112565b6109bd565b6102c66104113660046121d5565b610a12565b600f5460ff16610282565b6102c661042f366004612243565b610afb565b6102f0610442366004612112565b610b0e565b6102c661045536600461225c565b610b18565b6102d0610b2b565b610327610470366004612243565b610b3a565b6102c6610b7f565b600e546001600160a01b03166102f0565b6102f0610b91565b6102826104a43660046121ab565b610ba9565b6102c66104b73660046121d5565b610bd3565b6102d0610cae565b6102c66104d2366004612129565b610cbd565b6104df610cf9565b6040805165ffffffffffff93841681529290911660208301520161028e565b6103275f81565b6102c6610513366004612281565b610d4b565b6102c66105263660046122c3565b610d56565b6102d0610539366004612112565b610d6e565b61029c610dd3565b6102c6610e31565b610556610e70565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161028e565b6103277f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102c66105b13660046121ab565b610e91565b6102c6610eb9565b6102d0610ecb565b6102826105d43660046123a0565b610eda565b5f6105e382610f07565b92915050565b5f6105f381610f2b565b6001600160a01b03831661061a5760405163d92e233d60e01b815260040160405180910390fd5b6106248383610f35565b6040516001600160601b03831681526001600160a01b038416907fe12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf49060200160405180910390a2505050565b60605f805461067e906123c8565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa906123c8565b80156106f55780601f106106cc576101008083540402835291602001916106f5565b820191905f5260205f20905b8154815290600101906020018083116106d857829003601f168201915b5050505050905090565b5f61070982610fd7565b505f828152600460205260409020546001600160a01b03166105e3565b61073182823361100f565b5050565b5f61073f81610f2b565b61074761101c565b50565b6001600160a01b03821661077857604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610784838333611028565b9050836001600160a01b0316816001600160a01b0316146107d2576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161076f565b50505050565b5f828152600b6020526040812080548291906001600160a01b03811690600160a01b90046001600160601b03168161082b575050600a546001600160a01b03811690600160a01b90046001600160601b03165b5f6127106108426001600160601b03841689612414565b61084c919061242b565b92989297509195505050505050565b8161087957604051631fe1e13d60e11b815260040160405180910390fd5b610731828261103c565b5f61088d83610b3a565b82106108be5760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161076f565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b811580156109015750600e546001600160a01b038281169116145b15610982575f80610910610e70565b90925090506001600160a01b038216151580610932575065ffffffffffff8116155b8061094557504265ffffffffffff821610155b1561096d576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161076f565b5050600d805465ffffffffffff60a01b191690555b6107318282611060565b5f61099681610f2b565b610747611093565b6109b883838360405180602001604052805f815250610d56565b505050565b5f6109c760085490565b82106109ef5760405163295f44f760e21b81525f60048201526024810183905260440161076f565b60088281548110610a0257610a0261244a565b905f5260205f2001549050919050565b5f610a1c81610f2b565b5f60108054610a2a906123c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a56906123c8565b8015610aa15780601f10610a7857610100808354040283529160200191610aa1565b820191905f5260205f20905b815481529060010190602001808311610a8457829003601f168201915b50505050509050838360109182610ab99291906124a2565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1818585604051610aed9392919061255c565b60405180910390a150505050565b5f610b0581610f2b565b610731826110e5565b5f6105e382610fd7565b5f610b2281610f2b565b61073182611157565b60606010805461067e906123c8565b5f6001600160a01b038216610b64576040516322718ad960e21b81525f600482015260240161076f565b506001600160a01b03165f9081526003602052604090205490565b5f610b8981610f2b565b6107476111c6565b5f610ba4600e546001600160a01b031690565b905090565b5f918252600c602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610bdd81610f2b565b5f60118054610beb906123c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610c17906123c8565b8015610c625780601f10610c3957610100808354040283529160200191610c62565b820191905f5260205f20905b815481529060010190602001808311610c4557829003601f168201915b50505050509050838360119182610c7a9291906124a2565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16818585604051610aed9392919061255c565b60606001805461067e906123c8565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610ce781610f2b565b610cef611203565b6109b88383611227565b600e545f90600160d01b900465ffffffffffff168015158015610d2457504265ffffffffffff821610155b610d2f575f80610d43565b600e54600160a01b900465ffffffffffff16815b915091509091565b610731338383611240565b610d6184848461074a565b6107d23385858585611307565b6060610d7982610fd7565b505f610d83610b2b565b90505f815111610da15760405180602001604052805f815250610dcc565b80610dab8461142f565b604051602001610dbc9291906125b7565b6040516020818303038152906040525b9392505050565b600e545f90600160d01b900465ffffffffffff168015158015610dfd57504265ffffffffffff8216105b610e1857600d54600160d01b900465ffffffffffff16610e2b565b600e54600160a01b900465ffffffffffff165b91505090565b5f610e3a610e70565b509050336001600160a01b03821614610e6857604051636116401160e11b815233600482015260240161076f565b6107476114bf565b600d546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610eaf57604051631fe1e13d60e11b815260040160405180910390fd5b6107318282611555565b5f610ec381610f2b565b610747611579565b60606011805461067e906123c8565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166318a4c3c360e11b14806105e357506105e382611583565b61074781336115a7565b6127106001600160601b038216811015610f7457604051636f483d0960e01b81526001600160601b03831660048201526024810182905260440161076f565b6001600160a01b038316610f9d57604051635b6cc80560e11b81525f600482015260240161076f565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b5f818152600260205260408120546001600160a01b0316806105e357604051637e27328960e01b81526004810184905260240161076f565b6109b883838360016115e0565b6110265f806116e4565b565b5f6110348484846117a3565b949350505050565b5f828152600c602052604090206001015461105681610f2b565b6107d2838361186e565b6001600160a01b03811633146110895760405163334bd91960e11b815260040160405180910390fd5b6109b882826118d4565b61109b611910565b600f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f6110ee610dd3565b6110f742611933565b61110191906125cb565b905061110d8282611969565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f611161826119e6565b61116a42611933565b61117491906125cb565b905061118082826116e4565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6111ce611203565b600f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110c83390565b600f5460ff16156110265760405163d93c066560e01b815260040160405180910390fd5b610731828260405180602001604052805f815250611a2d565b6001600160a01b0383166112695760405163a9fbf51f60e01b81525f600482015260240161076f565b6001600160a01b03821661129b57604051630b61174360e31b81526001600160a01b038316600482015260240161076f565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561142857604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906113499088908890879087906004016125e9565b6020604051808303815f875af1925050508015611383575060408051601f3d908101601f1916820190925261138091810190612625565b60015b6113ea573d8080156113b0576040519150601f19603f3d011682016040523d82523d5f602084013e6113b5565b606091505b5080515f036113e257604051633250574960e11b81526001600160a01b038516600482015260240161076f565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461142657604051633250574960e11b81526001600160a01b038516600482015260240161076f565b505b5050505050565b60605f61143b83611a44565b60010190505f8167ffffffffffffffff81111561145a5761145a6122af565b6040519080825280601f01601f191660200182016040528015611484576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461148e57509392505050565b5f806114c9610e70565b915091506114de8165ffffffffffff16151590565b15806114f257504265ffffffffffff821610155b1561151a576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161076f565b6115355f611530600e546001600160a01b031690565b6118d4565b506115405f8361186e565b5050600d80546001600160d01b031916905550565b5f828152600c602052604090206001015461156f81610f2b565b6107d283836118d4565b6110265f80611969565b5f6001600160e01b03198216637965db0b60e01b14806105e357506105e382611b1b565b6115b18282610ba9565b6107315760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161076f565b80806115f457506001600160a01b03821615155b156116b5575f61160384610fd7565b90506001600160a01b0383161580159061162f5750826001600160a01b0316816001600160a01b031614155b801561164257506116408184610eda565b155b1561166b5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161076f565b81156116b35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600e54600160d01b900465ffffffffffff168015611766574265ffffffffffff8216101561173d57600e54600d80546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611766565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600e80546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b5f806117b0858585611b3f565b90506001600160a01b03811661180c5761180784600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61182f565b846001600160a01b0316816001600160a01b03161461182f5761182f8185611c31565b6001600160a01b03851661184b5761184684611cae565b611034565b846001600160a01b0316816001600160a01b031614611034576110348585611d55565b5f826118ca575f611887600e546001600160a01b031690565b6001600160a01b0316146118ae57604051631fe1e13d60e11b815260040160405180910390fd5b600e80546001600160a01b0319166001600160a01b0384161790555b610dcc8383611da3565b5f821580156118f05750600e546001600160a01b038381169116145b1561190657600e80546001600160a01b03191690555b610dcc8383611e34565b600f5460ff1661102657604051638dfc202b60e01b815260040160405180910390fd5b5f65ffffffffffff821115611965576040516306dfcc6560e41b8152603060048201526024810183905260440161076f565b5090565b5f611972610e70565b600d805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b0388161717905591506119b490508165ffffffffffff16151590565b156109b8576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a1505050565b5f806119f0610dd3565b90508065ffffffffffff168365ffffffffffff1611611a1857611a138382612640565b610dcc565b610dcc65ffffffffffff841662069780611e9f565b611a378383611eae565b6109b8335f858585611307565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611a825772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611aae576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611acc57662386f26fc10000830492506010015b6305f5e1008310611ae4576305f5e100830492506008015b6127108310611af857612710830492506004015b60648310611b0a576064830492506002015b600a83106105e35760010192915050565b5f6001600160e01b0319821663152a902d60e11b14806105e357506105e382611f0f565b5f828152600260205260408120546001600160a01b0390811690831615611b6b57611b6b818486611f33565b6001600160a01b03811615611ba557611b865f855f806115e0565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611bd3576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f611c3b83610b3a565b5f838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314611c90575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f90611cbf9060019061265e565b5f8381526009602052604081205460088054939450909284908110611ce657611ce661244a565b905f5260205f20015490508060088381548110611d0557611d0561244a565b5f918252602080832090910192909255828152600990915260408082208490558582528120556008805480611d3c57611d3c612671565b600190038181905f5260205f20015f9055905550505050565b5f6001611d6184610b3a565b611d6b919061265e565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b5f611dae8383610ba9565b611e2d575f838152600c602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611de53390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e3565b505f6105e3565b5f611e3f8383610ba9565b15611e2d575f838152600c602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e3565b5f828218828410028218610dcc565b6001600160a01b038216611ed757604051633250574960e11b81525f600482015260240161076f565b5f611ee383835f611028565b90506001600160a01b038116156109b8576040516339e3563760e11b81525f600482015260240161076f565b5f6001600160e01b0319821663780e9d6360e01b14806105e357506105e382611f97565b611f3e838383611fe6565b6109b8576001600160a01b038316611f6c57604051637e27328960e01b81526004810182905260240161076f565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161076f565b5f6001600160e01b031982166380ac58cd60e01b1480611fc757506001600160e01b03198216635b5e139f60e01b145b806105e357506301ffc9a760e01b6001600160e01b03198316146105e3565b5f6001600160a01b038316158015906110345750826001600160a01b0316846001600160a01b0316148061201f575061201f8484610eda565b806110345750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610747575f80fd5b5f6020828403121561206c575f80fd5b8135610dcc81612047565b80356001600160a01b038116811461208d575f80fd5b919050565b5f80604083850312156120a3575f80fd5b6120ac83612077565b915060208301356001600160601b03811681146120c7575f80fd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dcc60208301846120d2565b5f60208284031215612122575f80fd5b5035919050565b5f806040838503121561213a575f80fd5b61214383612077565b946020939093013593505050565b5f805f60608486031215612163575f80fd5b61216c84612077565b925061217a60208501612077565b929592945050506040919091013590565b5f806040838503121561219c575f80fd5b50508035926020909101359150565b5f80604083850312156121bc575f80fd5b823591506121cc60208401612077565b90509250929050565b5f80602083850312156121e6575f80fd5b823567ffffffffffffffff8111156121fc575f80fd5b8301601f8101851361220c575f80fd5b803567ffffffffffffffff811115612222575f80fd5b856020828401011115612233575f80fd5b6020919091019590945092505050565b5f60208284031215612253575f80fd5b610dcc82612077565b5f6020828403121561226c575f80fd5b813565ffffffffffff81168114610dcc575f80fd5b5f8060408385031215612292575f80fd5b61229b83612077565b9150602083013580151581146120c7575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f80608085870312156122d6575f80fd5b6122df85612077565b93506122ed60208601612077565b925060408501359150606085013567ffffffffffffffff81111561230f575f80fd5b8501601f8101871361231f575f80fd5b803567ffffffffffffffff811115612339576123396122af565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612368576123686122af565b60405281815282820160200189101561237f575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f80604083850312156123b1575f80fd5b6123ba83612077565b91506121cc60208401612077565b600181811c908216806123dc57607f821691505b6020821081036123fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105e3576105e3612400565b5f8261244557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b601f8211156109b857805f5260205f20601f840160051c810160208510156124835750805b601f840160051c820191505b81811015611428575f815560010161248f565b67ffffffffffffffff8311156124ba576124ba6122af565b6124ce836124c883546123c8565b8361245e565b5f601f8411600181146124ff575f85156124e85750838201355b5f19600387901b1c1916600186901b178355611428565b5f83815260208120601f198716915b8281101561252e578685013582556020948501946001909201910161250e565b508682101561254a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f61256e60408301866120d2565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f6110346125c583866125a0565b846125a0565b65ffffffffffff81811683821601908111156105e3576105e3612400565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061261b908301846120d2565b9695505050505050565b5f60208284031215612635575f80fd5b8151610dcc81612047565b65ffffffffffff82811682821603908111156105e3576105e3612400565b818103818111156105e3576105e3612400565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212204dfc414c3f7c881c72a70636389dd9e0c274b6ba5a9f6fa5fea06c294e82584a64736f6c634300081a0033", "linkReferences": {}, "deployedLinkReferences": {}, "immutableReferences": {}, "inputSourceName": "contracts/TricksforBoosterNFT.sol", - "buildInfoId": "solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6" + "buildInfoId": "solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee" } diff --git a/artifacts/contracts/TricksforBoosterStaking.sol/TricksforBoosterStaking.json b/artifacts/contracts/TricksforBoosterStaking.sol/TricksforBoosterStaking.json index 55ab9ef..e3e0c51 100644 --- a/artifacts/contracts/TricksforBoosterStaking.sol/TricksforBoosterStaking.json +++ b/artifacts/contracts/TricksforBoosterStaking.sol/TricksforBoosterStaking.json @@ -542,7 +542,7 @@ "linkReferences": {}, "deployedLinkReferences": {}, "immutableReferences": { - "9788": [ + "10252": [ { "length": 32, "start": 670 @@ -578,5 +578,5 @@ ] }, "inputSourceName": "contracts/TricksforBoosterStaking.sol", - "buildInfoId": "solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6" + "buildInfoId": "solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee" } diff --git a/artifacts/contracts/test/ReentrantERC721.sol/ReentrantERC721.json b/artifacts/contracts/test/ReentrantERC721.sol/ReentrantERC721.json index 158647e..e1109e7 100644 --- a/artifacts/contracts/test/ReentrantERC721.sol/ReentrantERC721.json +++ b/artifacts/contracts/test/ReentrantERC721.sol/ReentrantERC721.json @@ -113,7 +113,7 @@ "linkReferences": {}, "deployedLinkReferences": {}, "immutableReferences": { - "10388": [ + "10852": [ { "length": 32, "start": 261 @@ -125,5 +125,5 @@ ] }, "inputSourceName": "contracts/test/ReentrantERC721.sol", - "buildInfoId": "solc-0_8_26-2940a0bf7433fbb858475891fd4d03553b51db3322b46d171911ad73848093b6" + "buildInfoId": "solc-0_8_26-984e3da0ea7a4cb6316d037d7053b51a1bbe4566d9a30d0f82f96c5a0d9ed7ee" } diff --git a/contracts/TricksforBoosterNFT.sol b/contracts/TricksforBoosterNFT.sol index 65635f2..df40426 100644 --- a/contracts/TricksforBoosterNFT.sol +++ b/contracts/TricksforBoosterNFT.sol @@ -2,16 +2,23 @@ pragma solidity ^0.8.26; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; +import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol"; import "@openzeppelin/contracts/token/common/ERC2981.sol"; import "@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol"; import "@openzeppelin/contracts/utils/Pausable.sol"; /// @title TricksforBoosterNFT -/// @notice ERC-721 NFT collection for Tricksfor Booster items. +/// @notice ERC-721 Enumerable NFT collection for Tricksfor Booster items. /// OpenSea-compatible: supports tokenURI, contractURI, and ERC-2981 royalties. /// Minting is role-gated (MINTER_ROLE) and can be paused by the default admin. /// @dev Does not include staking logic — staking is handled by TricksforBoosterStaking. -contract TricksforBoosterNFT is ERC721, ERC2981, AccessControlDefaultAdminRules, Pausable { +contract TricksforBoosterNFT is + ERC721, + ERC721Enumerable, + ERC2981, + AccessControlDefaultAdminRules, + Pausable +{ // ------------------------------------------------------------------------- // Roles // ------------------------------------------------------------------------- @@ -148,6 +155,23 @@ contract TricksforBoosterNFT is ERC721, ERC2981, AccessControlDefaultAdminRules, return _baseTokenURI; } + /// @dev Keeps ERC-721 ownership and enumerable indexes synchronized on mint and transfer. + function _update(address to, uint256 tokenId, address auth) + internal + override(ERC721, ERC721Enumerable) + returns (address) + { + return super._update(to, tokenId, auth); + } + + /// @dev Resolves the balance hook shared by ERC721 and ERC721Enumerable. + function _increaseBalance(address account, uint128 value) + internal + override(ERC721, ERC721Enumerable) + { + super._increaseBalance(account, value); + } + // ------------------------------------------------------------------------- // Interface support // ------------------------------------------------------------------------- @@ -156,7 +180,7 @@ contract TricksforBoosterNFT is ERC721, ERC2981, AccessControlDefaultAdminRules, function supportsInterface(bytes4 interfaceId) public view - override(ERC721, ERC2981, AccessControlDefaultAdminRules) + override(ERC721, ERC721Enumerable, ERC2981, AccessControlDefaultAdminRules) returns (bool) { return super.supportsInterface(interfaceId); diff --git a/docs/README.md b/docs/README.md index 0163de1..12a982f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -63,8 +63,8 @@ This index provides a single entry point to all implementation guidance, referen | Document | Description | |---|---| -| [OpenSea Readiness Checklist](opensea-readiness-checklist.md) | Deployment-ready checklist covering ERC-721 compliance, metadata output, `tokenURI` / `contractURI` / ERC-2981 royalty configuration, staking UX implications, and pre-launch smoke tests | -| [OpenSea Compatibility Skill](ai/skills/opensea-compatibility-skill.md) | Pre-PR checklist covering ERC-721 compliance, metadata output, `tokenURI` / `contractURI` / ERC-2981 royalty support, and staking UX implications for marketplace listings | +| [OpenSea Readiness Checklist](opensea-readiness-checklist.md) | Deployment-ready checklist covering ERC-721 and Enumerable interfaces, metadata output, `tokenURI` / `contractURI` / ERC-2981 royalty configuration, staking UX implications, and pre-launch smoke tests | +| [OpenSea Compatibility Skill](ai/skills/opensea-compatibility-skill.md) | Pre-PR checklist covering ERC-721 and Enumerable interfaces, metadata output, `tokenURI` / `contractURI` / ERC-2981 royalty support, and staking UX implications for marketplace listings | --- diff --git a/docs/ai/agent-brief.md b/docs/ai/agent-brief.md index 612a763..36fb338 100644 --- a/docs/ai/agent-brief.md +++ b/docs/ai/agent-brief.md @@ -72,7 +72,8 @@ Before writing or modifying any contract code, work through the following: - Do not add reward logic, token payouts, or point accumulation to the contracts. - Do not remove or rename event parameters without flagging it as a breaking change. - Do not use `require` with long strings in hot paths — prefer custom errors (`error Unauthorized()`). -- Do not use `ERC721Enumerable` unless on-chain enumeration is explicitly justified. +- Preserve the explicitly approved `ERC721Enumerable` support for frontend wallet and collection + discovery. Document its gas cost and unstable ordering; do not describe it as required by OpenSea. - Do not add cleverly abstracted code when explicit logic is clearer. - Do not generate migrations or deployment scripts without confirming they align with the deployment assumptions in `memory.md`. diff --git a/docs/ai/architecture-guardrails.md b/docs/ai/architecture-guardrails.md index f4c2a0e..0c6af90 100644 --- a/docs/ai/architecture-guardrails.md +++ b/docs/ai/architecture-guardrails.md @@ -38,7 +38,7 @@ Contract inheritance chains must be kept short and purposeful. Prefer compositio ### Rule 5: Use OpenZeppelin battle-tested components Always prefer OpenZeppelin contracts over custom implementations for: -- `ERC721` base contract +- `ERC721Enumerable` for the NFT contract's required wallet and global enumeration reads - `Ownable` / `AccessControl` for admin functions - `ReentrancyGuard` for external call protection - `Pausable` for emergency stop diff --git a/docs/ai/memory.md b/docs/ai/memory.md index a00d420..a9234bd 100644 --- a/docs/ai/memory.md +++ b/docs/ai/memory.md @@ -115,8 +115,10 @@ The `TricksforBoosterNFT` contract must maintain the following for marketplace c - `contractURI()` — returns collection-level metadata URI (OpenSea extension) - `royaltyInfo(uint256 tokenId, uint256 salePrice)` — returns royalty recipient and amount (ERC-2981) - `Transfer` events on all ownership changes — required by ERC-721 and indexed by marketplaces -- `supportsInterface` correctly advertises ERC-721, ERC-165, and ERC-2981 support -- `ERC721Enumerable` is **not** used by default (adds gas cost without OpenSea benefit) +- `supportsInterface` correctly advertises ERC-721, ERC-721 Metadata, ERC-721 Enumerable, ERC-165, + and ERC-2981 support +- `ERC721Enumerable` is intentionally enabled for direct frontend wallet and collection discovery. + It is not required by OpenSea, adds mint/transfer gas cost, and does not guarantee stable order. --- diff --git a/docs/ai/repository-context.md b/docs/ai/repository-context.md index 1855a7e..98ccef1 100644 --- a/docs/ai/repository-context.md +++ b/docs/ai/repository-context.md @@ -32,7 +32,7 @@ This repository contains the Solidity smart contracts and Nethereum integration | Contract | Responsibility | |---|---| -| `BoosterNFT` (ERC-721) | Minting, ownership, metadata, royalties, OpenSea compatibility | +| `BoosterNFT` (ERC-721 Enumerable) | Minting, ownership, enumeration, metadata, royalties, OpenSea compatibility | | `BoosterStaking` | NFT custody during staking period, stake/unstake event emission | These contracts are **intentionally separate**. Do not merge them. @@ -78,7 +78,9 @@ The `BoosterNFT` contract must: - Implement `contractURI()` returning collection-level metadata (OpenSea extension) - Implement ERC-2981 (`royaltyInfo`) for on-chain royalty information - Emit `Transfer` events on all ownership changes (standard ERC-721 requirement) -- Not use `ERC721Enumerable` by default unless on-chain enumeration is justified — it increases gas costs without benefiting OpenSea compatibility +- Implement ERC-721 Enumerable for direct frontend wallet and collection discovery. This is a + project UX decision, not an OpenSea requirement, and its additional mint/transfer gas cost is + accepted. Enumeration order must never be treated as stable. --- diff --git a/docs/ai/skills/opensea-compatibility-skill.md b/docs/ai/skills/opensea-compatibility-skill.md index 17a789d..9435632 100644 --- a/docs/ai/skills/opensea-compatibility-skill.md +++ b/docs/ai/skills/opensea-compatibility-skill.md @@ -25,11 +25,13 @@ The `TricksforBoosterNFT` contract must remain compatible with OpenSea and equiv ### ERC-721 Compatibility - [ ] The contract still correctly implements the ERC-721 standard interface (`IERC721`) -- [ ] `supportsInterface(bytes4 interfaceId)` correctly returns `true` for ERC-721 (`0x80ac58cd`), ERC-165 (`0x01ffc9a7`), ERC-721 Metadata (`IERC721Metadata`, `0x5b5e139f`), and ERC-2981 (`0x2a55205a`) so marketplace metadata detection continues to work as expected +- [ ] `supportsInterface(bytes4 interfaceId)` correctly returns `true` for ERC-721 (`0x80ac58cd`), ERC-165 (`0x01ffc9a7`), ERC-721 Metadata (`IERC721Metadata`, `0x5b5e139f`), ERC-721 Enumerable (`0x780e9d63`), and ERC-2981 (`0x2a55205a`) so marketplace and frontend interface detection continues to work as expected - [ ] `Transfer` events are emitted on all ownership changes (mint, transfer, burn) — required by ERC-721 and indexed by marketplaces - [ ] `Approval` and `ApprovalForAll` events are emitted correctly - [ ] The staking contract's use of `transferFrom` does not break marketplace approval flows (the NFT contract itself remains standard) -- [ ] `ERC721Enumerable` is not added without explicit justification (it increases gas cost without OpenSea benefit) +- [ ] ERC-721 Enumerable reads are preserved for direct frontend discovery, with tests for mint, + transfer, staking custody, and out-of-range indexes; code and documentation do not describe it + as an OpenSea requirement ### Metadata Output - [ ] Token metadata follows the OpenSea metadata standard: `name`, `description`, `image`, and `attributes` fields are present and correctly populated diff --git a/docs/ai/task-templates/solidity-task-template.md b/docs/ai/task-templates/solidity-task-template.md index 974634c..6e1933e 100644 --- a/docs/ai/task-templates/solidity-task-template.md +++ b/docs/ai/task-templates/solidity-task-template.md @@ -95,7 +95,8 @@ Before implementing, confirm the following: - [ ] **Indexer impact**: Will the backend indexer still reconstruct staking state correctly after this change? - [ ] **Nethereum DTO impact**: Does this change require updating typed event DTOs or function message classes? -- [ ] **OpenSea impact**: Does this change affect `tokenURI`, `contractURI`, or ERC-2981 royalty support? +- [ ] **OpenSea / NFT interface impact**: Does this change affect `tokenURI`, `contractURI`, + ERC-721 Enumerable, or ERC-2981 royalty support? - [ ] **ABI/BIN artifact**: Does this change require regenerating and committing updated ABI/BIN artifacts? - [ ] **Read method alignment**: Are all `isStaked` / `stakedOwnerOf` / other read methods still consistent with the new event semantics? diff --git a/docs/backend-integration-contract.md b/docs/backend-integration-contract.md index b594ade..c40413e 100644 --- a/docs/backend-integration-contract.md +++ b/docs/backend-integration-contract.md @@ -13,6 +13,7 @@ The smart contracts are the authoritative source of truth for the following: | Responsibility | Contract | |---|---| | Booster NFT ownership (who holds which token) | `TricksforBoosterNFT` (ERC-721) | +| Current NFT enumeration (`totalSupply`, `tokenByIndex`, `tokenOfOwnerByIndex`) | `TricksforBoosterNFT` (ERC-721 Enumerable) | | Stake / unstake state transitions | `TricksforBoosterStaking` | | Event emission on every state change | `TricksforBoosterStaking` | | Current-state read methods (`isStaked`, `stakedOwnerOf`) | `TricksforBoosterStaking` | @@ -38,6 +39,19 @@ Both events are emitted exactly once per state transition. There are no silent s These read methods always reflect on-chain truth at the queried block. They are guaranteed to be consistent with the event log: if a `TokenStaked` event exists for a token with no subsequent `TokenUnstaked` event, `isStaked(tokenId)` will return `true`. +### NFT enumeration and player portfolios + +Use `balanceOf(wallet)` plus `tokenOfOwnerByIndex(wallet, index)` to enumerate NFTs currently held +by a wallet. Use `totalSupply()` plus `tokenByIndex(index)` for collection-wide reconciliation. +Enumeration order is unspecified and may change after transfers, so callers must not use the index +as a persistent token identifier. + +Custodial staking changes the ERC-721 owner to the staking contract. Consequently, +`tokenOfOwnerByIndex(player, ...)` contains only the player's unstaked NFTs. To build a complete +player portfolio, combine that result with `getWalletStakedTokens(player)` from the staking +contract (or the confirmed staking event index). Do not attribute every token enumerated under the +staking contract to the staking-contract owner; resolve its original staker through staking state. + --- ## Backend Responsibilities diff --git a/docs/deployment.md b/docs/deployment.md index 3ce6db5..7899fed 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -232,7 +232,8 @@ Do not call the deployment successful until all of these are checked: - workflow summary contains both non-zero addresses; - both deployment transaction receipts succeeded; - deployed runtime bytecode exists at both addresses; -- NFT name, symbol, URIs, interfaces, royalty result, admin, minter, and pause state are correct; +- NFT name, symbol, URIs, ERC-165/ERC-721/ERC-721 Enumerable/ERC-2981 interfaces, royalty result, + admin, minter, and pause state are correct; - staking owner and NFT linkage are correct; - verification transcripts show success when verification was enabled; - `smoke-result.json` contains mint/approve/stake/unstake transaction hashes; diff --git a/docs/indexing-spec.md b/docs/indexing-spec.md index c2075b3..da24359 100644 --- a/docs/indexing-spec.md +++ b/docs/indexing-spec.md @@ -57,6 +57,11 @@ The `TricksforBoosterNFT` contract emits standard ERC-721 `Transfer` events on e - Tracing the full ownership history of a token - Audit and debugging purposes +The NFT contract also implements ERC-721 Enumerable. `totalSupply`, `tokenByIndex`, and +`tokenOfOwnerByIndex` may be used for bounded current-state reconciliation, but they do not provide +history and their index order is not stable. A staked token enumerates under the staking contract; +use staking state to resolve the original staker. + --- ## Event Identity diff --git a/docs/nft-collection-spec.md b/docs/nft-collection-spec.md index 15ce541..9b57d8e 100644 --- a/docs/nft-collection-spec.md +++ b/docs/nft-collection-spec.md @@ -40,6 +40,20 @@ optional metadata `Chain` attributes, refer to the chain naming table in - Each contract contains tokens from **all three game themes**: `coin`, `dice`, and `rps`. - Contracts are independent. There is no cross-chain bridging or token sharing. - Token IDs start at `1` and run sequentially to `600` within each contract. +- The contract implements ERC-721 Enumerable (`IERC721Enumerable`, interface ID `0x780e9d63`). + +### 2.1 Enumeration behavior + +Frontends may discover currently held NFTs with `balanceOf(owner)` and +`tokenOfOwnerByIndex(owner, index)`, and may inspect the minted collection with `totalSupply()` and +`tokenByIndex(index)`. Enumeration reports minted on-chain supply; it does not enforce or replace +the documented 600-token allocation policy. + +Enumeration order is not stable and must not be treated as token-ID or mint order. Transfers use +swap-and-pop indexing, so clients must read indexes from `0` through the latest balance or supply +minus one and tolerate the list changing between blocks. While an NFT is staked, its ERC-721 owner +is the staking contract. Use `getWalletStakedTokens(wallet)` to discover tokens beneficially staked +by the original wallet. --- diff --git a/docs/opensea-readiness-checklist.md b/docs/opensea-readiness-checklist.md index 4da458e..5d89f62 100644 --- a/docs/opensea-readiness-checklist.md +++ b/docs/opensea-readiness-checklist.md @@ -6,15 +6,19 @@ This checklist must be completed before deploying the `TricksforBoosterNFT` coll ## 1. ERC-721 Compliance -- [ ] `supportsInterface` returns `true` for all required interface IDs: +- [ ] `supportsInterface` returns `true` for all project-advertised interface IDs (Enumerable is a + Tricksfor frontend feature, not an OpenSea requirement): - ERC-165: `0x01ffc9a7` - ERC-721: `0x80ac58cd` - ERC-721 Metadata: `0x5b5e139f` + - ERC-721 Enumerable: `0x780e9d63` - ERC-2981 (royalties): `0x2a55205a` - [ ] `Transfer` events are emitted for every ownership change (mint, transfer, burn) as required by ERC-721 and expected by marketplace indexers - [ ] `Approval` and `ApprovalForAll` events are emitted correctly - [ ] `ownerOf(tokenId)` returns the correct current owner for every minted token - [ ] `balanceOf(address)` returns the correct token count per wallet +- [ ] `totalSupply()`, `tokenByIndex(index)`, and `tokenOfOwnerByIndex(owner, index)` track mint and transfer custody correctly +- [ ] Frontend code does not assume enumerable index order is stable - [ ] `tokenURI(tokenId)` reverts for unminted token IDs (OpenZeppelin default behaviour; behaviour is consistent with contract design) --- @@ -132,9 +136,12 @@ Run these checks against the deployed contract on a testnet before deploying to - [ ] Call `royaltyInfo(1, 10000)` — confirm the result is `(royaltyReceiver, 500)` for a 5% royalty (or the configured value) - [ ] Call `supportsInterface(0x2a55205a)` — confirm it returns `true` (ERC-2981) - [ ] Call `supportsInterface(0x80ac58cd)` — confirm it returns `true` (ERC-721) +- [ ] Call `supportsInterface(0x780e9d63)` — confirm it returns `true` (ERC-721 Enumerable) +- [ ] Confirm `totalSupply()` includes token 1 and `tokenOfOwnerByIndex(testWallet, index)` can find it - [ ] Import the collection on OpenSea testnet and confirm the collection and token metadata render correctly - [ ] Transfer the test token to a second wallet and confirm `ownerOf(1)` reflects the new owner - [ ] Stake the test token and confirm `isStaked(1)` returns `true` and the token no longer shows in the original wallet on OpenSea +- [ ] While staked, confirm enumerable custody moves from the test wallet to the staking contract - [ ] Unstake the test token and confirm `isStaked(1)` returns `false` and the token reappears in the original wallet --- diff --git a/docs/security-review-2026-07-19.md b/docs/security-review-2026-07-19.md index 1cbb5ef..c1d8e93 100644 --- a/docs/security-review-2026-07-19.md +++ b/docs/security-review-2026-07-19.md @@ -63,3 +63,18 @@ slither . \ --fail-medium \ --json slither-report.json ``` + +## Post-review change — ERC-721 Enumerable (2026-07-22) + +`TricksforBoosterNFT` now inherits OpenZeppelin `ERC721Enumerable` to support direct frontend +wallet and collection discovery. This adds standard enumerable storage writes to mint and transfer +operations, so those operations cost more gas than the reviewed non-enumerable version. The +contract still uses explicit single-token minting; OpenZeppelin's unsupported batch-mint path is +not exposed. + +Tests cover interface detection, global and per-owner enumeration, transfer updates, out-of-range +indexes, and Nethereum enumeration across stake/unstake custody. Enumeration order is explicitly +unspecified. The updated run passed 102 Hardhat tests with 95.83% NFT line coverage and all 76 .NET +tests (31 package unit, 37 deployment, and 8 Nethereum integration). This addendum records the +focused change and does not claim a new full Slither or third-party audit until the reproduction +commands above are rerun on the updated commit. diff --git a/src/Tricksfor.Blockchain.Booster.Deploy/PostDeploySanityChecker.cs b/src/Tricksfor.Blockchain.Booster.Deploy/PostDeploySanityChecker.cs index 4ddbca9..264ca09 100644 --- a/src/Tricksfor.Blockchain.Booster.Deploy/PostDeploySanityChecker.cs +++ b/src/Tricksfor.Blockchain.Booster.Deploy/PostDeploySanityChecker.cs @@ -86,6 +86,7 @@ public async Task> RunAsync( { ("ERC-165", "01ffc9a7"), ("ERC-721", "80ac58cd"), + ("ERC-721 Enumerable", "780e9d63"), ("ERC-2981", "2a55205a"), }) { diff --git a/src/Tricksfor.Blockchain.Booster.Deploy/SmokeRunner.cs b/src/Tricksfor.Blockchain.Booster.Deploy/SmokeRunner.cs index db71aa0..ec47990 100644 --- a/src/Tricksfor.Blockchain.Booster.Deploy/SmokeRunner.cs +++ b/src/Tricksfor.Blockchain.Booster.Deploy/SmokeRunner.cs @@ -63,9 +63,37 @@ public async Task RunAsync() var supportsErc165 = await nft.SupportsInterfaceQueryAsync(Convert.FromHexString("01ffc9a7")); var supportsErc721 = await nft.SupportsInterfaceQueryAsync(Convert.FromHexString("80ac58cd")); + var supportsErc721Enumerable = await nft.SupportsInterfaceQueryAsync(Convert.FromHexString("780e9d63")); var supportsErc2981 = await nft.SupportsInterfaceQueryAsync(Convert.FromHexString("2a55205a")); - if (!supportsErc165 || !supportsErc721 || !supportsErc2981) - throw new DeploymentException("Smoke interface validation failed for ERC-165, ERC-721, or ERC-2981."); + if (!supportsErc165 || !supportsErc721 || !supportsErc721Enumerable || !supportsErc2981) + throw new DeploymentException( + "Smoke interface validation failed for ERC-165, ERC-721, ERC-721 Enumerable, or ERC-2981."); + + var totalSupply = await nft.TotalSupplyQueryAsync(); + var ownerBalance = await nft.BalanceOfQueryAsync(account.Address); + var ownerEnumerationContainsToken = false; + for (var index = BigInteger.Zero; index < ownerBalance; index++) + { + if (await nft.TokenOfOwnerByIndexQueryAsync(account.Address, index) == tokenId) + { + ownerEnumerationContainsToken = true; + break; + } + } + if (!ownerEnumerationContainsToken) + throw new DeploymentException("Smoke token is missing from tokenOfOwnerByIndex enumeration."); + + var globalEnumerationContainsToken = false; + for (var index = BigInteger.Zero; index < totalSupply; index++) + { + if (await nft.TokenByIndexQueryAsync(index) == tokenId) + { + globalEnumerationContainsToken = true; + break; + } + } + if (!globalEnumerationContainsToken) + throw new DeploymentException("Smoke token is missing from tokenByIndex enumeration."); var royalty = await nft.RoyaltyInfoQueryAsync(tokenId, 10_000); var expectedRoyaltyReceiver = string.IsNullOrWhiteSpace(_config.Nft.RoyaltyReceiver) @@ -108,7 +136,11 @@ public async Task RunAsync() tokenUri, supportsErc165, supportsErc721, + supportsErc721Enumerable, supportsErc2981, + totalSupply = totalSupply.ToString(), + ownerEnumerationContainsToken, + globalEnumerationContainsToken, royaltyReceiver = royalty.Receiver, royaltyAmount = royalty.RoyaltyAmount.ToString(), }, diff --git a/src/Tricksfor.Blockchain.Booster/Abis/TricksforBoosterNFTAbi.cs b/src/Tricksfor.Blockchain.Booster/Abis/TricksforBoosterNFTAbi.cs index 7d196c9..fbf38a9 100644 --- a/src/Tricksfor.Blockchain.Booster/Abis/TricksforBoosterNFTAbi.cs +++ b/src/Tricksfor.Blockchain.Booster/Abis/TricksforBoosterNFTAbi.cs @@ -5,8 +5,8 @@ namespace Tricksfor.Blockchain.Booster.Abis /// internal static class TricksforBoosterNFTAbi { - public const string Abi = @"[{""inputs"":[{""internalType"":""string"",""name"":""name_"",""type"":""string""},{""internalType"":""string"",""name"":""symbol_"",""type"":""string""},{""internalType"":""string"",""name"":""baseURI_"",""type"":""string""},{""internalType"":""string"",""name"":""contractMetadataURI_"",""type"":""string""},{""internalType"":""address"",""name"":""royaltyReceiver_"",""type"":""address""},{""internalType"":""uint96"",""name"":""royaltyFeeBasisPoints_"",""type"":""uint96""},{""internalType"":""address"",""name"":""initialAdmin_"",""type"":""address""},{""internalType"":""address"",""name"":""initialMinter_"",""type"":""address""},{""internalType"":""uint48"",""name"":""defaultAdminDelay_"",""type"":""uint48""}],""stateMutability"":""nonpayable"",""type"":""constructor""},{""inputs"":[],""name"":""AccessControlBadConfirmation"",""type"":""error""},{""inputs"":[{""internalType"":""uint48"",""name"":""schedule"",""type"":""uint48""}],""name"":""AccessControlEnforcedDefaultAdminDelay"",""type"":""error""},{""inputs"":[],""name"":""AccessControlEnforcedDefaultAdminRules"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""defaultAdmin"",""type"":""address""}],""name"":""AccessControlInvalidDefaultAdmin"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""account"",""type"":""address""},{""internalType"":""bytes32"",""name"":""neededRole"",""type"":""bytes32""}],""name"":""AccessControlUnauthorizedAccount"",""type"":""error""},{""inputs"":[{""internalType"":""uint256"",""name"":""numerator"",""type"":""uint256""},{""internalType"":""uint256"",""name"":""denominator"",""type"":""uint256""}],""name"":""ERC2981InvalidDefaultRoyalty"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""receiver"",""type"":""address""}],""name"":""ERC2981InvalidDefaultRoyaltyReceiver"",""type"":""error""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""},{""internalType"":""uint256"",""name"":""numerator"",""type"":""uint256""},{""internalType"":""uint256"",""name"":""denominator"",""type"":""uint256""}],""name"":""ERC2981InvalidTokenRoyalty"",""type"":""error""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""},{""internalType"":""address"",""name"":""receiver"",""type"":""address""}],""name"":""ERC2981InvalidTokenRoyaltyReceiver"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""sender"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""},{""internalType"":""address"",""name"":""owner"",""type"":""address""}],""name"":""ERC721IncorrectOwner"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""operator"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""ERC721InsufficientApproval"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""approver"",""type"":""address""}],""name"":""ERC721InvalidApprover"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""operator"",""type"":""address""}],""name"":""ERC721InvalidOperator"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""owner"",""type"":""address""}],""name"":""ERC721InvalidOwner"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""receiver"",""type"":""address""}],""name"":""ERC721InvalidReceiver"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""sender"",""type"":""address""}],""name"":""ERC721InvalidSender"",""type"":""error""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""ERC721NonexistentToken"",""type"":""error""},{""inputs"":[],""name"":""EnforcedPause"",""type"":""error""},{""inputs"":[],""name"":""ExpectedPause"",""type"":""error""},{""inputs"":[{""internalType"":""uint8"",""name"":""bits"",""type"":""uint8""},{""internalType"":""uint256"",""name"":""value"",""type"":""uint256""}],""name"":""SafeCastOverflowedUintDowncast"",""type"":""error""},{""inputs"":[],""name"":""ZeroAddress"",""type"":""error""},{""anonymous"":false,""inputs"":[{""indexed"":true,""internalType"":""address"",""name"":""owner"",""type"":""address""},{""indexed"":true,""internalType"":""address"",""name"":""approved"",""type"":""address""},{""indexed"":true,""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""Approval"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":true,""internalType"":""address"",""name"":""owner"",""type"":""address""},{""indexed"":true,""internalType"":""address"",""name"":""operator"",""type"":""address""},{""indexed"":false,""internalType"":""bool"",""name"":""approved"",""type"":""bool""}],""name"":""ApprovalForAll"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":false,""internalType"":""string"",""name"":""previousURI"",""type"":""string""},{""indexed"":false,""internalType"":""string"",""name"":""newURI"",""type"":""string""}],""name"":""BaseURIUpdated"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":false,""internalType"":""string"",""name"":""previousURI"",""type"":""string""},{""indexed"":false,""internalType"":""string"",""name"":""newURI"",""type"":""string""}],""name"":""ContractURIUpdated"",""type"":""event""},{""anonymous"":false,""inputs"":[],""name"":""DefaultAdminDelayChangeCanceled"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":false,""internalType"":""uint48"",""name"":""newDelay"",""type"":""uint48""},{""indexed"":false,""internalType"":""uint48"",""name"":""effectSchedule"",""type"":""uint48""}],""name"":""DefaultAdminDelayChangeScheduled"",""type"":""event""},{""anonymous"":false,""inputs"":[],""name"":""DefaultAdminTransferCanceled"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":true,""internalType"":""address"",""name"":""newAdmin"",""type"":""address""},{""indexed"":false,""internalType"":""uint48"",""name"":""acceptSchedule"",""type"":""uint48""}],""name"":""DefaultAdminTransferScheduled"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":true,""internalType"":""address"",""name"":""receiver"",""type"":""address""},{""indexed"":false,""internalType"":""uint96"",""name"":""feeBasisPoints"",""type"":""uint96""}],""name"":""DefaultRoyaltyUpdated"",""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"":true,""internalType"":""uint256"",""name"":""tokenId"",""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"":""acceptDefaultAdminTransfer"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""to"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""approve"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""owner"",""type"":""address""}],""name"":""balanceOf"",""outputs"":[{""internalType"":""uint256"",""name"":"""",""type"":""uint256""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""baseURI"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""newAdmin"",""type"":""address""}],""name"":""beginDefaultAdminTransfer"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""cancelDefaultAdminTransfer"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""uint48"",""name"":""newDelay"",""type"":""uint48""}],""name"":""changeDefaultAdminDelay"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""contractURI"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""defaultAdmin"",""outputs"":[{""internalType"":""address"",""name"":"""",""type"":""address""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""defaultAdminDelay"",""outputs"":[{""internalType"":""uint48"",""name"":"""",""type"":""uint48""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""defaultAdminDelayIncreaseWait"",""outputs"":[{""internalType"":""uint48"",""name"":"""",""type"":""uint48""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""getApproved"",""outputs"":[{""internalType"":""address"",""name"":"""",""type"":""address""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""bytes32"",""name"":""role"",""type"":""bytes32""}],""name"":""getRoleAdmin"",""outputs"":[{""internalType"":""bytes32"",""name"":"""",""type"":""bytes32""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""bytes32"",""name"":""role"",""type"":""bytes32""},{""internalType"":""address"",""name"":""account"",""type"":""address""}],""name"":""grantRole"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""bytes32"",""name"":""role"",""type"":""bytes32""},{""internalType"":""address"",""name"":""account"",""type"":""address""}],""name"":""hasRole"",""outputs"":[{""internalType"":""bool"",""name"":"""",""type"":""bool""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""owner"",""type"":""address""},{""internalType"":""address"",""name"":""operator"",""type"":""address""}],""name"":""isApprovedForAll"",""outputs"":[{""internalType"":""bool"",""name"":"""",""type"":""bool""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""name"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""owner"",""outputs"":[{""internalType"":""address"",""name"":"""",""type"":""address""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""ownerOf"",""outputs"":[{""internalType"":""address"",""name"":"""",""type"":""address""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""pause"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""paused"",""outputs"":[{""internalType"":""bool"",""name"":"""",""type"":""bool""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""pendingDefaultAdmin"",""outputs"":[{""internalType"":""address"",""name"":""newAdmin"",""type"":""address""},{""internalType"":""uint48"",""name"":""schedule"",""type"":""uint48""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""pendingDefaultAdminDelay"",""outputs"":[{""internalType"":""uint48"",""name"":""newDelay"",""type"":""uint48""},{""internalType"":""uint48"",""name"":""schedule"",""type"":""uint48""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""bytes32"",""name"":""role"",""type"":""bytes32""},{""internalType"":""address"",""name"":""account"",""type"":""address""}],""name"":""renounceRole"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""bytes32"",""name"":""role"",""type"":""bytes32""},{""internalType"":""address"",""name"":""account"",""type"":""address""}],""name"":""revokeRole"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""rollbackDefaultAdminDelay"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""},{""internalType"":""uint256"",""name"":""salePrice"",""type"":""uint256""}],""name"":""royaltyInfo"",""outputs"":[{""internalType"":""address"",""name"":""receiver"",""type"":""address""},{""internalType"":""uint256"",""name"":""amount"",""type"":""uint256""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""to"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""safeMint"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""from"",""type"":""address""},{""internalType"":""address"",""name"":""to"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""safeTransferFrom"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""from"",""type"":""address""},{""internalType"":""address"",""name"":""to"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""},{""internalType"":""bytes"",""name"":""data"",""type"":""bytes""}],""name"":""safeTransferFrom"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""operator"",""type"":""address""},{""internalType"":""bool"",""name"":""approved"",""type"":""bool""}],""name"":""setApprovalForAll"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""string"",""name"":""baseURI_"",""type"":""string""}],""name"":""setBaseURI"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""string"",""name"":""contractMetadataURI_"",""type"":""string""}],""name"":""setContractURI"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""receiver"",""type"":""address""},{""internalType"":""uint96"",""name"":""feeBasisPoints"",""type"":""uint96""}],""name"":""setRoyaltyInfo"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""bytes4"",""name"":""interfaceId"",""type"":""bytes4""}],""name"":""supportsInterface"",""outputs"":[{""internalType"":""bool"",""name"":"""",""type"":""bool""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""symbol"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""tokenURI"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""from"",""type"":""address""},{""internalType"":""address"",""name"":""to"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""transferFrom"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""unpause"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""}]"; + public const string Abi = @"[{""inputs"":[{""internalType"":""string"",""name"":""name_"",""type"":""string""},{""internalType"":""string"",""name"":""symbol_"",""type"":""string""},{""internalType"":""string"",""name"":""baseURI_"",""type"":""string""},{""internalType"":""string"",""name"":""contractMetadataURI_"",""type"":""string""},{""internalType"":""address"",""name"":""royaltyReceiver_"",""type"":""address""},{""internalType"":""uint96"",""name"":""royaltyFeeBasisPoints_"",""type"":""uint96""},{""internalType"":""address"",""name"":""initialAdmin_"",""type"":""address""},{""internalType"":""address"",""name"":""initialMinter_"",""type"":""address""},{""internalType"":""uint48"",""name"":""defaultAdminDelay_"",""type"":""uint48""}],""stateMutability"":""nonpayable"",""type"":""constructor""},{""inputs"":[],""name"":""AccessControlBadConfirmation"",""type"":""error""},{""inputs"":[{""internalType"":""uint48"",""name"":""schedule"",""type"":""uint48""}],""name"":""AccessControlEnforcedDefaultAdminDelay"",""type"":""error""},{""inputs"":[],""name"":""AccessControlEnforcedDefaultAdminRules"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""defaultAdmin"",""type"":""address""}],""name"":""AccessControlInvalidDefaultAdmin"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""account"",""type"":""address""},{""internalType"":""bytes32"",""name"":""neededRole"",""type"":""bytes32""}],""name"":""AccessControlUnauthorizedAccount"",""type"":""error""},{""inputs"":[{""internalType"":""uint256"",""name"":""numerator"",""type"":""uint256""},{""internalType"":""uint256"",""name"":""denominator"",""type"":""uint256""}],""name"":""ERC2981InvalidDefaultRoyalty"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""receiver"",""type"":""address""}],""name"":""ERC2981InvalidDefaultRoyaltyReceiver"",""type"":""error""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""},{""internalType"":""uint256"",""name"":""numerator"",""type"":""uint256""},{""internalType"":""uint256"",""name"":""denominator"",""type"":""uint256""}],""name"":""ERC2981InvalidTokenRoyalty"",""type"":""error""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""},{""internalType"":""address"",""name"":""receiver"",""type"":""address""}],""name"":""ERC2981InvalidTokenRoyaltyReceiver"",""type"":""error""},{""inputs"":[],""name"":""ERC721EnumerableForbiddenBatchMint"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""sender"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""},{""internalType"":""address"",""name"":""owner"",""type"":""address""}],""name"":""ERC721IncorrectOwner"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""operator"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""ERC721InsufficientApproval"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""approver"",""type"":""address""}],""name"":""ERC721InvalidApprover"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""operator"",""type"":""address""}],""name"":""ERC721InvalidOperator"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""owner"",""type"":""address""}],""name"":""ERC721InvalidOwner"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""receiver"",""type"":""address""}],""name"":""ERC721InvalidReceiver"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""sender"",""type"":""address""}],""name"":""ERC721InvalidSender"",""type"":""error""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""ERC721NonexistentToken"",""type"":""error""},{""inputs"":[{""internalType"":""address"",""name"":""owner"",""type"":""address""},{""internalType"":""uint256"",""name"":""index"",""type"":""uint256""}],""name"":""ERC721OutOfBoundsIndex"",""type"":""error""},{""inputs"":[],""name"":""EnforcedPause"",""type"":""error""},{""inputs"":[],""name"":""ExpectedPause"",""type"":""error""},{""inputs"":[{""internalType"":""uint8"",""name"":""bits"",""type"":""uint8""},{""internalType"":""uint256"",""name"":""value"",""type"":""uint256""}],""name"":""SafeCastOverflowedUintDowncast"",""type"":""error""},{""inputs"":[],""name"":""ZeroAddress"",""type"":""error""},{""anonymous"":false,""inputs"":[{""indexed"":true,""internalType"":""address"",""name"":""owner"",""type"":""address""},{""indexed"":true,""internalType"":""address"",""name"":""approved"",""type"":""address""},{""indexed"":true,""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""Approval"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":true,""internalType"":""address"",""name"":""owner"",""type"":""address""},{""indexed"":true,""internalType"":""address"",""name"":""operator"",""type"":""address""},{""indexed"":false,""internalType"":""bool"",""name"":""approved"",""type"":""bool""}],""name"":""ApprovalForAll"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":false,""internalType"":""string"",""name"":""previousURI"",""type"":""string""},{""indexed"":false,""internalType"":""string"",""name"":""newURI"",""type"":""string""}],""name"":""BaseURIUpdated"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":false,""internalType"":""string"",""name"":""previousURI"",""type"":""string""},{""indexed"":false,""internalType"":""string"",""name"":""newURI"",""type"":""string""}],""name"":""ContractURIUpdated"",""type"":""event""},{""anonymous"":false,""inputs"":[],""name"":""DefaultAdminDelayChangeCanceled"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":false,""internalType"":""uint48"",""name"":""newDelay"",""type"":""uint48""},{""indexed"":false,""internalType"":""uint48"",""name"":""effectSchedule"",""type"":""uint48""}],""name"":""DefaultAdminDelayChangeScheduled"",""type"":""event""},{""anonymous"":false,""inputs"":[],""name"":""DefaultAdminTransferCanceled"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":true,""internalType"":""address"",""name"":""newAdmin"",""type"":""address""},{""indexed"":false,""internalType"":""uint48"",""name"":""acceptSchedule"",""type"":""uint48""}],""name"":""DefaultAdminTransferScheduled"",""type"":""event""},{""anonymous"":false,""inputs"":[{""indexed"":true,""internalType"":""address"",""name"":""receiver"",""type"":""address""},{""indexed"":false,""internalType"":""uint96"",""name"":""feeBasisPoints"",""type"":""uint96""}],""name"":""DefaultRoyaltyUpdated"",""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"":true,""internalType"":""uint256"",""name"":""tokenId"",""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"":""acceptDefaultAdminTransfer"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""to"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""approve"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""owner"",""type"":""address""}],""name"":""balanceOf"",""outputs"":[{""internalType"":""uint256"",""name"":"""",""type"":""uint256""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""baseURI"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""newAdmin"",""type"":""address""}],""name"":""beginDefaultAdminTransfer"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""cancelDefaultAdminTransfer"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""uint48"",""name"":""newDelay"",""type"":""uint48""}],""name"":""changeDefaultAdminDelay"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""contractURI"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""defaultAdmin"",""outputs"":[{""internalType"":""address"",""name"":"""",""type"":""address""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""defaultAdminDelay"",""outputs"":[{""internalType"":""uint48"",""name"":"""",""type"":""uint48""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""defaultAdminDelayIncreaseWait"",""outputs"":[{""internalType"":""uint48"",""name"":"""",""type"":""uint48""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""getApproved"",""outputs"":[{""internalType"":""address"",""name"":"""",""type"":""address""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""bytes32"",""name"":""role"",""type"":""bytes32""}],""name"":""getRoleAdmin"",""outputs"":[{""internalType"":""bytes32"",""name"":"""",""type"":""bytes32""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""bytes32"",""name"":""role"",""type"":""bytes32""},{""internalType"":""address"",""name"":""account"",""type"":""address""}],""name"":""grantRole"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""bytes32"",""name"":""role"",""type"":""bytes32""},{""internalType"":""address"",""name"":""account"",""type"":""address""}],""name"":""hasRole"",""outputs"":[{""internalType"":""bool"",""name"":"""",""type"":""bool""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""owner"",""type"":""address""},{""internalType"":""address"",""name"":""operator"",""type"":""address""}],""name"":""isApprovedForAll"",""outputs"":[{""internalType"":""bool"",""name"":"""",""type"":""bool""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""name"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""owner"",""outputs"":[{""internalType"":""address"",""name"":"""",""type"":""address""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""ownerOf"",""outputs"":[{""internalType"":""address"",""name"":"""",""type"":""address""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""pause"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""paused"",""outputs"":[{""internalType"":""bool"",""name"":"""",""type"":""bool""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""pendingDefaultAdmin"",""outputs"":[{""internalType"":""address"",""name"":""newAdmin"",""type"":""address""},{""internalType"":""uint48"",""name"":""schedule"",""type"":""uint48""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""pendingDefaultAdminDelay"",""outputs"":[{""internalType"":""uint48"",""name"":""newDelay"",""type"":""uint48""},{""internalType"":""uint48"",""name"":""schedule"",""type"":""uint48""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""bytes32"",""name"":""role"",""type"":""bytes32""},{""internalType"":""address"",""name"":""account"",""type"":""address""}],""name"":""renounceRole"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""bytes32"",""name"":""role"",""type"":""bytes32""},{""internalType"":""address"",""name"":""account"",""type"":""address""}],""name"":""revokeRole"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""rollbackDefaultAdminDelay"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""},{""internalType"":""uint256"",""name"":""salePrice"",""type"":""uint256""}],""name"":""royaltyInfo"",""outputs"":[{""internalType"":""address"",""name"":""receiver"",""type"":""address""},{""internalType"":""uint256"",""name"":""amount"",""type"":""uint256""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""to"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""safeMint"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""from"",""type"":""address""},{""internalType"":""address"",""name"":""to"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""safeTransferFrom"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""from"",""type"":""address""},{""internalType"":""address"",""name"":""to"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""},{""internalType"":""bytes"",""name"":""data"",""type"":""bytes""}],""name"":""safeTransferFrom"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""operator"",""type"":""address""},{""internalType"":""bool"",""name"":""approved"",""type"":""bool""}],""name"":""setApprovalForAll"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""string"",""name"":""baseURI_"",""type"":""string""}],""name"":""setBaseURI"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""string"",""name"":""contractMetadataURI_"",""type"":""string""}],""name"":""setContractURI"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""receiver"",""type"":""address""},{""internalType"":""uint96"",""name"":""feeBasisPoints"",""type"":""uint96""}],""name"":""setRoyaltyInfo"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""internalType"":""bytes4"",""name"":""interfaceId"",""type"":""bytes4""}],""name"":""supportsInterface"",""outputs"":[{""internalType"":""bool"",""name"":"""",""type"":""bool""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""symbol"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""uint256"",""name"":""index"",""type"":""uint256""}],""name"":""tokenByIndex"",""outputs"":[{""internalType"":""uint256"",""name"":"""",""type"":""uint256""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""owner"",""type"":""address""},{""internalType"":""uint256"",""name"":""index"",""type"":""uint256""}],""name"":""tokenOfOwnerByIndex"",""outputs"":[{""internalType"":""uint256"",""name"":"""",""type"":""uint256""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""tokenURI"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""totalSupply"",""outputs"":[{""internalType"":""uint256"",""name"":"""",""type"":""uint256""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[{""internalType"":""address"",""name"":""from"",""type"":""address""},{""internalType"":""address"",""name"":""to"",""type"":""address""},{""internalType"":""uint256"",""name"":""tokenId"",""type"":""uint256""}],""name"":""transferFrom"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""unpause"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""}]"; - public const string Bytecode = "0x608060405234801561000f575f80fd5b5060405161295238038061295283398101604081905261002e916103f0565b80838a8a5f61003d8382610580565b50600161004a8282610580565b5050506001600160a01b03811661007b57604051636116401160e11b81525f60048201526024015b60405180910390fd5b600980546001600160d01b0316600160d01b65ffffffffffff8516021790556100a45f82610151565b5050506001600160a01b03851615806100c457506001600160a01b038316155b806100d657506001600160a01b038216155b156100f45760405163d92e233d60e01b815260040160405180910390fd5b600c6101008882610580565b50600d61010d8782610580565b5061011885856101c0565b6101427f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683610151565b5050505050505050505061063a565b5f826101ad575f61016a600a546001600160a01b031690565b6001600160a01b03161461019157604051631fe1e13d60e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0384161790555b6101b78383610262565b90505b92915050565b6127106001600160601b0382168110156101ff57604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610072565b6001600160a01b03831661022857604051635b6cc80560e11b81525f6004820152602401610072565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b5f8281526008602090815260408083206001600160a01b038516845290915281205460ff16610306575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556102be3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101ba565b505f6101ba565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610330575f80fd5b81516001600160401b038111156103495761034961030d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103775761037761030d565b60405281815283820160200185101561038e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146103c0575f80fd5b919050565b80516001600160601b03811681146103c0575f80fd5b805165ffffffffffff811681146103c0575f80fd5b5f805f805f805f805f6101208a8c031215610409575f80fd5b89516001600160401b0381111561041e575f80fd5b61042a8c828d01610321565b60208c0151909a5090506001600160401b03811115610447575f80fd5b6104538c828d01610321565b60408c015190995090506001600160401b03811115610470575f80fd5b61047c8c828d01610321565b60608c015190985090506001600160401b03811115610499575f80fd5b6104a58c828d01610321565b9650506104b460808b016103aa565b94506104c260a08b016103c5565b93506104d060c08b016103aa565b92506104de60e08b016103aa565b91506104ed6101008b016103db565b90509295985092959850929598565b600181811c9082168061051057607f821691505b60208210810361052e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561057b57805f5260205f20601f840160051c810160208510156105595750805b601f840160051c820191505b81811015610578575f8155600101610565565b50505b505050565b81516001600160401b038111156105995761059961030d565b6105ad816105a784546104fc565b84610534565b6020601f8211600181146105df575f83156105c85750848201515b5f19600385901b1c1916600184901b178455610578565b5f84815260208120601f198516915b8281101561060e57878501518255602094850194600190920191016105ee565b508482101561062b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b61230b806106475f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c806370a0823111610140578063a22cb465116100bf578063cf6eefb711610084578063cf6eefb714610503578063d539139314610531578063d547741f14610558578063d602b9fd1461056b578063e8a3d48514610573578063e985e9c51461057b575f80fd5b8063a22cb465146104ba578063b88d4fde146104cd578063c87b56dd146104e0578063cc8463c8146104f3578063cefc1429146104fb575f80fd5b8063938e3d7b11610105578063938e3d7b1461045e57806395d89b4114610471578063a144819414610479578063a1eda53c1461048c578063a217fddf146104b3575f80fd5b806370a08231146104175780638456cb591461042a57806384ef8ffc146104325780638da5cb5b1461044357806391d148541461044b575f80fd5b80632f2ff15d116101cc5780635c975abb116101915780635c975abb146103cb578063634e93da146103d65780636352211e146103e9578063649a5ec7146103fc5780636c0360eb1461040f575f80fd5b80632f2ff15d1461037757806336568abe1461038a5780633f4ba83a1461039d57806342842e0e146103a557806355f804b3146103b8575f80fd5b8063095ea7b311610212578063095ea7b3146102e75780630aa6220b146102fa57806323b872dd14610302578063248a9ca3146103155780632a55205a14610345575f80fd5b806301ffc9a71461024e578063022d63fb1461027657806302fa7c471461029257806306fdde03146102a7578063081812fc146102bc575b5f80fd5b61026161025c366004611ce7565b61058e565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff909116815260200161026d565b6102a56102a0366004611d1d565b61059e565b005b6102af610625565b60405161026d9190611d8b565b6102cf6102ca366004611d9d565b6106b4565b6040516001600160a01b03909116815260200161026d565b6102a56102f5366004611db4565b6106db565b6102a56106ea565b6102a5610310366004611ddc565b6106ff565b610337610323366004611d9d565b5f9081526008602052604090206001015490565b60405190815260200161026d565b610358610353366004611e16565b61078d565b604080516001600160a01b03909316835260208301919091520161026d565b6102a5610385366004611e36565b610810565b6102a5610398366004611e36565b610838565b6102a56108de565b6102a56103b3366004611ddc565b6108f0565b6102a56103c6366004611e60565b61090f565b600b5460ff16610261565b6102a56103e4366004611ece565b6109f8565b6102cf6103f7366004611d9d565b610a0b565b6102a561040a366004611ee7565b610a15565b6102af610a28565b610337610425366004611ece565b610a37565b6102a5610a7c565b600a546001600160a01b03166102cf565b6102cf610a8e565b610261610459366004611e36565b610aa6565b6102a561046c366004611e60565b610ad0565b6102af610bab565b6102a5610487366004611db4565b610bba565b610494610bf6565b6040805165ffffffffffff93841681529290911660208301520161026d565b6103375f81565b6102a56104c8366004611f0c565b610c48565b6102a56104db366004611f4e565b610c53565b6102af6104ee366004611d9d565b610c6b565b61027b610cd0565b6102a5610d2e565b61050b610d6d565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161026d565b6103377f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102a5610566366004611e36565b610d8e565b6102a5610db6565b6102af610dc8565b61026161058936600461202b565b610dd7565b5f61059882610e04565b92915050565b5f6105a881610e28565b6001600160a01b0383166105cf5760405163d92e233d60e01b815260040160405180910390fd5b6105d98383610e32565b6040516001600160601b03831681526001600160a01b038416907fe12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf49060200160405180910390a2505050565b60605f805461063390612053565b80601f016020809104026020016040519081016040528092919081815260200182805461065f90612053565b80156106aa5780601f10610681576101008083540402835291602001916106aa565b820191905f5260205f20905b81548152906001019060200180831161068d57829003601f168201915b5050505050905090565b5f6106be82610ed4565b505f828152600460205260409020546001600160a01b0316610598565b6106e6828233610f0c565b5050565b5f6106f481610e28565b6106fc610f19565b50565b6001600160a01b03821661072d57604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610739838333610f25565b9050836001600160a01b0316816001600160a01b031614610787576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610724565b50505050565b5f82815260076020526040812080548291906001600160a01b03811690600160a01b90046001600160601b0316816107e05750506006546001600160a01b03811690600160a01b90046001600160601b03165b5f6127106107f76001600160601b0384168961209f565b61080191906120b6565b92989297509195505050505050565b8161082e57604051631fe1e13d60e11b815260040160405180910390fd5b6106e68282611017565b811580156108535750600a546001600160a01b038281169116145b156108d4575f80610862610d6d565b90925090506001600160a01b038216151580610884575065ffffffffffff8116155b8061089757504265ffffffffffff821610155b156108bf576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610724565b50506009805465ffffffffffff60a01b191690555b6106e6828261103b565b5f6108e881610e28565b6106fc61106e565b61090a83838360405180602001604052805f815250610c53565b505050565b5f61091981610e28565b5f600c805461092790612053565b80601f016020809104026020016040519081016040528092919081815260200182805461095390612053565b801561099e5780601f106109755761010080835404028352916020019161099e565b820191905f5260205f20905b81548152906001019060200180831161098157829003601f168201915b505050505090508383600c91826109b6929190612119565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc18185856040516109ea939291906121d3565b60405180910390a150505050565b5f610a0281610e28565b6106e6826110c0565b5f61059882610ed4565b5f610a1f81610e28565b6106e682611132565b6060600c805461063390612053565b5f6001600160a01b038216610a61576040516322718ad960e21b81525f6004820152602401610724565b506001600160a01b03165f9081526003602052604090205490565b5f610a8681610e28565b6106fc6111a1565b5f610aa1600a546001600160a01b031690565b905090565b5f9182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610ada81610e28565b5f600d8054610ae890612053565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1490612053565b8015610b5f5780601f10610b3657610100808354040283529160200191610b5f565b820191905f5260205f20905b815481529060010190602001808311610b4257829003601f168201915b505050505090508383600d9182610b77929190612119565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168185856040516109ea939291906121d3565b60606001805461063390612053565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610be481610e28565b610bec6111de565b61090a8383611202565b600a545f90600160d01b900465ffffffffffff168015158015610c2157504265ffffffffffff821610155b610c2c575f80610c40565b600a54600160a01b900465ffffffffffff16815b915091509091565b6106e633838361121b565b610c5e8484846106ff565b61078733858585856112e2565b6060610c7682610ed4565b505f610c80610a28565b90505f815111610c9e5760405180602001604052805f815250610cc9565b80610ca88461140a565b604051602001610cb992919061222e565b6040516020818303038152906040525b9392505050565b600a545f90600160d01b900465ffffffffffff168015158015610cfa57504265ffffffffffff8216105b610d1557600954600160d01b900465ffffffffffff16610d28565b600a54600160a01b900465ffffffffffff165b91505090565b5f610d37610d6d565b509050336001600160a01b03821614610d6557604051636116401160e11b8152336004820152602401610724565b6106fc61149a565b6009546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610dac57604051631fe1e13d60e11b815260040160405180910390fd5b6106e68282611530565b5f610dc081610e28565b6106fc611554565b6060600d805461063390612053565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166318a4c3c360e11b148061059857506105988261155e565b6106fc8133611582565b6127106001600160601b038216811015610e7157604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610724565b6001600160a01b038316610e9a57604051635b6cc80560e11b81525f6004820152602401610724565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600655565b5f818152600260205260408120546001600160a01b03168061059857604051637e27328960e01b815260048101849052602401610724565b61090a83838360016115bb565b610f235f806116bf565b565b5f828152600260205260408120546001600160a01b0390811690831615610f5157610f5181848661177e565b6001600160a01b03811615610f8b57610f6c5f855f806115bb565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615610fb9576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f8281526008602052604090206001015461103181610e28565b61078783836117e2565b6001600160a01b03811633146110645760405163334bd91960e11b815260040160405180910390fd5b61090a8282611848565b611076611884565b600b805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f6110c9610cd0565b6110d2426118a7565b6110dc9190612242565b90506110e882826118dd565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f61113c8261195a565b611145426118a7565b61114f9190612242565b905061115b82826116bf565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6111a96111de565b600b805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110a33390565b600b5460ff1615610f235760405163d93c066560e01b815260040160405180910390fd5b6106e6828260405180602001604052805f8152506119a1565b6001600160a01b0383166112445760405163a9fbf51f60e01b81525f6004820152602401610724565b6001600160a01b03821661127657604051630b61174360e31b81526001600160a01b0383166004820152602401610724565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561140357604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611324908890889087908790600401612260565b6020604051808303815f875af192505050801561135e575060408051601f3d908101601f1916820190925261135b9181019061229c565b60015b6113c5573d80801561138b576040519150601f19603f3d011682016040523d82523d5f602084013e611390565b606091505b5080515f036113bd57604051633250574960e11b81526001600160a01b0385166004820152602401610724565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461140157604051633250574960e11b81526001600160a01b0385166004820152602401610724565b505b5050505050565b60605f611416836119b8565b60010190505f8167ffffffffffffffff81111561143557611435611f3a565b6040519080825280601f01601f19166020018201604052801561145f576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461146957509392505050565b5f806114a4610d6d565b915091506114b98165ffffffffffff16151590565b15806114cd57504265ffffffffffff821610155b156114f5576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610724565b6115105f61150b600a546001600160a01b031690565b611848565b5061151b5f836117e2565b5050600980546001600160d01b031916905550565b5f8281526008602052604090206001015461154a81610e28565b6107878383611848565b610f235f806118dd565b5f6001600160e01b03198216637965db0b60e01b1480610598575061059882611a8f565b61158c8282610aa6565b6106e65760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610724565b80806115cf57506001600160a01b03821615155b15611690575f6115de84610ed4565b90506001600160a01b0383161580159061160a5750826001600160a01b0316816001600160a01b031614155b801561161d575061161b8184610dd7565b155b156116465760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610724565b811561168e5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600a54600160d01b900465ffffffffffff168015611741574265ffffffffffff8216101561171857600a54600980546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611741565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600a80546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b611789838383611ab3565b61090a576001600160a01b0383166117b757604051637e27328960e01b815260048101829052602401610724565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610724565b5f8261183e575f6117fb600a546001600160a01b031690565b6001600160a01b03161461182257604051631fe1e13d60e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0384161790555b610cc98383611b17565b5f821580156118645750600a546001600160a01b038381169116145b1561187a57600a80546001600160a01b03191690555b610cc98383611ba8565b600b5460ff16610f2357604051638dfc202b60e01b815260040160405180910390fd5b5f65ffffffffffff8211156118d9576040516306dfcc6560e41b81526030600482015260248101839052604401610724565b5090565b5f6118e6610d6d565b6009805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b03881617179055915061192890508165ffffffffffff16151590565b1561090a576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a1505050565b5f80611964610cd0565b90508065ffffffffffff168365ffffffffffff161161198c5761198783826122b7565b610cc9565b610cc965ffffffffffff841662069780611c13565b6119ab8383611c22565b61090a335f8585856112e2565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106119f65772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611a22576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611a4057662386f26fc10000830492506010015b6305f5e1008310611a58576305f5e100830492506008015b6127108310611a6c57612710830492506004015b60648310611a7e576064830492506002015b600a83106105985760010192915050565b5f6001600160e01b0319821663152a902d60e11b1480610598575061059882611c83565b5f6001600160a01b03831615801590611b0f5750826001600160a01b0316846001600160a01b03161480611aec5750611aec8484610dd7565b80611b0f57505f828152600460205260409020546001600160a01b038481169116145b949350505050565b5f611b228383610aa6565b611ba1575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611b593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610598565b505f610598565b5f611bb38383610aa6565b15611ba1575f8381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610598565b5f828218828410028218610cc9565b6001600160a01b038216611c4b57604051633250574960e11b81525f6004820152602401610724565b5f611c5783835f610f25565b90506001600160a01b0381161561090a576040516339e3563760e11b81525f6004820152602401610724565b5f6001600160e01b031982166380ac58cd60e01b1480611cb357506001600160e01b03198216635b5e139f60e01b145b8061059857506301ffc9a760e01b6001600160e01b0319831614610598565b6001600160e01b0319811681146106fc575f80fd5b5f60208284031215611cf7575f80fd5b8135610cc981611cd2565b80356001600160a01b0381168114611d18575f80fd5b919050565b5f8060408385031215611d2e575f80fd5b611d3783611d02565b915060208301356001600160601b0381168114611d52575f80fd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cc96020830184611d5d565b5f60208284031215611dad575f80fd5b5035919050565b5f8060408385031215611dc5575f80fd5b611dce83611d02565b946020939093013593505050565b5f805f60608486031215611dee575f80fd5b611df784611d02565b9250611e0560208501611d02565b929592945050506040919091013590565b5f8060408385031215611e27575f80fd5b50508035926020909101359150565b5f8060408385031215611e47575f80fd5b82359150611e5760208401611d02565b90509250929050565b5f8060208385031215611e71575f80fd5b823567ffffffffffffffff811115611e87575f80fd5b8301601f81018513611e97575f80fd5b803567ffffffffffffffff811115611ead575f80fd5b856020828401011115611ebe575f80fd5b6020919091019590945092505050565b5f60208284031215611ede575f80fd5b610cc982611d02565b5f60208284031215611ef7575f80fd5b813565ffffffffffff81168114610cc9575f80fd5b5f8060408385031215611f1d575f80fd5b611f2683611d02565b915060208301358015158114611d52575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215611f61575f80fd5b611f6a85611d02565b9350611f7860208601611d02565b925060408501359150606085013567ffffffffffffffff811115611f9a575f80fd5b8501601f81018713611faa575f80fd5b803567ffffffffffffffff811115611fc457611fc4611f3a565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611ff357611ff3611f3a565b60405281815282820160200189101561200a575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f806040838503121561203c575f80fd5b61204583611d02565b9150611e5760208401611d02565b600181811c9082168061206757607f821691505b60208210810361208557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105985761059861208b565b5f826120d057634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561090a57805f5260205f20601f840160051c810160208510156120fa5750805b601f840160051c820191505b81811015611403575f8155600101612106565b67ffffffffffffffff83111561213157612131611f3a565b6121458361213f8354612053565b836120d5565b5f601f841160018114612176575f851561215f5750838201355b5f19600387901b1c1916600186901b178355611403565b5f83815260208120601f198716915b828110156121a55786850135825560209485019460019092019101612185565b50868210156121c1575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f6121e56040830186611d5d565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f611b0f61223c8386612217565b84612217565b65ffffffffffff81811683821601908111156105985761059861208b565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061229290830184611d5d565b9695505050505050565b5f602082840312156122ac575f80fd5b8151610cc981611cd2565b65ffffffffffff82811682821603908111156105985761059861208b56fea26469706673582212206c61f9cbc8861ecf23317af095dbbbb42c5ff32ed8e4a71b91c7a2a6aa06803564736f6c634300081a0033"; + public const string Bytecode = "0x608060405234801561000f575f80fd5b50604051612d02380380612d0283398101604081905261002e916103f0565b80838a8a5f61003d8382610580565b50600161004a8282610580565b5050506001600160a01b03811661007b57604051636116401160e11b81525f60048201526024015b60405180910390fd5b600d80546001600160d01b0316600160d01b65ffffffffffff8516021790556100a45f82610151565b5050506001600160a01b03851615806100c457506001600160a01b038316155b806100d657506001600160a01b038216155b156100f45760405163d92e233d60e01b815260040160405180910390fd5b60106101008882610580565b50601161010d8782610580565b5061011885856101c0565b6101427f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683610151565b5050505050505050505061063a565b5f826101ad575f61016a600e546001600160a01b031690565b6001600160a01b03161461019157604051631fe1e13d60e11b815260040160405180910390fd5b600e80546001600160a01b0319166001600160a01b0384161790555b6101b78383610262565b90505b92915050565b6127106001600160601b0382168110156101ff57604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610072565b6001600160a01b03831661022857604051635b6cc80560e11b81525f6004820152602401610072565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b5f828152600c602090815260408083206001600160a01b038516845290915281205460ff16610306575f838152600c602090815260408083206001600160a01b03861684529091529020805460ff191660011790556102be3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101ba565b505f6101ba565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610330575f80fd5b81516001600160401b038111156103495761034961030d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103775761037761030d565b60405281815283820160200185101561038e575f80fd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146103c0575f80fd5b919050565b80516001600160601b03811681146103c0575f80fd5b805165ffffffffffff811681146103c0575f80fd5b5f805f805f805f805f6101208a8c031215610409575f80fd5b89516001600160401b0381111561041e575f80fd5b61042a8c828d01610321565b60208c0151909a5090506001600160401b03811115610447575f80fd5b6104538c828d01610321565b60408c015190995090506001600160401b03811115610470575f80fd5b61047c8c828d01610321565b60608c015190985090506001600160401b03811115610499575f80fd5b6104a58c828d01610321565b9650506104b460808b016103aa565b94506104c260a08b016103c5565b93506104d060c08b016103aa565b92506104de60e08b016103aa565b91506104ed6101008b016103db565b90509295985092959850929598565b600181811c9082168061051057607f821691505b60208210810361052e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561057b57805f5260205f20601f840160051c810160208510156105595750805b601f840160051c820191505b81811015610578575f8155600101610565565b50505b505050565b81516001600160401b038111156105995761059961030d565b6105ad816105a784546104fc565b84610534565b6020601f8211600181146105df575f83156105c85750848201515b5f19600385901b1c1916600184901b178455610578565b5f84815260208120601f198516915b8281101561060e57878501518255602094850194600190920191016105ee565b508482101561062b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6126bb806106475f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c80636c0360eb1161014b578063a22cb465116100bf578063cf6eefb711610084578063cf6eefb71461054e578063d53913931461057c578063d547741f146105a3578063d602b9fd146105b6578063e8a3d485146105be578063e985e9c5146105c6575f80fd5b8063a22cb46514610505578063b88d4fde14610518578063c87b56dd1461052b578063cc8463c81461053e578063cefc142914610546575f80fd5b806391d148541161011057806391d1485414610496578063938e3d7b146104a957806395d89b41146104bc578063a1448194146104c4578063a1eda53c146104d7578063a217fddf146104fe575f80fd5b80636c0360eb1461045a57806370a08231146104625780638456cb591461047557806384ef8ffc1461047d5780638da5cb5b1461048e575f80fd5b80632f2ff15d116101e25780634f6ccce7116101a75780634f6ccce7146103f057806355f804b3146104035780635c975abb14610416578063634e93da146104215780636352211e14610434578063649a5ec714610447575f80fd5b80632f2ff15d1461039c5780632f745c59146103af57806336568abe146103c25780633f4ba83a146103d557806342842e0e146103dd575f80fd5b8063095ea7b311610233578063095ea7b3146103085780630aa6220b1461031b57806318160ddd1461032357806323b872dd14610335578063248a9ca3146103485780632a55205a1461036a575f80fd5b806301ffc9a71461026f578063022d63fb1461029757806302fa7c47146102b357806306fdde03146102c8578063081812fc146102dd575b5f80fd5b61028261027d36600461205c565b6105d9565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff909116815260200161028e565b6102c66102c1366004612092565b6105e9565b005b6102d0610670565b60405161028e9190612100565b6102f06102eb366004612112565b6106ff565b6040516001600160a01b03909116815260200161028e565b6102c6610316366004612129565b610726565b6102c6610735565b6008545b60405190815260200161028e565b6102c6610343366004612151565b61074a565b610327610356366004612112565b5f908152600c602052604090206001015490565b61037d61037836600461218b565b6107d8565b604080516001600160a01b03909316835260208301919091520161028e565b6102c66103aa3660046121ab565b61085b565b6103276103bd366004612129565b610883565b6102c66103d03660046121ab565b6108e6565b6102c661098c565b6102c66103eb366004612151565b61099e565b6103276103fe366004612112565b6109bd565b6102c66104113660046121d5565b610a12565b600f5460ff16610282565b6102c661042f366004612243565b610afb565b6102f0610442366004612112565b610b0e565b6102c661045536600461225c565b610b18565b6102d0610b2b565b610327610470366004612243565b610b3a565b6102c6610b7f565b600e546001600160a01b03166102f0565b6102f0610b91565b6102826104a43660046121ab565b610ba9565b6102c66104b73660046121d5565b610bd3565b6102d0610cae565b6102c66104d2366004612129565b610cbd565b6104df610cf9565b6040805165ffffffffffff93841681529290911660208301520161028e565b6103275f81565b6102c6610513366004612281565b610d4b565b6102c66105263660046122c3565b610d56565b6102d0610539366004612112565b610d6e565b61029c610dd3565b6102c6610e31565b610556610e70565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161028e565b6103277f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102c66105b13660046121ab565b610e91565b6102c6610eb9565b6102d0610ecb565b6102826105d43660046123a0565b610eda565b5f6105e382610f07565b92915050565b5f6105f381610f2b565b6001600160a01b03831661061a5760405163d92e233d60e01b815260040160405180910390fd5b6106248383610f35565b6040516001600160601b03831681526001600160a01b038416907fe12d7d5bdb8218a22277dca8f854dd4573a1cea3d3e4808dc567df9eb1c14bf49060200160405180910390a2505050565b60605f805461067e906123c8565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa906123c8565b80156106f55780601f106106cc576101008083540402835291602001916106f5565b820191905f5260205f20905b8154815290600101906020018083116106d857829003601f168201915b5050505050905090565b5f61070982610fd7565b505f828152600460205260409020546001600160a01b03166105e3565b61073182823361100f565b5050565b5f61073f81610f2b565b61074761101c565b50565b6001600160a01b03821661077857604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610784838333611028565b9050836001600160a01b0316816001600160a01b0316146107d2576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161076f565b50505050565b5f828152600b6020526040812080548291906001600160a01b03811690600160a01b90046001600160601b03168161082b575050600a546001600160a01b03811690600160a01b90046001600160601b03165b5f6127106108426001600160601b03841689612414565b61084c919061242b565b92989297509195505050505050565b8161087957604051631fe1e13d60e11b815260040160405180910390fd5b610731828261103c565b5f61088d83610b3a565b82106108be5760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161076f565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b811580156109015750600e546001600160a01b038281169116145b15610982575f80610910610e70565b90925090506001600160a01b038216151580610932575065ffffffffffff8116155b8061094557504265ffffffffffff821610155b1561096d576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161076f565b5050600d805465ffffffffffff60a01b191690555b6107318282611060565b5f61099681610f2b565b610747611093565b6109b883838360405180602001604052805f815250610d56565b505050565b5f6109c760085490565b82106109ef5760405163295f44f760e21b81525f60048201526024810183905260440161076f565b60088281548110610a0257610a0261244a565b905f5260205f2001549050919050565b5f610a1c81610f2b565b5f60108054610a2a906123c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a56906123c8565b8015610aa15780601f10610a7857610100808354040283529160200191610aa1565b820191905f5260205f20905b815481529060010190602001808311610a8457829003601f168201915b50505050509050838360109182610ab99291906124a2565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1818585604051610aed9392919061255c565b60405180910390a150505050565b5f610b0581610f2b565b610731826110e5565b5f6105e382610fd7565b5f610b2281610f2b565b61073182611157565b60606010805461067e906123c8565b5f6001600160a01b038216610b64576040516322718ad960e21b81525f600482015260240161076f565b506001600160a01b03165f9081526003602052604090205490565b5f610b8981610f2b565b6107476111c6565b5f610ba4600e546001600160a01b031690565b905090565b5f918252600c602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610bdd81610f2b565b5f60118054610beb906123c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610c17906123c8565b8015610c625780601f10610c3957610100808354040283529160200191610c62565b820191905f5260205f20905b815481529060010190602001808311610c4557829003601f168201915b50505050509050838360119182610c7a9291906124a2565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16818585604051610aed9392919061255c565b60606001805461067e906123c8565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610ce781610f2b565b610cef611203565b6109b88383611227565b600e545f90600160d01b900465ffffffffffff168015158015610d2457504265ffffffffffff821610155b610d2f575f80610d43565b600e54600160a01b900465ffffffffffff16815b915091509091565b610731338383611240565b610d6184848461074a565b6107d23385858585611307565b6060610d7982610fd7565b505f610d83610b2b565b90505f815111610da15760405180602001604052805f815250610dcc565b80610dab8461142f565b604051602001610dbc9291906125b7565b6040516020818303038152906040525b9392505050565b600e545f90600160d01b900465ffffffffffff168015158015610dfd57504265ffffffffffff8216105b610e1857600d54600160d01b900465ffffffffffff16610e2b565b600e54600160a01b900465ffffffffffff165b91505090565b5f610e3a610e70565b509050336001600160a01b03821614610e6857604051636116401160e11b815233600482015260240161076f565b6107476114bf565b600d546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610eaf57604051631fe1e13d60e11b815260040160405180910390fd5b6107318282611555565b5f610ec381610f2b565b610747611579565b60606011805461067e906123c8565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166318a4c3c360e11b14806105e357506105e382611583565b61074781336115a7565b6127106001600160601b038216811015610f7457604051636f483d0960e01b81526001600160601b03831660048201526024810182905260440161076f565b6001600160a01b038316610f9d57604051635b6cc80560e11b81525f600482015260240161076f565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b5f818152600260205260408120546001600160a01b0316806105e357604051637e27328960e01b81526004810184905260240161076f565b6109b883838360016115e0565b6110265f806116e4565b565b5f6110348484846117a3565b949350505050565b5f828152600c602052604090206001015461105681610f2b565b6107d2838361186e565b6001600160a01b03811633146110895760405163334bd91960e11b815260040160405180910390fd5b6109b882826118d4565b61109b611910565b600f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f6110ee610dd3565b6110f742611933565b61110191906125cb565b905061110d8282611969565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f611161826119e6565b61116a42611933565b61117491906125cb565b905061118082826116e4565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6111ce611203565b600f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110c83390565b600f5460ff16156110265760405163d93c066560e01b815260040160405180910390fd5b610731828260405180602001604052805f815250611a2d565b6001600160a01b0383166112695760405163a9fbf51f60e01b81525f600482015260240161076f565b6001600160a01b03821661129b57604051630b61174360e31b81526001600160a01b038316600482015260240161076f565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561142857604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906113499088908890879087906004016125e9565b6020604051808303815f875af1925050508015611383575060408051601f3d908101601f1916820190925261138091810190612625565b60015b6113ea573d8080156113b0576040519150601f19603f3d011682016040523d82523d5f602084013e6113b5565b606091505b5080515f036113e257604051633250574960e11b81526001600160a01b038516600482015260240161076f565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461142657604051633250574960e11b81526001600160a01b038516600482015260240161076f565b505b5050505050565b60605f61143b83611a44565b60010190505f8167ffffffffffffffff81111561145a5761145a6122af565b6040519080825280601f01601f191660200182016040528015611484576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461148e57509392505050565b5f806114c9610e70565b915091506114de8165ffffffffffff16151590565b15806114f257504265ffffffffffff821610155b1561151a576040516319ca5ebb60e01b815265ffffffffffff8216600482015260240161076f565b6115355f611530600e546001600160a01b031690565b6118d4565b506115405f8361186e565b5050600d80546001600160d01b031916905550565b5f828152600c602052604090206001015461156f81610f2b565b6107d283836118d4565b6110265f80611969565b5f6001600160e01b03198216637965db0b60e01b14806105e357506105e382611b1b565b6115b18282610ba9565b6107315760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161076f565b80806115f457506001600160a01b03821615155b156116b5575f61160384610fd7565b90506001600160a01b0383161580159061162f5750826001600160a01b0316816001600160a01b031614155b801561164257506116408184610eda565b155b1561166b5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161076f565b81156116b35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600e54600160d01b900465ffffffffffff168015611766574265ffffffffffff8216101561173d57600e54600d80546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611766565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600e80546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b5f806117b0858585611b3f565b90506001600160a01b03811661180c5761180784600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61182f565b846001600160a01b0316816001600160a01b03161461182f5761182f8185611c31565b6001600160a01b03851661184b5761184684611cae565b611034565b846001600160a01b0316816001600160a01b031614611034576110348585611d55565b5f826118ca575f611887600e546001600160a01b031690565b6001600160a01b0316146118ae57604051631fe1e13d60e11b815260040160405180910390fd5b600e80546001600160a01b0319166001600160a01b0384161790555b610dcc8383611da3565b5f821580156118f05750600e546001600160a01b038381169116145b1561190657600e80546001600160a01b03191690555b610dcc8383611e34565b600f5460ff1661102657604051638dfc202b60e01b815260040160405180910390fd5b5f65ffffffffffff821115611965576040516306dfcc6560e41b8152603060048201526024810183905260440161076f565b5090565b5f611972610e70565b600d805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b0388161717905591506119b490508165ffffffffffff16151590565b156109b8576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a1505050565b5f806119f0610dd3565b90508065ffffffffffff168365ffffffffffff1611611a1857611a138382612640565b610dcc565b610dcc65ffffffffffff841662069780611e9f565b611a378383611eae565b6109b8335f858585611307565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611a825772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611aae576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611acc57662386f26fc10000830492506010015b6305f5e1008310611ae4576305f5e100830492506008015b6127108310611af857612710830492506004015b60648310611b0a576064830492506002015b600a83106105e35760010192915050565b5f6001600160e01b0319821663152a902d60e11b14806105e357506105e382611f0f565b5f828152600260205260408120546001600160a01b0390811690831615611b6b57611b6b818486611f33565b6001600160a01b03811615611ba557611b865f855f806115e0565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611bd3576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f611c3b83610b3a565b5f838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314611c90575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f90611cbf9060019061265e565b5f8381526009602052604081205460088054939450909284908110611ce657611ce661244a565b905f5260205f20015490508060088381548110611d0557611d0561244a565b5f918252602080832090910192909255828152600990915260408082208490558582528120556008805480611d3c57611d3c612671565b600190038181905f5260205f20015f9055905550505050565b5f6001611d6184610b3a565b611d6b919061265e565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b5f611dae8383610ba9565b611e2d575f838152600c602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611de53390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e3565b505f6105e3565b5f611e3f8383610ba9565b15611e2d575f838152600c602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e3565b5f828218828410028218610dcc565b6001600160a01b038216611ed757604051633250574960e11b81525f600482015260240161076f565b5f611ee383835f611028565b90506001600160a01b038116156109b8576040516339e3563760e11b81525f600482015260240161076f565b5f6001600160e01b0319821663780e9d6360e01b14806105e357506105e382611f97565b611f3e838383611fe6565b6109b8576001600160a01b038316611f6c57604051637e27328960e01b81526004810182905260240161076f565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161076f565b5f6001600160e01b031982166380ac58cd60e01b1480611fc757506001600160e01b03198216635b5e139f60e01b145b806105e357506301ffc9a760e01b6001600160e01b03198316146105e3565b5f6001600160a01b038316158015906110345750826001600160a01b0316846001600160a01b0316148061201f575061201f8484610eda565b806110345750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610747575f80fd5b5f6020828403121561206c575f80fd5b8135610dcc81612047565b80356001600160a01b038116811461208d575f80fd5b919050565b5f80604083850312156120a3575f80fd5b6120ac83612077565b915060208301356001600160601b03811681146120c7575f80fd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dcc60208301846120d2565b5f60208284031215612122575f80fd5b5035919050565b5f806040838503121561213a575f80fd5b61214383612077565b946020939093013593505050565b5f805f60608486031215612163575f80fd5b61216c84612077565b925061217a60208501612077565b929592945050506040919091013590565b5f806040838503121561219c575f80fd5b50508035926020909101359150565b5f80604083850312156121bc575f80fd5b823591506121cc60208401612077565b90509250929050565b5f80602083850312156121e6575f80fd5b823567ffffffffffffffff8111156121fc575f80fd5b8301601f8101851361220c575f80fd5b803567ffffffffffffffff811115612222575f80fd5b856020828401011115612233575f80fd5b6020919091019590945092505050565b5f60208284031215612253575f80fd5b610dcc82612077565b5f6020828403121561226c575f80fd5b813565ffffffffffff81168114610dcc575f80fd5b5f8060408385031215612292575f80fd5b61229b83612077565b9150602083013580151581146120c7575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f80608085870312156122d6575f80fd5b6122df85612077565b93506122ed60208601612077565b925060408501359150606085013567ffffffffffffffff81111561230f575f80fd5b8501601f8101871361231f575f80fd5b803567ffffffffffffffff811115612339576123396122af565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612368576123686122af565b60405281815282820160200189101561237f575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f80604083850312156123b1575f80fd5b6123ba83612077565b91506121cc60208401612077565b600181811c908216806123dc57607f821691505b6020821081036123fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105e3576105e3612400565b5f8261244557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b601f8211156109b857805f5260205f20601f840160051c810160208510156124835750805b601f840160051c820191505b81811015611428575f815560010161248f565b67ffffffffffffffff8311156124ba576124ba6122af565b6124ce836124c883546123c8565b8361245e565b5f601f8411600181146124ff575f85156124e85750838201355b5f19600387901b1c1916600186901b178355611428565b5f83815260208120601f198716915b8281101561252e578685013582556020948501946001909201910161250e565b508682101561254a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f61256e60408301866120d2565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f6110346125c583866125a0565b846125a0565b65ffffffffffff81811683821601908111156105e3576105e3612400565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061261b908301846120d2565b9695505050505050565b5f60208284031215612635575f80fd5b8151610dcc81612047565b65ffffffffffff82811682821603908111156105e3576105e3612400565b818103818111156105e3576105e3612400565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212204dfc414c3f7c881c72a70636389dd9e0c274b6ba5a9f6fa5fea06c294e82584a64736f6c634300081a0033"; } } diff --git a/src/Tricksfor.Blockchain.Booster/Contracts/Functions/TricksforBoosterNFTFunctions.cs b/src/Tricksfor.Blockchain.Booster/Contracts/Functions/TricksforBoosterNFTFunctions.cs index ce73490..83bec93 100644 --- a/src/Tricksfor.Blockchain.Booster/Contracts/Functions/TricksforBoosterNFTFunctions.cs +++ b/src/Tricksfor.Blockchain.Booster/Contracts/Functions/TricksforBoosterNFTFunctions.cs @@ -73,6 +73,26 @@ public class BalanceOfFunction : FunctionMessage public string Owner { get; set; } = string.Empty; } + [Function("totalSupply", "uint256")] + public class TotalSupplyFunction : FunctionMessage { } + + [Function("tokenByIndex", "uint256")] + public class TokenByIndexFunction : FunctionMessage + { + [Parameter("uint256", "index", 1)] + public BigInteger Index { get; set; } + } + + [Function("tokenOfOwnerByIndex", "uint256")] + public class TokenOfOwnerByIndexFunction : FunctionMessage + { + [Parameter("address", "owner", 1)] + public string Owner { get; set; } = string.Empty; + + [Parameter("uint256", "index", 2)] + public BigInteger Index { get; set; } + } + [Function("getApproved", "address")] public class GetApprovedFunction : FunctionMessage { diff --git a/src/Tricksfor.Blockchain.Booster/README.nuget.md b/src/Tricksfor.Blockchain.Booster/README.nuget.md index 4e3d9ba..fb2bd1c 100644 --- a/src/Tricksfor.Blockchain.Booster/README.nuget.md +++ b/src/Tricksfor.Blockchain.Booster/README.nuget.md @@ -103,6 +103,24 @@ var receipt = await service.StakeRequestAndWaitForReceiptAsync(tokenId); var stakedEvents = service.DecodeTokenStakedEvents(receipt); ``` +### Enumerate NFTs held by a wallet + +```csharp +var nft = new BoosterNFTService(web3, nftContractAddress); +var balance = await nft.BalanceOfQueryAsync(walletAddress); +var tokenIds = new List(); + +for (var index = BigInteger.Zero; index < balance; index++) +{ + tokenIds.Add(await nft.TokenOfOwnerByIndexQueryAsync(walletAddress, index)); +} +``` + +The service also exposes `TotalSupplyQueryAsync()` and `TokenByIndexQueryAsync(index)`. Enumerable +indexes are not stable ordering keys. A staked token is held and enumerated under the staking +contract address; combine these reads with `GetWalletStakedTokensQueryAsync(walletAddress)` when a +UI needs to show both unstaked and staked Boosters. + ### Deploy a contract (testnet / local) ```csharp diff --git a/src/Tricksfor.Blockchain.Booster/Services/BoosterNFTService.cs b/src/Tricksfor.Blockchain.Booster/Services/BoosterNFTService.cs index 6efd2b5..c708729 100644 --- a/src/Tricksfor.Blockchain.Booster/Services/BoosterNFTService.cs +++ b/src/Tricksfor.Blockchain.Booster/Services/BoosterNFTService.cs @@ -102,6 +102,20 @@ public Task BalanceOfQueryAsync(string ownerAddress) => _web3.Eth.GetContractQueryHandler() .QueryAsync(_contractAddress, new BalanceOfFunction { Owner = ownerAddress }); + public Task TotalSupplyQueryAsync() + => _web3.Eth.GetContractQueryHandler() + .QueryAsync(_contractAddress, new TotalSupplyFunction()); + + public Task TokenByIndexQueryAsync(BigInteger index) + => _web3.Eth.GetContractQueryHandler() + .QueryAsync(_contractAddress, new TokenByIndexFunction { Index = index }); + + public Task TokenOfOwnerByIndexQueryAsync(string ownerAddress, BigInteger index) + => _web3.Eth.GetContractQueryHandler() + .QueryAsync( + _contractAddress, + new TokenOfOwnerByIndexFunction { Owner = ownerAddress, Index = index }); + public Task RoyaltyInfoQueryAsync(BigInteger tokenId, BigInteger salePrice) => _web3.Eth.GetContractQueryHandler() .QueryDeserializingToObjectAsync( diff --git a/test/TricksforBoosterNFT.test.ts b/test/TricksforBoosterNFT.test.ts index 3ec6123..2b19907 100644 --- a/test/TricksforBoosterNFT.test.ts +++ b/test/TricksforBoosterNFT.test.ts @@ -85,12 +85,14 @@ describe("TricksforBoosterNFT", function () { expect(amount).to.equal(salePrice * ROYALTY_BASIS_POINTS / 10_000n); }); - it("supports ERC-721, ERC-2981, ERC-165, and AccessControl interfaces", async function () { + it("supports ERC-721, ERC-721 Enumerable, ERC-2981, ERC-165, and AccessControl interfaces", async function () { const ERC721_ID = "0x80ac58cd"; + const ERC721_ENUMERABLE_ID = "0x780e9d63"; const ERC2981_ID = "0x2a55205a"; const ERC165_ID = "0x01ffc9a7"; const ACCESS_CONTROL_ID = "0x7965db0b"; expect(await nft.supportsInterface(ERC721_ID)).to.be.true; + expect(await nft.supportsInterface(ERC721_ENUMERABLE_ID)).to.be.true; expect(await nft.supportsInterface(ERC2981_ID)).to.be.true; expect(await nft.supportsInterface(ERC165_ID)).to.be.true; expect(await nft.supportsInterface(ACCESS_CONTROL_ID)).to.be.true; @@ -149,6 +151,57 @@ describe("TricksforBoosterNFT", function () { }); }); + // --------------------------------------------------------------------------- + // ERC-721 enumeration + // --------------------------------------------------------------------------- + + describe("enumeration", function () { + it("starts with an empty enumerable supply", async function () { + expect(await nft.totalSupply()).to.equal(0n); + }); + + it("enumerates explicitly assigned token IDs globally and by owner", async function () { + await nft.safeMint(alice.address, 42n); + await nft.safeMint(bob.address, 7n); + await nft.safeMint(alice.address, 1001n); + + expect(await nft.totalSupply()).to.equal(3n); + expect([ + await nft.tokenByIndex(0n), + await nft.tokenByIndex(1n), + await nft.tokenByIndex(2n), + ]).to.have.members([42n, 7n, 1001n]); + expect([ + await nft.tokenOfOwnerByIndex(alice.address, 0n), + await nft.tokenOfOwnerByIndex(alice.address, 1n), + ]).to.have.members([42n, 1001n]); + expect(await nft.tokenOfOwnerByIndex(bob.address, 0n)).to.equal(7n); + }); + + it("updates owner enumeration after a transfer without changing total supply", async function () { + await nft.safeMint(alice.address, 10n); + await nft.safeMint(alice.address, 20n); + + await nft.connect(alice).transferFrom(alice.address, bob.address, 10n); + + expect(await nft.totalSupply()).to.equal(2n); + expect(await nft.balanceOf(alice.address)).to.equal(1n); + expect(await nft.tokenOfOwnerByIndex(alice.address, 0n)).to.equal(20n); + expect(await nft.tokenOfOwnerByIndex(bob.address, 0n)).to.equal(10n); + }); + + it("reverts when a global or owner index is out of bounds", async function () { + await nft.safeMint(alice.address, 1n); + + await expect(nft.tokenByIndex(1n)) + .to.be.revertedWithCustomError(nft, "ERC721OutOfBoundsIndex") + .withArgs(hre.ethers.ZeroAddress, 1n); + await expect(nft.tokenOfOwnerByIndex(alice.address, 1n)) + .to.be.revertedWithCustomError(nft, "ERC721OutOfBoundsIndex") + .withArgs(alice.address, 1n); + }); + }); + // --------------------------------------------------------------------------- // safeMint // --------------------------------------------------------------------------- diff --git a/tests/Tricksfor.Blockchain.Booster.IntegrationTests/DevChainIntegrationTests.cs b/tests/Tricksfor.Blockchain.Booster.IntegrationTests/DevChainIntegrationTests.cs index 449fc63..4c999f1 100644 --- a/tests/Tricksfor.Blockchain.Booster.IntegrationTests/DevChainIntegrationTests.cs +++ b/tests/Tricksfor.Blockchain.Booster.IntegrationTests/DevChainIntegrationTests.cs @@ -193,6 +193,60 @@ public async Task HappyPath_FullStakeUnstakeFlow() Assert.Equal(token1, unstakedEvents1[0].Event.TokenId); } + /// + /// Verifies that the Nethereum enumerable queries follow ERC-721 custody while + /// staking continues to preserve the original staker in its own state. + /// + [Fact] + public async Task Enumerable_TracksMintStakeAndUnstakeCustody() + { + var (nftService, stakingService, _, stakingAddress) = + await DeployContractsAsync(_node.Web3Account0); + + var wallet = HardhatNodeFixture.Account0Address; + var token1 = new BigInteger(101); + var token2 = new BigInteger(909); + + await nftService.SafeMintRequestAndWaitForReceiptAsync(wallet, token1); + await nftService.SafeMintRequestAndWaitForReceiptAsync(wallet, token2); + + Assert.Equal(2, await nftService.TotalSupplyQueryAsync()); + Assert.Equal( + new[] { token1, token2 }, + new[] + { + await nftService.TokenByIndexQueryAsync(0), + await nftService.TokenByIndexQueryAsync(1), + }.OrderBy(tokenId => tokenId)); + Assert.Equal( + new[] { token1, token2 }, + new[] + { + await nftService.TokenOfOwnerByIndexQueryAsync(wallet, 0), + await nftService.TokenOfOwnerByIndexQueryAsync(wallet, 1), + }.OrderBy(tokenId => tokenId)); + + await nftService.SetApprovalForAllRequestAndWaitForReceiptAsync(stakingAddress, approved: true); + await stakingService.StakeRequestAndWaitForReceiptAsync(token1); + + Assert.Equal(2, await nftService.TotalSupplyQueryAsync()); + Assert.Equal(token2, await nftService.TokenOfOwnerByIndexQueryAsync(wallet, 0)); + Assert.Equal(token1, await nftService.TokenOfOwnerByIndexQueryAsync(stakingAddress, 0)); + Assert.Equal(wallet, await stakingService.StakedOwnerOfQueryAsync(token1), StringComparer.OrdinalIgnoreCase); + + await stakingService.UnstakeRequestAndWaitForReceiptAsync(token1); + + Assert.Equal(2, await nftService.TotalSupplyQueryAsync()); + Assert.Equal( + new[] { token1, token2 }, + new[] + { + await nftService.TokenOfOwnerByIndexQueryAsync(wallet, 0), + await nftService.TokenOfOwnerByIndexQueryAsync(wallet, 1), + }.OrderBy(tokenId => tokenId)); + Assert.Equal(0, await nftService.BalanceOfQueryAsync(stakingAddress)); + } + // ========================================================================= // Negative scenarios // ========================================================================= diff --git a/tests/Tricksfor.Blockchain.Booster.UnitTests/ContractDefinitionTests.cs b/tests/Tricksfor.Blockchain.Booster.UnitTests/ContractDefinitionTests.cs index 65d33f4..d00f61e 100644 --- a/tests/Tricksfor.Blockchain.Booster.UnitTests/ContractDefinitionTests.cs +++ b/tests/Tricksfor.Blockchain.Booster.UnitTests/ContractDefinitionTests.cs @@ -134,6 +134,52 @@ public void ApproveFunction_TokenId_IsUint256AtPosition2() Assert.Equal(2, attr.Order); } + [Fact] + public void TotalSupplyFunction_HasCorrectFunctionName() + { + var attr = typeof(TotalSupplyFunction) + .GetCustomAttributes(typeof(FunctionAttribute), false) + .Cast() + .Single(); + + Assert.Equal("totalSupply", attr.Name); + } + + [Fact] + public void TokenByIndexFunction_Index_IsUint256AtPosition1() + { + var prop = typeof(TokenByIndexFunction).GetProperty(nameof(TokenByIndexFunction.Index))!; + var attr = prop.GetCustomAttributes(typeof(ParameterAttribute), false) + .Cast() + .Single(); + + Assert.Equal("uint256", attr.Type); + Assert.Equal("index", attr.Name); + Assert.Equal(1, attr.Order); + } + + [Fact] + public void TokenOfOwnerByIndexFunction_HasCorrectParameters() + { + var ownerProp = typeof(TokenOfOwnerByIndexFunction) + .GetProperty(nameof(TokenOfOwnerByIndexFunction.Owner))!; + var ownerAttr = ownerProp.GetCustomAttributes(typeof(ParameterAttribute), false) + .Cast() + .Single(); + var indexProp = typeof(TokenOfOwnerByIndexFunction) + .GetProperty(nameof(TokenOfOwnerByIndexFunction.Index))!; + var indexAttr = indexProp.GetCustomAttributes(typeof(ParameterAttribute), false) + .Cast() + .Single(); + + Assert.Equal("address", ownerAttr.Type); + Assert.Equal("owner", ownerAttr.Name); + Assert.Equal(1, ownerAttr.Order); + Assert.Equal("uint256", indexAttr.Type); + Assert.Equal("index", indexAttr.Name); + Assert.Equal(2, indexAttr.Order); + } + // ------------------------------------------------------------------------- // Staking write functions // -------------------------------------------------------------------------